当前位置: 首页 > >



原文标题:The Top Blockchain Developer Frameworks for 2021
原文作者:Patrick Collins

The best smart contract and blockchain developer frameworks, focusing on Ethereum smart contracts across all languages

Smart contract development frameworks make engineers’ lives easier by allowing them to deploy and test their smart contracts. I took hours and days to go through every recommended framework from ConsenSys and the Ethereum website to see which ones are the best for 2021. You can see my experimentation with the platforms on GitHub.

Not only that, but I’ve conducted hundreds of interviews with blockchain hackathon participants and gone through hundreds of hackathon submissions, looking for which tools perform the best and have the best developer experience. I also do a lot of work using each framework myself, and I want to set myself up for 2021 right. I’ve done the hard work for 2021 so you don’t have to.

The criteria used was simple. The framework needs to:

Deploy to a local blockchain

Have quick and effective testing

Deploy a smart contract, using Chainlink, to the Kovan Testnet.




The third criterion is important because it allowed me to test how the framework interacts with other packages and integration testing. Working with oracles and third-party tools like OpenZeppelin is basically a must for 2021, which is why this last piece is so important.

We are going to briefly mention some other important tools that you need to know about for 2021, but this article will not go over beginner tools, like an ETH wallet, an Ethereum client, or a text editor.


Video Walkthrough

Top 3 Smart Contract Development Frameworks

When it came down to it, there are three smart contract development frameworks that I would recommend to anyone. Each has a slightly different flavor and reason why you’d choose it. They are:

    Hardhat (JavaScript)Truffle (JavaScript)Brownie (Python)

Let’s go through each and understand why you’d want to use it, why it made the top of the list, and anything else noteworthy.

1. Hardhat

Image source:?Hardhat

Hardhat is one of the best frameworks out there, having some of the fastest tests, best tutorials, and easiest integrations. Honestly, everyone who enjoys JS frameworks should try out Hardhat at some point. It’s really easy to get going, it has blazing-fast tests, and getting started is really simple. Their Discord has always been really quick to respond to questions as well, so if you run into issues, you can always ask for help. They use Waffle and Ethers.js for testing, which is arguably the better JavaScript smart contract framework, due to some really nice quality-of-life improvements over web3.js. They also have access to direct integration with OpenZeppelin’s upgradeable smart contract plugin, which is a huge win.

This project has an awesome feel to it: It’s clean. It does what you want it to do. It’s really fast. The project is continuously improving, and they are clearly dedicated to making the smart contract developer’s life easier.


ETH Foundation-funded project, previously BuidlerTechnology: Javascript, Web3.js and Ethers.js plugins, OpenZeppelin upgradable contracts plugin, Etherscan plugin, blockchain forkingBlockchain: Hardhat runtime environment/local, testnets, mainnetHas testing: WaffleMaintainance: very activeSupport: activeOpen source


2. Truffle

Image source: TruffleSuite

Truffle has been the default framework for a few years now, and for good reason. It is a powerful framework that sets the standard for many others to follow. You’ll find easily the most projects using this platform, so finding examples is easy. Truffle also can be easily integrated with its sister tools Drizzle and Ganache. Ganache in particular is one of the most popular ways for engineers to run a local blockchain. For those looking for even more tools, you can pay for an upgraded Truffle team account and get access to smart contract continuous integration, visual deployments, and monitoring. They also have access to direct integration with OpenZeppelin’s upgradeable smart contract plugin, which is a huge win. They clearly are a group of talented engineers who want to make the world a better smart contracted place.

Truffle tests don’t run as fast as Hardhat’s do, and due to the high volume of users, getting support can be difficult. I’m looking forward to seeing how they will improve this project since being acquired by ConsenSys. Their documentation appears to be starting to fall off and can be hard to follow, but if you google an error you run into, you’ll most likely run into someone who has run into the error and solved it before. I’ve found some of the best ways to improve the project is to leave an issue on their GitHub. It’s our open source duty anyway to keep the ecosystem growing stronger and better!

Due to almost everyone is familiar with it, getting support from your peers is usually easy. I really hope to see the team get some more support on this project, as they have so_?_many users. I hope they see this article and work to improve their documentation so that they can stay as one of the go-to platforms for testing and deploying smart contracts.


The most widely used platform; recently acquired by ConsenSys (Nov. 2020)Technology: Javascript, Web3.js, OpenZeppelin upgradable contracts plugin, Etherscan plugin, blockchain forkingBlockchain: Ganache/local, testnets, mainnetHas testingMaintainance: very activeSupport: activeOpen source with paid upgrades


使用最广泛的*台; 最*被ConsenSys收购(2020年11月)技术:Javascript,Web3.js,OpenZeppelin可升级合约插件,Etherscan插件,区块链分叉区块链:Ganache/本地,测试网,主网有测试维护:非常活跃支持:活跃开源,可付费升级
3. Brownie

Image source:?Brownie
Heavily inspired by Truffle, this is basically the Python equivalent, with some added quality-of-life changes. This project literally came about from the same frustration most Python engineers share: They don’t like JavaScript. Due to it being written in Python, a lot of the headaches that come with working with JavaScript are removed, and you get this wonderfully simple framework for working with and deploying smart contracts.

Being someone who loves Python myself, I’m really excited for the future of this project, and as adoption picks up, it looks like more and more projects are looking at Python and this framework to deploy their smart contracts. I’ve started using Brownie as my go-to framework and have been loving it. I’ve chatted with a few of the people who work on it more, and they are a really intelligent group. Yearn.finance seems to have bought in as well.
作为一个本身就喜欢Python的人,我对这个项目的未来感到非常兴奋,随着采用率的提高,越来越多的项目正在使用Python和本框架部署他们的智能合约。我已经开始使用Brownie作为我的入门框架,并且一直都很喜欢它。 我已经和开发此框架的一些人聊过,他们是一个非常聪明的团队。Yearn.finance好像也已经采用了这个框架。

If you come from the Python world or want a really simple, clean framework, this is for you. No questions asked.

One more! I know I said only three, but I think this next one deserves a spot up here as well.


The best Python framework, used by DeFi projects like yearn.finance.Technology: Python, Web3.py, blockchain forking, Etherscan plugin, Vyper supportBlockchain: Ganache/local, testnets, mainnetHas testingMaintainance: very activeSupport: activeOpen source


4. Embark

Image source:?Embark
I was surprised to see a framework outside of the top three with so many stars on GitHub (3.1k). This tool has a ton of bells and whistles. It took me a little bit of work to understand quite what was going on, but that’s because Embark is meant to be an entire dApp framework. It’s a full-stack blockchain platform. I was able to deploy my Chainlink contracts to the Kovan network after some help from their Gitter (and an issue created on their GitHub; remember, open source duty!). It comes with a UI that allows you to interact with the blockchain and your contracts in a GUI. It looked like there was a bit of a learning curve that I didn’t spend enough time to get over, but it showed a lot of promise. This is why I wanted to include it here, as I feel there was a lot that I didn’t fully digest.

I’d love to see people try this framework out some more and see the power. I feel like I might not be able to do it justice here due to my limited time spent with the project. I do think decoupling your frontend from your backend is still best practice, but if you need to spin up a project with a good frontend and don’t care about decoupling, then you should 100% check this project out.

Very cool project, and would recommend anyone check it out if they like Hardhat and Truffle but want to integrate with a full-stack solution.

JavaScript framework with a ton of bells and whistles for frontend developmentTechnology: JavaScript, Web3.js, proxy contract supportBlockchain: Ganache/local, testnets, mainnetHas testingMaintainance: mildly activeSupport: activeOpen source


Let’s Pause

Now before I proceed with some alternatives to the above, I wanted to take a quick break and point out some important non-framework tools for 2021.

OpenZeppelin and upgrades pluginEtherscan/Block Explorer Verifiercreate-eth-app


OpenZeppelin and upgrades plugin

OpenZeppelin is a platform that creates tools for smart contract engineers to use. They have some defaults, like ERC20 and ERC721 tools, where you can just import their contract and have a token built in seconds. Look how simple it is to make an ERC20 with OpenZeppelin:

pragma solidity ^0.6.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract GLDToken is ERC20 {
constructor(uint256 initialSupply) public ERC20(“Gold”, “GLD”) {
_mint(msg.sender, initialSupply);

It doesn’t make sense to reinvent the wheel. OpenZeppelin is an open source project dedicated to making sure you don’t have to.

The other huge piece OpenZeppelin has is their upgradable contracts functionality. Deploying a working project means you’ll have to deploy a proxy contract that you’ll need to update whenever you want to make changes. This is another project that feels amazing and clean. Honestly, every project, no matter what platform you’re using, should probably use something OpenZeppelin has created at some point.

Etherscan/block explorer verifier

Etherscan is the most popular block explorer. When people want to check out your contract and what you’ve deployed, they won’t be able to unless they have the ABI and contract address. Finding the contract address is usually pretty easy, but it’s a lot hard to get the ABI. You’ll want people to easily be able to see and interact with your smart contract, so you always want to verify it so others can do just that. Most frameworks have some sort of verification plugin where you can deploy a smart contract and then right after verify it on Etherscan. Be sure to use this in your applications.


Having a plethora of backend smart contracts is great, but if no one can use your dApp, it’s worthless. create-eth-app is a platform that allows you to spin up a frontend for your smart contracts using ReactJS. It uses a lot of newer React tricks, like state Hooks, and makes building really powerful frontends easier.

Some Amazing Beginner Tools for 2021
Scaffold-ETHeth.buildRemixOne Click dApp

I’m not going to go into what these do here, but if you’re new to the space, check these out!

Alternative Frameworks

The rest of these frameworks are not bad at all, and may work for you. Some of them do have some really cool ideas on what to put into a smart contract framework, and I hope the main three take note of some of these awesome ideas. These are tools that probably could use a little more exploring time.

Waffle (JS)Dapp.Tools (Haskell/CLI)SBT (Scala/CLI)Epirus (Java)

Image source:?Waffle

Waffle can be used as a deployment framework itself, although you’ll have to write a lot more of your own custom scripts. It’s listed as a smart contract framework, although it feels a little silly to compare it to these other frameworks. Waffle can be used with whatever framework you like and is currently the default tool for working with Hardhat.

I don’t recommend using this by itself if you want all the nice features a framework can provide, but if you want to work with a more raw, simple, customizable framework, you can’t go wrong here.


Lightweight JavaScript framework focused on testingTechnology: JavaScript, Ethers.jsBlockchain: Anything you runHas testingMaintainance: very activeSupport: activeOpen source



Image source:?Dapp.Tools

Dapp.Tools is used by MakerDAO and surprised me. It’s written in Haskell but has support for a lot of the plugins, like OpenZeppelin, that we use and love. It looks to be a minimalist framework that is powerful enough to do what you want it to do. I was able to get help in deploying my contract with this platform and was surprised by how clean and simple it was. If you’re looking for a minimalist command-line-friendly framework, then I’d recommend checking this one out as well.


Haskell simple framework used by MakerDAOTechnology: Haskell/CLIBlockchain: Local/Ganache, testnets, mainnetHas testingMaintainance: activeSupport: activeOpen source



Image source:?Epirus

Even though I said it’s “Truffle-like,” Epirus is not very Truffle-like at all in style, but in the business sense. They have an open source project, but they have a paid upgraded tool for those looking to work more with it. They use Java’s Web3 implementation, and it looks like it’s still early in the project’s development. I was happy to see they had Android support, so I’m really curious to see how this project progresses. We could get more Java engineers into the industry, as there are not many Java smart contract platforms.

I wasn’t able to deploy to Kovan as it’s not supported, but it looks like they have support for Rinkeby. In any case, I’m excited to see the project move along.


A Truffle-like Java implementationTechnology: JavaBlockchain: Ganache/local, testnets (not Kovan)Has testingMaintainance: activeSupport: not very activeOpen source with paid upgrades




One of the more interesting projects I played with, SBT focuses on interacting with smart contracts almost solely from the command line, or with Scala. I have almost zero Scala experience, so I don’t have a great standpoint from which to review this platform. It seems like it could be really cool if you know Scala and are looking to get into Ethereum.


Command-line and Scala project that tackles two problems. For hobbyists working with smart contracts and smart contract engineers.Technology: ScalaBlockchain: Local/Ganache, testnets, mainnetHas testingMaintainance: mildly activeSupport: inactiveOpen source**


Outdated Frameworks

You’ll see these pop up from time to time. I’m sure they were great when they came out, but at this time, they are either no longer supported or are inactive. These will be the ones to avoid to save yourself the trouble of trying to work with them.

OpenZeppelin CLI/SDK (JS)Etherlime (JS)Parasol (JS)Cobra (PY)
OpenZeppelin SDK

Image source:?OpenZeppelin SDK
图片来源:OpenZeppelin SDK

Now I understand why this project stopped working on this ? as a team, they want to focus on the hard problem of upgradeable smart contracts ? but to be honest, it’s sort of a shame. This project is just plain clean. I was able to deploy my Chainlinked smart contract and read the price of ETH quicker than with almost any other framework. It also had some really nice CLI options, which it looks like Epirus and Hardhat have as well. It also comes built in with upgradeable options, which is huge in a world where so few platforms do.

I don’t recommend using this, as they intentionally are not supporting it anymore, but this was one of the best developer experiences I’ve had with a smart contract framework. I hope the main three are able to pick up on what made this project so shiny. There is a reason why I said above that everyone should use OpenZeppelin tools. They just work.

If they didn’t stop working on this, their SDK would easily be a top-four framework.


OpenZeppelin’s deprecated smart contract framework. They deprecated to focus on upgrades plugin. Really clean JS framework otherwise.Technology: JavaScript, Web3.js and Ethers.js plugins, OpenZeppelin upgradable contracts pluginBlockchain: local, testnets, mainnetHas testingMaintainance: inactiveSupport: inactiveOpen source



Image source:?Etherlime

Etherlime seems to be another JS framework that is falling out of favor and not being actively worked on. It’s tightly coupled with an outdated feature of Infura, so we weren’t able to deploy our smart contracts on Kovan. It seems like it was a really strong project when it was alive, and it looks like it still works for local development, but I wouldn’t recommend it over the top three.


Inactive JS frameworkTechnology: JavaScript, Ethers.jsBlockchain: local, testnets, mainnetHas testingMaintainance: inactiveSupport: inactiveOpen source



Image source:?Parasol

Another inactive JS framework (over two years without a commit). It has some cool features, like parasol interact, and some integrations, and clearly, some really intelligent people worked on this, but I see no reason to use this platform over any of the other JS frameworks.
另一个不再活跃的JS框架(超过两年未提交新代码)。它具有一些很酷的功能,例如parasol interact以及一些集成,并且显然的是,有一些真正聪明的人在为这个项目工作,但是现在我认为没有理由在任何其他JS框架上使用该*台。

Inactive JS frameworkTechnology: JavaScript, Web3.jsBlockchain: local/Ganache, testnets, mainnetHas testingMaintainance: inactiveSupport: inactiveOpen source



The smart contract and blockchain world moves fast. Some of the hottest tools from two years ago are already old news, and smart contract development frameworks are no different. It’s cool to see Truffle stay at the top of the game, but even greater is that so many projects have taken a different approach to the problem.

If you think I missed one or got it wrong, or you have some other thoughts, feel free to leave a comment or reach out. The idea here is to enable smart contract engineers to get started as quickly and as effectively as possible. Shedding light on all the tools will allow us to reach that point where the world is decentralized faster. Hope this was helpful!