Why I Decided To Apply To The Course
Back in December 2021, I decided to apply to the DappCamp - Become a Web 3.0 developer in 3 weeks course after seeing a tweet from Coinbase's CEO Brian Armstrong. The course was created by Preethi Kasireddy, a former Coinbase Software Engineer.
During the wild bull market of 2021, I spent a lot of time watching cryptocurrency YouTube videos, trying to catch up on the industry after mostly ignoring it since 2017. In the process, I realized it's both difficult and time consuming to chase market narratives. By the time I was learning about a topic, it was almost always too late to invest in it. The developers in this space are ahead of those driving attention to projects and narratives, since they are creating them.
Admission To Course
The course was designed to have a limited amount of people. This would enable individuals and teams to have one-on-one time with a technical coach. In this course, the second cohort, there ended up being 93 people of various backgrounds, and experience levels, from around the world plus 5 coaches/ instructors.
Two coding exercises on HackerRank needed to be completed for an applicant to be considered. These were able to be written in one of many programming languages, I used C#.
The first question was about card sorting and knowing where a specific card was in a deck when shuffled in different ways. The second question was about determining the minimum number of clicks on a remote control to navigate between channels, assuming back, up, down and individual numeric keys could be entered with a large quantity of channels plus an exclusion list. They were both somewhat challenging problems, verified with automated test cases run by the website then reviewed by a course instructor. This process ensured that everyone had a technical background, similar to what's required by most software jobs.
In addition to the coding test, you had to deposit $300 for processing your application. If you ended up being admitted to the course, you were required to pay an additional $2,700, otherwise the original amount was refunded. You could pay for the course with a credit or debit card.
Prerequisites
- Install MetaMask and get testnet ETH
- Install Git, VSCode (plus Solidity extension), Node, Yarn (npm install --global yarn)
- Solidity CryptoZombie course (sections 1 & 5)
- Think of 3-5 Dapp ideas
- Reading material
- Quiz
- Signing into a Discord channel
Course Overview
The course consisted of two main components. One was lectures, discussions, Q&A plus hands on coding. The other was a group project, to create and demo a Dapp with 4-5 people.
Lecture slides and recordings were available for download in case you were unable to attend or wanted to review them, available on Maven. Team and coach communication occurred in Discord as well as over Zoom and Google Hangouts.
Course Lecture Schedule
- Jan 9 (Sun): individual introductions and course overview
- Group discussion of the article: My first impressions of web3 written by the (then) CEO of privacy focused messaging app Signal
- Jan 12 (Wed): lecture, break out sessions
- Jan 13 (Thu): guest lecture by Nader Dabit of The Graph plus Q&A
- Understanding read limitations in blockchains and how The Graph fits in
- Jan 15 (Sat): lecture, break out sessions and guest lecture by Jess Sloss of SeedClub plus Q&A
- DeFi (Ecosystem, DEXs, DeFi 2.0, Aggregators)
- Borrowing and Lending (Compound and Uniswap)
- Stablecoins (collateralized, non-collateralized, non-dollar pegged)
- DAOs
- Homework
- Jan 16 (Sun): lecture, coding breakout session and coding Q&A
- Solidity fundamentals: data types, functions and transactions
- Remix IDE
- Homework
- Quiz
- Smart Contract: Pet Park - implement add, borrow and giveAnimalBack functions which enable populating a pet park with a list of animals, allowing individuals to borrow those pets (with demographic business logic) and then give them back for others to borrow again
- Jan 19 (Wed): lecture and coding Q&A
- Advanced solidity concepts like inheritance, libraries, and the self-destruct feature in contracts
- OpenZeppelin ERC20 contract
- Web2 vs. Web3 architecture
- Local development with Etherem Faucet
- Building a DeFi app with payment streams
- Homework
- Progressive Decentralization: A Playbook for Building Crypto Applications
- No, your dApp does not need a token to succeed
- Vaults Assignment - 1) create an ERC20 token with the ability to deposit and withdraw; 2) create a way to wrap ETH by implementing mint and burn functions
- Jan 20 (Thu): guest lecture and Q&A by: CoopaTroopa
- DAOs
- Community building discussion
- Non-technical recommendations for participating in projects
- Jan 22 (Sat): lecture and coding Q&A
- Non-Fungile Tokens, details and use cases
- The ERC721 standard and creation of an NFT collection
- Generating images, building a Dapp, minting images as NFTs viewable on OpenSea's testnet
- Homework
- Jan 23 (Sun): lecture
- Different solutions for Ethereum 1.0’s transaction throughput problem
- L1 optimizations, L2 solutions like rollups and sidechains, and how Ethereum 2.0 will scale the network with sharding and proof-of-stake
- Alternative blockchains (BSC, SOL, and AVAX)
- Classical and Nakamoto consensus algorithms
- How Polygon works
- Different solutions for Ethereum 1.0’s transaction throughput problem
- Jan 25 (Tue): guest lecture plus Q&A by: Zahoor Mohamed
- Current ethereum setup that consists of the execution engine and the proof-of-work model
- Ethereum 2.0, how its execution layer, the beacon chain, and POS (Proof-of-Stake) work together
- Jan 26 (Wed): lecture
- How to optimize smart contracts to save gas fees
- Techniques like variable packing, calldata and functions utilization, short-circuiting, and unnecessary assignments prevention
- Common security practices
- Exploits which could drain a contract
- Re-entrancy attack and its prevention techniques
- Fail-safe modes and the check-effects-interaction pattern
- Software Engineering principles like Defensive Programming, input validation, and test coverage to Solidity software
- Solhint and the importance of third-party audits
- Homework
- How to optimize smart contracts to save gas fees
- Jan 27 (Thu): guest lecture plus Q&A by: Mudit Gupta
- Smart contract security
- High unit tests coverage
- Code reviews and audits
- Formal verification of your smart contract
- Proxy pattern
- Different tools for testing and development
- Smart contract security
- Jan 28 (Fri): lectures
- Jan 29 (Sat): guest lecture
- Jan 30 (Sun): demo day
Dapp Project Schedule
- Jan 9 (Sun) - Jan 12 (Wed): Teams finalized + Begin brainstorming ideas
- Jan 13 (Thu) - Jan 14 (Fri): Idea finalized + Coach 1:1s completed
- Jan 15 (Sat) - Jan 16 (Sun): Whitepaper draft complete
- Jan 17 (Mon) - Jan 25 (Tue): Build
- Jan 26 (Wed) - Jan 29 (Sat): Polish + Prep for Demo day
End Result
The team I was on and myself were able to successfully make a smart contract which allowed people to do social lending. A user would ask for funds, from here they would get a URL they could share. People could fund the loan with the assumption of payback with interest.
If the loan was paid out, every user would be paid their initial deposit and the interest. Below is the code for the project: