As a blockchain developer, I've tried and tested a wide range of tools, programming languages, blockchain networks and platforms. If you're keen to build decentralised applications, create smart contracts, or dive into the world of Web3, let me share the areas I think you should focus on first.
1. The Holy Trinity - JavaScript, Solidity, and Rust
JavaScript
JavaScript remains the backbone of web development, and it's no different in the blockchain space. It is indispensable for creating frontends for dApps, plus many of our go to blockchain tools, like Hardhat, are built on JavaScript and use JS code for testing.
Solidity
Solidity is the bread and butter for writing smart contracts on the Ethereum virtual machine. Code written in Solidity can be deployed to Ethereum, Arbitrum, Optimism, Base, Polygon, zkWhatever, BSC, Sepolia etc. It was originally designed with similarities to JavaScript to make it as easy as possible to pick up for web developers. I use it daily and it’s my favourite coding language because it lets me deploy immutable code on a decentralized peer to peer network.
Rust
I'd be remiss not to mention Rust. It's rapidly gaining traction in the blockchain world, particularly for its performance and safety features. I've found it brilliant for building high performance blockchain infrastructure and smart contracts on platforms like Solana and Soroban.
2. Developer's Toolkit - Remix, Hardhat and Foundry
Remix
It’s no secret that I’m a remix fanboy and you’ll see me writing and deploying code using the web interface in most of my Solidity videos. It’s a great tool for beginners but also just for experimenting and coming up with ideas before you move to a testing framework.
Hardhat
Hardhat has been my trusty companion for compiling, deploying, testing, and debugging Solidity smart contracts. Its flexibility and rich plugin ecosystem make it a developer's dream. Unit tests and deployment scripts are written in Javascript which you’ll either love or hate. There was an announcement recently that you can now write tests in Solidity as well.
Foundry
Foundry is fast for compiling and testing Solidity contracts. Written in Rust, it offers powerful testing capabilities like fuzzing and Solidity based unit tests. The benefit here is that your unit tests aren’t written in a different language to your contracts. It’s a bit quirky with things like naming conventions and has that homebrewed feel which again you’ll either love or hate.
3. Frontend dApp UI/UX
Ethers.js is my go to web3 Javascript framework. I’ve used VIEM a bit but came back to the latest version of Ethers.js
Be warned that ChatGPT will often regurgitate v5 code so you need to specify ethers v6 when working with LLM’s. This is something that will hopefully be fixed in the next big release by OpenAI and/or Anthropic.
Ethers is also used in Hardhat so all the code you have in your unit tests becomes really useful when building out the frontend.
For frontend javascript frameworks there’s a lot to choose from and no clear winner. React is most popular and widely used while many frontend guys love Svelte and Vue.js
For wireframing Figma is a cloud based design and prototyping tool used for creating user interfaces, allowing real time collaboration and design sharing across teams.
4. APIs for Blockchain Data
APIs are our bridge to the off-chain world. Here are a few I frequently use:
Binance API Fantastic API for real time market data and trade execution. I’ve also worked quite a bit with the Kraken API which is also good.
CoinGecko API My go to for comprehensive cryptocurrency data including things like pricing, project descriptions, social channels etc.
Alchemy and Infura These are RPC nodes that act as your gateway to Ethereum or another blockchain network. You would generally use an API key with a framework like ethers.js to send and receive on-chain data.
Etherscan The block explorer for Ethereum and most other EVM chains. You will fight with it to verify contracts at some point but you’ll also do most of your detective and exploratory work here. Anyone experimenting with crypto/defi/web3 will spend a lot of time on Etherscan and it’s API is widely used throughout the industry.
5. Protocols
We are building on the lego bricks of defi and having a good understanding of different protocols will make it easier to mash together different financial products to create a Frankenstein monster of a derivative that will probably land you an SEC lawsuit.
Uniswap
The leading decentralized exchange. Kind of peaked with v2 and the complexity of concentrated liquidity is less fun to work with. Smart contract devs tend to work with dexes a lot and it’s useful to have some example code you can goto that you know works for simple things like swaps and adding liquidity.
AAVE
And other overcollateralized lending protocols. These products let you deposit funds to earn interest and take out loans based on that collateral. It’s widely used in yield farming strategies and flash loans etc.
Chainlink
Oracles like Chainlink are used to bring data from external API’s on-chain. An oracle can be setup to collect data at predetermined intervals and update values within a smart contract to meet logic requirements.
LIDO
Liquid staking products like stETH enable users to earn staking rewards on their ETH holdings. Again these are widely used in yield farming strategies and various other contracts.
Stablecoins
Not really a protocol but there are some gotchas with stablecoins that can catch out seasoned smart contract developers. Things like the six decimals places on USDC and the non-ERC20 compliance of USDT are “fun” to work with.
6. Additional Knowledge Areas
Security
Security is paramount. The difference between the best developers in this industry and the rest of us is their vast understanding of best practices and previously exploited vulnerabilities. It’s one of those things you can only get better at with time, dedication and strong coffee.
Yul
Yul is an expanded version of assembly which can be used in Solidity smart contracts. For those times when I need fine grained control, you can use code like this:
assembly {
let v := sload(0)
mstore(0x80, v)
return(0x80, 32)
}
These low level languages allow developers to write highly optimised bytecode, giving unparalleled control over contract execution and gas efficiency.
Bridging
The future is multichain, and understanding how to bridge assets and data between different blockchains is very useful. There are different 3rd party platforms which can be utilized for this like LayerZero which can create coms networks between different EVM chains.
Zero Knowledge
I’m no expert and creating circuits is above my pay grade but there’s no doubt that this opens up new, previously impossible use cases. The ability to prove something is related to something else without revealing the inputs is useful.
IPFS
The InterPlanetary File System (IPFS) is widely used for storing the JPEG images we use in NFT’s. It’s an interesting project and tool that while not fully decentralized does offer some benefits over server-client architecture.
The blockchain developer’s path from degen to enlightened protocol founder is ever evolving, filled with exciting challenges and opportunities. From mastering Solidity to exploring the frontiers of decentralized finance, there is always something new to learn.
Remember to have fun along the way
The ETH/BTC chart is still in decline and testing the 0.04 level. The Ethereum ETF’s haven’t seen strong inflows and the attention is still elsewhere.
BTC/USD doesn’t look much better as we are hovering in the middle of a downward trending range at $58k which is where we seem to have been stuck since March.
Things will get better, it’s a time for speculation and to allocate up the risk curve in my biased and deluded opinion.
Be fearful when others are greedy, and be greedy when others are fearful
Warren Buffet
(pretty sure he wasn’t referring to crypto markets)
Social links are below and if you enjoyed this newsletter I would appreciate it if you could share this content