I'm here again to share my latest Web3 learnings.
I've started building my own Decentralized Application.
This Dapp is going to have several implementations and features such as Staking, Farming, Oracles, and Proxy Contracts.
I began with staking, but first, I needed to understand how Staking Rewards are distributed.
I went to a DeFi app I used on Binance Smart Chain and analyzed its contract.
Later I found out that it's just a copy from Sushiswap's Masterchef contract - a very popular staking contract.
A few days were spent dissecting the smart contract and extracting the formula used to share rewards to stakers.
In the following blog post, I explain in detail how it works.
Then, after implementing my own staking contract based on the study I made above, I paused this project to get a grasp on Zero-Knowledge Proofs.
While researching Web3 study content, I've met this Zero-Knowledge DAO on Harmony blockchain promoting cohorts to teach developers about ZK Proofs.
I enrolled in the course and went deep dive in its first weeks, but I had to focus my efforts on my current job.
Zero-Knowledge is an exciting and fascinating topic, but a course about such a complex topic requires a lot of dedication to keep up.
Nonetheless, I was able to summarize the learnings I had in its first week in the following blog post:
I decided to study ZK again after getting more experience with Web3.
In the latest months, I was also looking to improve my solidity and security skills, and Ethernaut was a really great tool to achieve this goal.
Ethernaut is a Web3/Solidity based wargame inspired by overthewire, to be played in the Ethereum Virtual Machine. Each level is a smart contract that needs to be 'hacked'.
The game acts both as a tool for those interested in learning ethereum, and as a way to catalogue historical hacks as levels. There can be an infinite number of levels and the game does not require to be played in any particular order.
You can find the current, official version at: ethernaut.openzeppelin.com
Install and Build
There are three components to Ethernaut that are needed to run/deploy in order to work with it locally:
- Test Network - A testnet that is running locally, like ganache, hardhat network, geth, etc
- Contract Deployment - In order to work with the contracts, they must be deployed to the locally running testnet
- The Client/Frontend - This is a React app that runs…
I'm still going through it and summarizing my learnings in a draft blog post which I will share soon.
One remarkable experience I had was figuring out why a solution stopped working from changing just a bit of the code.
I've tried getting help on several discord channels, but I only managed to understand the issue when a guy from OpenZeppelin answered me on Linkedin.
This story and the solution are registered in the blog post below:
Spoiler: Metamask was not receiving the Gas Limit parameter from Remix, and gas limit estimation doesn't consider underlying transactions like the transfer one in the challenge.
The Ethernaut challenges made me curious about OpenZeppelin, and while finding more about the company, I stumbled into their Defender application.
I'm the type of guy that can only understand a tool for real when building something with it.
So I made up some random context, such as an NFT Game, and used Defender to help me manage some smart contracts.
The result is described in the following blog post:
While Defender is a great tool, it's meant to be used for particular features, so it might take a while for me to apply it to an actual project.
I'm currently handling a significant workload on my job, so that this Web3 Journey might get slower.
This is not a bad thing. The company I'm currently on has been providing support on my software development skills that are going to be very useful in the Web3 context.
I will keep sharing my learnings with the world, so make sure to follow me on this blog and social media as well :D