In 2011, I read an article on Gawker about The Silk Road. There, you could "buy any drug imaginable", so long as you had a digital asset called Bitcoin. At the time, I got super excited about this internet money, told a few friends, but filed it away as something "to watch".
Back then, I didn't know how to code (sophomore in Economics) and had no idea what Bitcoin would turn into.
Well, a lot has changed since then. I surprised myself and became a software engineer. And blockchain has taken off.
I've decided that I want to become a blockchain developer. Ethereum and DeFi have changed the world in the last 24 months, and I don't think most people realize that yet. I want to be "in the room where it happens" and I think understanding blockchain tech is key.
To do that, I've created a learning plan for myself. Caveat - I'm not starting from zero:
- I have 5 years of professional software engineering experience (full-stack: React, Golang, Java) and about 1 year of freelancing/working on my own projects
- I have read large sections of Mastering Bitcoin and Mastering Ethereum
- I have worked through some (not all) lessons on CryptoZombies (2.5 years ago)
- I have written a simple smart contract in Solidity before
That's where I'm starting.
Here's what I'm planning to do:
- Follow along with the Hardhat tutorial (Goal: see a simple full stack dApp in action. Set up a local dev env with ethers.js, hardhat, waffle)
- Previously, I had recommended the "PetShop" tutorial by Truffle but the web3, truffle, ganache dev stack is lagging behind. (Hardhat allows you to do
console.log from solidity, provides readable local stack traces, and now also allows you to fork mainnet to your local env!)
- Ethernaut "war games" by OpenZepplin (Goals: start developing a security aware mindset. Learn to use Remix as a testing playground). Related - see Crytic by Trail of Bits (and their blog)
- Read the solidity docs, EthHub
- Understand how to read on-chain transactions. Tools: Bloxy (has execution trace), Ethtx (similar to Bloxy), Etherscan (the standard)
- Understand all of the major Ethereum hacks (Goals: be able to write Solidity that is cognizant of historical risks) See: Parity wallet hack, official docs, rekt, and everything Haseeb writes
- Use Tenderly's debugger to visualize smart contract execution (example from the COVER vulnerability)
- Understand the cost of gas (see Eth gas reporter)
- Get some testnet Ether (MyCrypto faucet)
- Read (and copy) some of the most iconic smart contracts out there (Goals: Learn best practices and see how great ideas got implemented) See: Uniswap, Compound, Synthetix, Yearn
- Study the YAM finance frontend codebase (GitHub link) - the code is beautiful and the app is beautiful. Also check out create-eth-app
- Experiment with The Graph for retrieving indexed data out of smart contracts. (Bundled nicely in the aforementioned create-eth-app)
- Try Typechain to get smart contract Typescript typings
- Learn from Nicole Zhu (Ethernaut life saver), Eat the Blocks Youtube Channel (a little sales-y, but content is rock solid), Smart Contract Programmer YouTube Channel (very good live coding examples), Austin Griffith's Eth.build (basics) and Scaffold Eth (starter kit for hackathons and learning - examine major contracts and tinker with them locally), Decrypt Media's Ultimate Intro to Ethereum Ðapp Development (old, but very good, I hear), Eth Global's Ethereum Dev Onboarding Session (and part 2 - where like 25% of this list comes from 😉)
- And in general, read up on the technological advancements in the space, such as zk-SNARKs (with awesome, real life applications like Tornado.cash), Eth 2.0, rollups, layer 2, ERC-725
I've gotten some advice on some highly specific gotchas:
- Understand ERC20 and Token decimals - don't get confused about your units!
- Moving from approve functions to permit functions - better UX, save gas (EIP-2612)
- Familiarize yourself with working with ABIs from the web (web3, ethers.js) and solidity (extremely important for reading transactions)
On the "business" side of things, here's where I'm trying to invest my time:
- Learn about what makes a successful crypto "startup" (a16z's Crypto Startup School, Haseeb's "So you want to build a crypto startup?")
- Read everything by Dan Elitzer (his best Medium post: "Superfluid Collateral in Open Finance")
- Read all the market research by Deribit
- Read the Messari Eth 2.0 report (link)
- Understand the importance of Community (Discord, Twitter, Telegram, Forums) and Governance (on-chain vs snapshot.page)
- Understand fair launches (i.e. YFI) and novel forms of token economics (GRT)
- Understand the weird collaborations of permisionless finance - "Mergers and Acquisitions" by Yearn (Pickle, Cream, Cover, Akropolis, Sushi), the "M&A" fund (stands for Molly and Andre), psuedononymous builders (like Molly, and scammers), mashup experiments like Yam (Yearn x Ampleforth x Synthetix x Compound)
- Listen to Podcasts (heavy rotation: Bankless, Epicenter. Many others that I've evaluated but haven't put into rotation)
- Follow some VCs: (Variant, Dragonfly, Pantera, Paradigm, Placeholder, Multicoin, Coinbase Ventures, Binance Labs and so on)
As I progress on my journey, I'll update this page with more learning resources and what worked for me. I'll do writeups on some of the resources, summarizing what I learned, any roadbumps and possibly even some stupid apps I build (warning: they'll likely be very ugly).
I'm excited, an Ethernaut in training! 👨🚀🚀