The point of Kernel is not to overwhelm you with lists of links. The truth is that there are a great many coding tools out there, each of which makes different trade-offs and will be better or worse depending on your needs and context. This is what mentors are for: we recommend you spend more time picking their brains than scrolling through endless awesome lists of half-maintained, experimental tools.
Rather than recommending specific IDEs, standards, editors, best practices or anything of the like, this page is intended to help you sharpen your Solidity skills. We know there are many different approaches to smart contracts, and we know that Solidity has its problems, but it is the most widely used and the most accessible to current web developers and so it remains our focus here.
The Direct PathΒΆThere are, of course, many paths to smart contract nirvana. We will present many of them on this page, but here is the shortest way we know to ongoing mastery:
Beginner - CryptoZombies. You know nothing about smart contracts or solidity. This interactive course will get you up to speed with basic concepts.
Beginner - Eth.build. An educational sandbox for web3 which lets you code with blocks, much like in Scratch. Of course, you can do really awesome things with this tool, but it is a wonderful, visual programming tool which will help you develop an intuition for how smart contracts work, and how different the environment in which they live really is.
Beginner - Will It Scale. This is still our favourite series of YouTube tutorials, and it will introduce you to the Remix IDE and a whole host of much deeper concepts in Solidity. While watching videos rather than coding is generally not that useful, this will give you much more context for what is to come. For another great series to get started with deep learning, we recommend Tim Roughgarden's fundamental lecture series. Tim is one of the best teachers we know, and we also recommend any of his resources on game theory if that is your interest.
Intermediate - Ethernaut. This starts out simple, but contains many wonderful challenges and surprises for those more familiar with Solidity and the global, public context in which smart contracts live. You can find a detailed walk-through of the first twelve challenges in our Outsmarting Contracts guild. We also recommend that you play around with the Open Zeppelin smart contract wizard, which can be extremely helpful when creating a solid base for your own work.
Intermediate - Uniswap V3 Development Book. Now that you know a bit about Solidity and security, we recommend this incredible resource which will teach you a lot about DeFi, Automated Market Makers, exchanges in general, and how to think about building an app in production.
Intermediate - Speed Run Ethereum. A set of in-depth tutorials currently being built out which leverage the scaffold-eth framework. The framework is specifically intended for quick experimentation. It's worth checking out all the branches in that repo for lost of different code relevant to everything from NFTs to exchanges and beyond.
Intermediate - LearnWeb3, Build Space, and 30 Days of Web3. These cohort-based programs focus exclusively on technical skills. Building with others is also more fun and instructive. Kernel does not adopt this style of teaching because it papers over many assumptions about what frameworks to use, how to write tests, where to deploy your contracts and how, and many, many other aspects we feel are best answered through considered why rather than trying to exhaust an ever-expanding list of hows.
Advanced - Kernel Building Kernel. You'll notice that continuing to do tutorials and toy examples will not get you passed the intermediate stage. If you want to master any skill, eventually you have to dive into unexplored parts of the ocean and shoot for the stars, without caring too much about what people will think of your mixed metaphors or strange commits. Come and learn how to build the future of the decentralized web with us. We promise you it will be an interesting ride. Join #kernel-building-kernel for more...
While we specifically avoid these kinds of lists in Kernel, if you are the sort of person who is looking for a breadth of detail and all of the various possible tools, standards and best practices being developed across the globe, then this section is for you.
As the focus in our Resources section is interdisciplinary, it's worth noting that you can find a some more wonderful lists - and the kind of careful, step-by-step, conservative approach it implies - in our Security page.
Developer Resources
Now that you have walked many of the ways through the dark forest, you may breathe out (the literal meaning of 'nirvana') a sigh of relief. But only for a moment! For the true masters act without a trace and - in order to achieve such exalted states of being - we need to investigate some of the further reaches of research and cryptography.
Again, given the interdisciplinary focus here, insightful documents which are not tools can be found in the Research section.
zkREPL
"The circom tooling I use the most. Hover over variables to see the values."
H/T Justin Glibert
Circom & SnarkJS
A zkSnark circuit compiler, and zkSNARK implementation in JavaScript & WASM, built and explained here by Jordi Baylina.
Of course, no smart contract resources list would be complete without a recording of Austin Griffith breaking something in a live demo while wearing a bowtie: