The big picture of Solidity and Blockchain development in 2020
Overview of the most important technologies, services and tools that you need to know
Now, I do not know about you, but I remember when I first started with Solidity development being very confused by all the tools and services and how they work in connection with one another. If you are like me, this overview will help you understand the big picture of Solidity development. As I run through the various aspects of Solidity development, some basic web and blockchain knowledge will be required, but nothing else.
I will list only the most important tools, so if you are just getting into it or you have been in it for a while and you are still wondering how some technologies work together, this will be for you! Also check out my tutorial for getting started on Windows.
Technologies
Backend
Solidity
Server
Frontend
HTML and CSS
HTML stands for Hypertext Markup Language. It creates the structure of a website, while CSS stands for Cascading Stylesheets. It lets you make a website look nicer. If you are not familiar with the concepts, check out this explanation.
Javascript
Web3
Tools
Node.js
Package Manager
React & create-eth-app
React is a JavaScript library for building user interfaces. It is by no means the only one available, but the most used one in the Ethereum space. It makes creating interactive UI's very easy. You can design simple views for each state in your application, and React will efficiently update just the right parts when your data changes. On top you can use the great tool create-eth-app to get you started up with a working React application. Along with create-eth-app comes a Subgraph integration which is extremely useful for querying a lot of data from your smart contracts.
Truffle
- You can have separate repositories for your Solidity backend and JavaScript frontend. For the backend you would use Truffle and for the frontend you would start with create-eth-app.
- You can have both parts in one repository for convenience and for example start with the Truffle React box.
- You can focus only on the backend part, either because you only want to learn the Solidity part or because you actually don't need a frontend.
Ganache
MetaMask
Etherscan
Remix
Buidler
Buidler is a very specific tool, not essential and thus almost did not make it in this list. However, having full stack traces and a console.log inside your contracts is just too useful to not be mentioned here.
OpenZeppelin
- Contracts: I highly recommend taking a look at the contracts. They are of high quality and you will find commonly required implementations of things like ERC-20 tokens and SafeMath. They even get occasional audits for all contracts and they are generally conservative putting security over convenience. The next upcoming version 3 is almost ready and will support the latest Solidity v0.6.
- SDK: Useful if you want to have and manage upgradable contracts. To kickstart your development, you can use a starter kit which is similar to above mentioned Truffle boxes or create-eth-app, but offers an additional SDK integration.
Services
Infura
Infura is a service that connects your application with a public blockchain (mainnet or testnet). In the frontend MetaMask is using it automatically. Otherwise, you will have to connect Web3 or Truffle with it manually. After creating an account on the Infura website and adding a project, you can checkout the API keys to connect Web3 and Truffle on their dashboard. Alternatively, you can run your own node and connect to that one instead, but this can be costly, time-consuming and you will have to worry about availability of the node yourself. However, that would be the preferred solution for true decentralization.
Alternatives? Yes, one of them is QuikNode. They offer professional and reliable access with cheap prices. More providers also mean more decentralization, so let's not all use Infura.
Testnets
You can run smart contracts locally with Ganache or instead you can use a public blockchain. If you want to use the main blockchain, it would be quite expensive to do your testing here. Any transaction will cost you gas which you have to pay for with real ETH. That is why there are several public testnets available:
The Future
While the mentioned tools are still part of the most common setups, some people are going towards other ways already. If you want to try the new stack of Buidler + Ethers + Waffle + Typescript, checkout this introduction.
Bonus: Companies
- Consensys is probably the biggest blockchain company out there. Founded by Joseph Lubin, the company heavily invested and accelerated the Ethereum blockchain.
- Ethereum Foundation is a a Swiss non-profit foundation that manages funds to accelerate the Ethereum space.
- Web3 Foundation is a similar non-profit foundation, but with more links to Parity.
- Parity is a blockchain company founded by Gavin Wood, the inventor of Solidity. It has since built one of the popular Ethereum clients and is now building the next generation of blockchains with Substrate and Polkadot.
Bonus 2: Events
For a list of upcoming interesting events in the Ethereum space, you can check out my events page. Unfortunately, due to the current COVID-19 situation, they are quite limited and mostly virtual. Let us hope this will not last much longer.
- Devcon: The biggest and best conference for the Ethereum space. Several days, large amounts of great side events and full of creative and interesting people.
- Edcon: Basically like a smaller Devcon. The last one at the beginning of April this year had to be cancelled.
- ETH.global: Hosting several big hackathons all over the world, or these days a virtual one, see the upcoming virtual HackMoney event.
Bonus 3: Learning Resources
- Ethereum Studio: Web-based IDE with tutorials and helping resources.
- ChainShot: Several online courses for learning blockchain.
- CryptoZombies: An interactive guide for learning Solidity programming a Zombie game.
- Ethernauts: Another guide for programming a war game.
- Week In Ethereum News: Weekly newsletter to keep up-to-date with the Ethereum space.
- Mastering Ethereum Book: Slightly out-dated by now, but still useful to learn a lot of the concepts.
Bonus 4: Developer Communities
- Ethereum Stackexchange: Community to ask questions to developers.
- /r/ethdev: Biggest subreddit for Ethereum developers.
- /r/Solidity: Smaller, but more specific subreddit purely for Solidity.
- Gitter: Active Solidity Gitter chat room.
- SolidityDevelopers: Telegram chat group for Solidity developers.
- solidity-dev: Solidity developer Discord channel.
- Solidity Developers: Solidity developer Facebook group.
- Ethereum Developers: Ethereum developer Facebook group.
- OpenZeppelin Forum: Online forum for all discussions relating OpenZeppelin contracts, SDK or Solidity in general.
Bonus 5: Jobs
Jobs are often posted on AngelList, LinkedIn, indeed, Crypto Jobs List, Blocktribe and Gitcoin, but you can also always look the companies websites directly or even Reddit. The job market is growing and well-paid.
What else?
There is still more to be said about scaling technologies on layer 2, mobile wallets, DAO's, DAI and more, much more. My aim here was to provide you with the components that comprise the big picture of Solidity development. In following posts I will cover many more tools to help you become a master Solidity developer. Stay tuned!
Let me know what the most important tools are that you use! If you think there are important aspects missing here, please let me know.
Solidity Developer