How I became a Certified Ethereum Blockchain Developer in less than 4 months
Twitter isn’t a place I love to spend my time, but it’s a great place to be, you’ll gain a lot if you follow thought leaders in your field of interest. In early August, I saw a tweet from the African Blockchain Alliance (ABA).
I had always wanted to join the Consensys Blockchain Developer boot camp. I had mixed feelings about this one. I had just started learning Reactjs. I also had plans of starting a blog and building a Progressive Web App. It was as though I set everything in stone; I still applied. The application process involved filling a form which contained some basic Solidity questions. I had some beginner Solidity knowledge and used Google for some pretty tough ones.
Pre Bootcamp
Late August I got the mail, they had accepted me for the scholarship. I was happy; I mean, who wouldn’t be? Before this time, I was afraid that I wouldn’t get it. I had already reached out to one organiser of Web3Bridge. They train web developers in Africa to become blockchain engineers for free. The program is for individuals with experience in web development. They run cohorts almost all year round. I reached out to him because of a tweet about them getting some scholarships from Consensys too. I felt bad hearing they got the scholarship and had filled up all the spaces with their students.
After getting the acceptance mail, I became scared again. I didn’t know Reactjs so well. I was afraid I’d need it to complete the course. I got reassurance from another student that all they needed was a basic knowledge of web2 technologies, i.e. HTML, CSS and Javascript.
First Few Weeks
Do you know that feeling you get when you just get admitted to a new school? The feeling of over excitement. I had that feeling when we started the course in September. I read all the Consensys materials, was present at almost all the Zoom calls or watched the recordings, and went further to read all the extra materials listed. It was fun, and I enjoyed every bit. But some concepts like the Modified Merkle Patricia trie used in storing account state on the Ethereum blockchain were hard to grasp, though. Had to go the extra mile and reread a few times.
I played OpenZeppelin’s The Ethernaut smart contract game and it made me understand Solidity, popular hacks like reentrancy, web3 and some intricacies of the Ethereum Virtual Machine. I have solved the first fifteen smart contract games with some help from @nicolezhu’s tutorials. I also found out about Damn Vulnerable DeFi a series of challenges on DeFi hacks. It covers flash loan hacks too. During this period I abandoned my Reactjs tutorial and concentrated on the boot camp along the way I met Victoria.
Victoria was also taking the boot camp with me and she told me she had been managing the boot camp and other courses together which made me surprised. I found it hard to believe but began taking my Reactjs tutorials alongside the boot camp. I am glad to say it paid off later when I did the final project.
ETHLagos Hackathon
During the boot camp, ABA organised ETH Lagos, a virtual hackathon, and encouraged us to join during a zoom call.
I joined the hackathon. During the hackathon, we had a meeting with someone from Remix and he showed us a lot of things about the in-browser solidity IDE. They introduced us to the Remix debugger too, and I made use of it in Ethernauts level 13 to track gas usage.
The hackathon was my first exposure to using a front-end interface to communicate with the blockchain. They gave us a pretty old tutorial on using IPFS, Ethereum and Reactjs to build a mail inbox. Things move fast in blockchain development, so I’d say an article written in 2018 is old. I did it and gained a lot from that tutorial.
VOIC3
In October the #EndSars protests started in Nigeria. It was at first a movement by the youths against police brutality which later extended to poor governance, corruption and a lot of other problems faced by Nigerians. During this period I was doing the ETHLagos hackathon. But I thought I could do something with crypto about the protest. I got to meet a guy who introduced me to someone else, and we hopped on a 2-hour call. We discussed how we could leverage cryptocurrencies to push the #Endsars protest further. The government had just frozen the bank accounts of an organisation receiving donations for the protest, and they had turned to Bitcoin.
We planned to create a donation platform we called Voic3, mint some VOIC3 tokens and distribute to donors who donated using Voic3. The donors would stake their VOIC3 tokens later in the future to earn points and mint Non-Fungible Tokens (NFTs) created with scenes from the protest like the one below. We planned to raise a million dollars with Voic3. Crazy, right? Lol. We intended it to work similarly to the MEME protocol.
The protest came to an abrupt end with precious lives lost, and so did our project. Here’s how it looked . Despite not working out, I still had a good time with Reactjs.
Final Project
In November I had fallen behind with the courses and we were approaching the end of the boot camp. I rushed to finish the courses and do my final project, which took up 55 percent of the score needed for graduation. I needed to get at least 80 percent to earn a certificate. Barely two weeks to the end, I had to choose between finishing the course and starting and finishing the project before the deadline. I went with the latter and stopped at a point in the course that seemed to have covered enough for me to do my project.
I initially had an idea to do something on payments but ditched it when it seemed like it wouldn’t cover all the requirements for the final project. I built a simple bookshop for letting anyone put a book up for a sale and receive payments for the book in Ether. You could call it an open bookshop. Visitors to the decentralized application (dapp) can mint books which creates an ERC721 token representation of their books and put it up for sale in the market or buy a book that is already up for sale.
Writing the Smart Contracts
I made use of OpenZeppelins contracts to write my smart contracts. I had an ERC721 contract and a Bookshop contract. The Bookshop reads the data of the ERC721 contract to determine ownership and only stores the list of books up for sale. I wrote the contracts using Remix and copied to Vscode later. The few first deployments to the Remix Javascript VM failed because of the gas limit, which made me scared because I thought I wouldn’t be able to finish before the deadline. I increased the gas limit and successfully made the initial deployment. It was a truffle project, and I used the truffle React box, for easy integration with a Reactjs frontend. I wrote a couple of tests in javascript too, and they all ran smoothly.
Building The Frontend
I used Reactjs, Ethersjs and Web3React for the frontend of the dapp. I just needed to get more familiar with React — that shit is hard. Everyone seemed to be saying Ethersjs was simpler to implement and had better docs than Web3js, so I decided to see for myself. From what I had heard, Web3React was pretty good for connecting dapps to the user’s wallet.
Before starting I took a tutorial on building the frontend of a dapp with Reactjs, Ethersjs and Web3React which helped me in understanding how each of these components worked together and served as a foundation for building the frontend of the dapp.
I completed the project before the deadline and did a video recording where I walk through the dapp. I also created a Github repo with a readme file on how to run the dapp on a local blockchain or the Ropsten testnet all these were requirements for the final project. For this article, I deployed the dapp on IPFS. Connect to the Ropsten testnet on Metamask and check it out. You might encounter some glitches with the dapp though and it isn’t responsive. There’s a book up for sale in the market for test Ether you can also list books of your own and may sell.
Please, no copyright infringements.
Just before Christmas, I got the certificate.
Thank you, African Blockchain Alliance and Consensys. Thank you, too, for reading. You can drop a question if you’ve got something on your mind or leave a clap if it was a good read.