The Kickoff

This week marked the beginning of my journey as an EthIndia fellow. The tasks were clear: attend all sessions, engage on discord, and complete the first two speed runs. Being new to web3, I was more than excited to begin my journey in this new world, and I think it would be safe to say that one week down the line, I’m 2x more hyped.

The Speedrun challenges

Coming to this weeks challenges, I shall be mentioning points about them individually. These points cover the challenges faced and the learnings gained.

Challenge 0 - NFT App

  • Understood the need for scaffold-eth and the techstack which comprises it.

  • Learnt about burner wallets, their need and their usage.

  • Read up on the various testnets, and used goerli in our case.

  • Understood the concept of faucets, failed to find good free faucets with multiple transaction support, and ended up using a PoW goerliETH faucet for my metamask wallet.

  • Created the static build of the dApp and learnt how to deploy it on surge.

  • Looked the deployed contract up on goerli etherscan to verify its successful deployment.

Challenge 1 - Decentralized staking app

Being new to solidity, this challenge offered a steep climb with a lot of reading, testing and learning. I tried a lot of different functions, and debugged tons of errors to finally get the logic working.

  • Learnt the concept of “payable”, and receive and fallback functions.payble signifies that a function can receive eth.

  • Explored the msg object, and its attributes like msg.eth and msg.value.

  • Learnt about the block object and block.timestamp.

  • Understood the mechanism to transfer eth from one contract to another using call method.

  • Learnt about and used mappings, events and modifiers in solidity to achieve the requirements mentioned in the problem statement of the challenge.

  • Wrote all the possible staking and function call conditions, and edgecases on a whiteboard and tried to come up with modifiers to handle each possible edgecase, including the sidequests.

A common bug discovered:

Commands like yarn deploy and yarn build often give an error saying: error:0308010C:digital envelope routines::unsupported

Solution for the same is to execute the following command in the shell: export NODE_OPTIONS=--openssl-legacy-provider

Experience

Being new to web3 and solidity, the first task for me was to understand the technical jargon like faucets. As the challenge-0 was mainly just a follow along, I did not face much difficulty in solving the same and could follow along smoothly for the most part.

The real climb and learning took place in challenge-1, as the basics of solidity were a prerequisite to it. I approached the challenge one sub-task at a time, and read a lot of blogs and documentation on concepts like: payable, receive and fallback, modifiers, msg, block, events, and call.

I used the debug UI to test my code after each step, and kept solving bugs on the go.

After about a day of coding, fixing errors, and handling edge cases, I jumped out of the chair when on running yarn test , all the test cases passed one go.

post image

As a learner, the nature of challenge-1 threw me in the deep end, urged me to figure things out on my own, and thus ultimately ended up being a great hands-on learning experience.

I’m absolutely looking forward to the next 7 weeks of learning and shipping!