Original Author: Patrick Collins @Chainlink
Original translation: head
Comprehensive tools guide for smart contract, blockchain, Web3, Ethereum and Solidity developers. Plus a brief introduction to Solana, Terra, and other Rust smart contract-based tools
Last year, I studied someThe top framework for smart contract developers, this year, we will expand to more.
Well look at ten categories of tools, and then look at the tools in each category that are best for smart contract/blockchain/solidity/vyper/rust/web3 developers (we have too many terms for blockchain developer these days) .
Ive used every tool on this list to some degree, so you can rest assured that Im not simply copy-pasting a list of tools. To start with a little introduction for those who dont know me, I live in the world of smart contracts and work with some of the best people in the industry as aChainlinkProject Developer Advocate,My Own Blockchain Infrastructure CompanyCEO, and a web3 enthusiast. This will give you what some of the best developers in the world use. However, this list is not a list of everything, so sorry if I missed your tool! Its just something I think every developer needs to be aware of. So, lets get started!
This article includes the following:
Smart Contract Guide
Smart Contract Essentials
wallet
wallet
Block Explorer (Browser)
front-end tools
front-end tools
security analysis
security analysis
Monitoring and Maintenance
Additionally, we created atheme videofirst level title
1. Smart contract language
secondary title
Solidity
If you are new to smart contracts, you should start withsoliditystart. If youve been doing smart contracts, you probably already know about solidity. It is undeniable that Solidity is the most important and most commonly used smart contract development language. Solidity is suitable for most smart contract platforms, such as Ethereum, Avalanche, Moonbeam, Polygon, BSC, etc. This is due to the fact that most blockchains have adoptedEthereum Virtual Machine (EVM), and solidity is born for it. in the current rankingTop 10 Defi ProjectsOf these, nine use Solidity as their primary programming language.
I predict that 90% of the value of smart contracts will be implemented in solidity in the future. The Solidity language is actively maintained and has tons of support.
you can also putyul/assemblysecondary title
Vyper
Vyperis another EVM-compatible language, which is mainly used byTop 10 Defi ProjectsOne of the uses (some other projects use it as a helper), i.e.Curve.fisecondary title
Rust
RustIt is a newborn on the block, and it is not applicable to the blockchain of EVM, such as Ethereum, Polygon, Binance Smart Chain and so on. However Rust can be deployed toSolana、TerraWait for the chain, or in thePolkadotBuild blockchain applications. Rust is a general-purpose language with good performance, even used outside of smart contracts; therefore, many public chains choose it as their development language. The logic is, Oh well, some developers already have Rust, so lets make Rust available to developers in as many places as possible.
secondary title
Smart Contract Language Summary
Must Know: Solidity
Python lovers: Vyper
Terra, Solana,first level title
2. Essential tools for smart contracts
secondary title
Chainlink
Chainlink isBlockchain oracle, it is a smart contract to beHybrid Smart Contracttool, which includes some off-chain components and connects with the real world. Smart contracts are great, but they have the huge problem that they are not connected to the outside world in any way. To keep smart contracts decentralized using some off-chain components like data or off-chain computation, off-chain data and computation must be decentralized, which is what the Chainlink network and tools do. The vast majority of top smart contract platforms are hybrid smart contracts and use oracles as a key part of their infrastructure. just lookDeFipulseFor the first 10 projects, you will know which ones are mixed.
Asteriks explanation*: Uniswap has an oracle product. Yearn and Instadapp are aggregators that work with protocols that use oracles/are hybrid. Sushiswap uses oracles for leveraged trading. It can be seen that at least 50% of the projects use oracles as an important part of the infrastructure, and another 30% (80% in total) use oracles in some way. Obtainable through the oracleasset pricingrandom numberrandom number、Event-driven automated execution,etc.
Chainlink is an essential feature for any smart contract developer entering the space,No matter what language or blockchain。
Flash loan attackFlash loan attack, oracle manipulation attacks, etc.Hacktivism, causing nearly billions of dollars in losses in the Defi field. Most harrowingly, more than half of this is preventable through the use of reliable oracles like Chainlink. Please do not allow you or your friends to use centralized or insecure oracles in 2022.
secondary title
Openzeppelin
OpenzeppelinConsolidated its position as the solidity standard library. Anytime any developer (myself included) is looking for a quick way toDeploy NFT/ERC721、ERC20、upgradeable contract、DAO/Governance, or any project that a developer in this field wants to do, nine times out of ten, youll want to find an Openzeppelin package.
secondary title
Summary of Smart Contract Essentials
Must Know: Chainlink and Openzeppelin
You can (and probably should) use both of these things. From what I know of these technologies, it cannot be overemphasized.
3. Deploy and test the framework
Last year, my review article wasspecifically for this category, so this year, I have to tell you about the difference in what I think these frameworks are today. Smart contract frameworks are an important part of any developers job. They help you efficiently test and deploy smart contracts. Mastering at least one of these is a critical step to success.
For a more intuitive understanding, take a look at the chart I compiled from defpulse, showing the development frameworks used by some of the top DeFi projects.
Defipulses top 10 Defi projects and the smart contract development frameworks they use In addition, I look at the current situation of these development frameworks in this way:
Star player:
Excellent player:
Remix, Truffle, Apeworx, Foundry
Substitutes:
Waffle, sbt-ethereum, web3j, Embark, Saddle
Non-EVM:
secondary title
Etherlime, Openzeppelin SDK, Cobra, Parasol
star player
Hardhat
Now, the hardhat framework is the most important smart contract development framework. Hardhat is a development framework based on javascript and solidity, which can quickly improve the development speed of your application. you can viewhardhat-starter-kit, learn about the use cases of the hardhat project.
With Hardhats testing speed, TypeScript support, widespread adoption, and incredible developer experience-focused team, its no wonder its popularity has risen so quickly. At this time last year, I made this framework a top priority, and it still is. it is used in the backendethers.js, comes with a native blockchain for testing, and the team is currently buildingA new advanced development platform, integrated into Hardhat, I am extremely excited about this attempt in 2022.
If you know me, due to all kinds of javascriptweirdness, Im not its biggest fan, so many times, I prefer to use Hardhat with typescript. Hardhat is easily my second most used framework.
I highly recommend this framework if you like javascript, or if you want to use the most popular and most supported framework.
Brownie
If youve read any of my other material, youll know Im in lovebrownieframe.
Brownie is an open source python-based framework built onweb3.pyandCurve.fi、Badgerand other protocols are used. It supports both solidity and vyper, but the main highlight of this framework is based on python. Brownie was born because many python engineers despised working in javascript and wanted a framework for python. In addition, most traditional fintech fields use python instead of javascript, so with the creation of Brownie, it is also easier to move from the fintech field to Defi.
Brownie is my framework of choice when creating new projects, and Im a self-proclaimed brownie developer advocate. you can viewbrownie-starter-kit(also called mixes in the Brownie world), start developing with the framework. Be sure to checkBrownie MixesList of other starter kits in the repo.
No
DappTools
AlthoughDapptoolsNogorgeous logo, but its an application built in Haskell. But dont worry, you dont need to know Haskell to use it.
Dapptools mainly consists ofMakerDAOteam (the team behind DAI), it was inspired byUnixPhilosophy: A program only does one thing, and do it well. (Write programs that do one thing, and do it well.) Dapptools is a tool focused on the command line, here, you can use your Already familiar command line/shell tools like bash or zsh instead of python, javascript or other high-level programming languages to help you develop. This effectively reduces one technique you have to be familiar with and forces you to get better at shell scripting! It comes with a suite of tools such as dapp, seth, ethsign, and hevm, each of which is specifically designed as an essential part of a smart contract developers daily work.
Ive recently started working with Dapptools and I like the way of thinking behind it. I wrote aStarter kit for Dapptools, showing how to use the tool. To use Dapptools, you need to be able to usemakefilesand shell scripts to productionize your code. Dapptools believes that tests should be written in solidity, andfuzzingShould be built in.
My experience with it has been a bit clumsy, but I think a lot of that comes from my mediocre bash scripting skills. I think everyone should be better at shell scripting and I love that it forces me to learn.
If you dont want to learn another language like javascript or python, you like to use as few tools as possible in your setup, you like MakerDAO, or@transmissions11secondary title
excellent player
Remix
My brief review of Remix: Everyone should know how to use itRemix, but not necessarily for production environments.
Remix is not a framework per se, but more like aIDE. Remix is a tool that I think everyone should start with so that everyone can have a common understanding when trying to share ideas. Not everyone will know the concatenation of python, javascript or bash scripts, so using a tool like Remix is perfect since it is a visual one.
When a contract is deployed, Remix will present buttons to interact with it. Its easy to choose a solidity version, compile, run solidity tests, etc. It also has javascript scripting options if you want to use javascript. Remix is extensible, so if you want to add functionality, you can extend it, and evenBuild a Remix development environment on the local host, to run code from your local repository.
Remix is a tool that brings everyone together, and Im glad we have a team working on such an amazing tool to help everyone. However, Remix is not something I would recommend for advanced users, as youll need more fine-tuned tools in your local development environment instead of always relying on a web IDE. I dont recommend advanced settings for Remix, however, if you enjoy working with it, its possible!
I strongly recommend that everyone familiarize themselves with Remix (if you know solidity, you can start directly).
Truffle
Trufflewas one of the first frameworks to emerge, originallyConsensyspart of Consensys, which was spun off from Consensys and then merged back into Consensys. It is a javascript based framework that includesGanache(even frameworks like brownie use it),Drizzleand now the latesttruffle teamsand other tools. Truffle has the greatest historical influence among all frameworks. You can see their impact on the industry. Many frameworks have adopted Truffles practices. We should feel lucky that this team came along and built such an excellent starting point for the framework. If you want to try it out, take a look atTruffle Starter Kit。
documentdocument, launchingSeventh Edition of Ganache, I spoke to their team and they told me they have big plans and Im excited.
Back in 2019, everyone had heard of or was using Truffle, but in the time since then, things have changed. Hardhat has been on the rise to solidify itself as the de-facto javascript framework. I often run into weird bugs when using Truffle; their TypeScript support is subtle, and tests run faster thanHardhatmuch slower. Right now, its hard to argue for Truffle when Hardhat is better at everything.
In early 2021, ImentionedIm nervous about Truffle, and from what I know about the framework, it looks like 2021 is the year Hardhat takes over. However, I think the future of Truffle is still bright. They have a really great team, theyve figured out where Truffle will live (with Consensys now), and Im expecting big things from them in 2022.
Ganache is a framework. If you start to contact the smart contract development framework from Truffle and like the syntax of Truffle, you should use this framework. In most cases, I recommend Hardhat over Truffle; however, I think Ganache is still a powerful tool and recommend that anyone looking to work with building a testnet locally take a look at Ganache. It has a nifty UI component that can be used to see transactions more easily; its simple to start and can be installed globally.
ApeWorX
ApeWorXis a newcomer to Python that branched out from the brownie community and made a better version of its ancestorbrownieA more modular financial-focused framework.
Apeworx has the same setup and syntax as brownie, but has some interesting improvements when applied.
Ive only used Apeworx a bit, it feels very brownie-like, and I love the addition of plugins. Its unclear if this will be a sequel to Brownie (similar to Hardhat taking over Truffles mind), or if the two will exist side-by-side. Anyway, Im really looking forward to seeingDoggieAnd his team will create something in 2022, and definitely a framework to watch, if you want some brownie-like framework that can add plugins, give it a try.
Foundry
Foundryis written in Rustdapptools. This is the most straightforward summary of the tool.
Ive been using foundry a little less than Dapptools, and it feels like this might be the successor to Dapptools, but Im not sure. It is also command-line based, requires a similar file structure, and almost all commands from Dapptools are similar to foundrys.ParadigmTeamsGeorgiosand friends reinvented the popular Dapptools, even in theirpost articleA tribute to Dapptools.
Many commands and file structure settings are the same as Dapptools. This framework is fast, powerful, focused on building tests in Solidity, and has built-in fuzzing and other powerful tools.
secondary title
Substitute
Ill go a little faster in this section, because these are probably frameworks you want to use, but Im not too familiar with them, or havent tried them well myself.
Waffle
Waffleyes
Saddle
SaddleyesCompoundA reinvention of Truffle. If you like Compound, give this one a try!
sbt-ethereum
In the past few years, I have not used java much, this is in my trialsbt-ethereumshowed up when. Sbt-ethereum markets itself as:
A text-based interactive platform created for hobbyists — people who are not programmers * — *sbt-ethereum.io
This is another framework I got to know about last year, unfortunately my scala skills are not great. However if you want to use the command line, this is another option.
Web3j/Epirus
This is another framework I learned about in the last year; looking at their website, it seems their main product has moved from a framework to an enterprise block explorer. However, they still have theirweb3jpackage, which is a java-based framework. If youre a java developer, give this a try and see how it feels.
Embark
EmbarkI gave it a pretty stellar review last year. I am able to test and deploy smart contracts from their framework and use some UI tools. However, it has not received it for over a yeargit committedsecondary title
non-EVM
Anchor
For now, I thinkAnchorThe framework is currently the largest non-EVM framework on Solana. If you do development on Solana, I highly recommend you tryAnchor, as it feels like the best solution right now.
TerraSDK
Terraand aTerra.jsand apython SDKfirst level title
4. wallet
secondary title
MetaMask
Metamaskis a tool that almost everyone in the field knows or should know. Its simple, its great for in-browser testing, and its what all front-end developers need to do. Almost everyone should have a Metamask or some Metamask-like browser wallet (like the one on SolanaPhantom)。
hot wallethot walletsecondary title
Gnosis Safe
Gnosis safeKnown as a multi-signature wallet, meaning it requires X number of signatures to send a transaction. That way, it doesnt matter if a wallet is compromised, since the attacker would need to compromise at least half of the key holders.
andSnapshot。
Ledger / Trezor
LedgerandTrezorKnown as cold wallets, or wallets that are cumbersome to convert. This cumbersomeness is intentional; they make it harder for you to move funds, and harder for attackers.
first level title
5. Blockchain explorer
secondary title
Etherscan
ah,EtherscanandPolygon、ETH 2andBinance Smart Chainsecondary title
Etherchain
However, Im glad they have competition, so they have to be on their toes!Etherchainis a lightweight block explorer that also releases aETH 2 secondary title
Ethplorer
Another ETH block explorer,Ethplorer, may be another browser you might want to know about.
first level title
6. Layer 1 node service
secondary title
Alchemy
Alchemysecondary title
Infura
Infurasecondary title
Moralis
i dont even knowMoralissecondary title
QuickNode
If one of the above does not have the blockchain I want,QuickNodefirst level title
7. Front-end tools
and
Web3js/Ethersjs
Web3jsandEthersjssecondary title
Moralis
MoralisorEtherscanorOpensea; maybe you need a list of NFTs owned by the address. There are a lot of things you might want to do, and Moralis has built-in support for them.
It has everything you need, including an open source toolkit and a cloud-based service framework.
I highly recommend everyone building a web3 site in 2022 to know about Moralis. they have manytemplatesecondary title
UseDapp
Usedappsecondary title
Drizzle
DrizzleFrom the family of Truffle, Metamask, Infura and Consensys, well done. It creates some simple wrappers around your javascript to work with your contracts, and it has React support built in too! please seesecondary title。
more tools
andcreate-eth-appandscaffold-ethfirst level title
8. Get help and support
Every developer should know how to get help when they have a problemBasic Roadmap。
1. Google the exact error
2. Look it up on StackOverflow or Stack Exchange ETH (or any Stack Exchange)
3. Raise an issue on the projects Github
4. Ask questions on the forum
5. Ask a question in Discord
When asking questions in these places, your questions should be:
1. Searchable: so other people with the same problem can find your problem.
2. Minimization and reproducibility: the more specific your use, the less likely you are to have an answer.
You should consider asking questions in forums or stack overflow as living documentation. The better your question is formatted, the easier it will be to answer. There are no bad questions, only badly formatted questions; make your question agood questionsecondary title
StackOverflow & Stack Exchange ETH
Heres your rule of thumb: If I have a question and its answer doesnt appear on the first page of Google results, I should post it on Stack Overflow.
By doing this you will get the answers you want while helping the whole community! Sometimes its not always possible to get a response from these sites, because sometimes your question may be too difficult, no one has done it before, or people who know the answer havent seen it. From time to time, I will include a link to my question in the discussion board to draw more attention to it. But a rule of thumb is that Stackoverflow or Stack Exchange ETH should be one of the first places I look when I have a problem.
secondary title
Discord
In 2022, I hope we move fromDiscordforum
forum
Forums are great because they are indexed and ranked like StackOverflow. A good example isOpenzeppelin Forumfirst level title
9. Security Analysis Tools
We all know that auditing is critical when publishing code to the blockchain, as anyone can view it and once it is published, it can be exploited! Therefore, it is very important to have some tools that can help us ensure that there are fewer errors in our code. Several tools have emerged in this space to make our smart contracts more secure.
andcharinganeandMatt Solomon.
secondary title
Slither
Slitheris becomingstatic analysisOne of the preferred tools. Slither byTrail of Bitssecondary title
MythX
MythXsecondary title
Mythril
Mythrilsecondary title
Manticore
Manticoreis another Trail of Bits tool, but instead of doing static analysis, it doessymbolic executionsecondary title
Echidna
Next up, Trail of Bits (you know why theyre one of my favorites) is back withEchidna. This is a for the EVM contractfuzzersecondary title
Securify
Securifyfirst level title
10. Monitoring and maintenance
Our last section has no pictures because for monitoring I usually use a lot of my own scripts. However, I thinkandandTenderlyis a tool you should be 100% familiar with. They are both tools that allow you to monitor your production code and make sure it stays secure!
Summarize
Summarize
This is my biggest post yet and it includes a huge list of tools. I know there are many, but the more you build in this space, the more you realize how important each of these tools is to building applications quickly.
2022 is going to be a crazy year, and I hope Ive given you some ideas of what to try this year to build your amazing, unique, inspiring web3 applications.
Let me know what tools you think Ive missed, let me know in the comments section! I wish you a happy new year! Lets make it big!
If you want to start your blockchain journey this year, check out howBecome a Blockchain Engineer, and this hasA list of 10 great resources。