• Stars
    star
    119
  • Rank 288,660 (Top 6 %)
  • Language
    C
  • Created over 3 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A list of smart contract frameworks

Top Smart Contract/Blockchain Frameworks for 2021

And also blockchain tools, and noteworthy integrations. We also listed some important non-framework tools after the top 3 section.

We went through each of the following frameworks:

Top 3 Frameworks

  • Truffle
  • Hardhat
  • Brownie

Important Non-Framework tools

  • create-eth-app
  • OpenZepplin Contracts & Upgrade Plugin
  • Etherscan Verifier & Block Explorer

Great Beginer tools

  • OneClickDapp
  • Remix
  • Scaffold-ETH
  • eth.build

Alternative Frameworks

  • Embark
  • Waffle
  • Dapp.Tools
  • sbt-ethereum
  • Epirus

Outdated Frameworks

  • Etherlime
  • Openzepplin
  • Cobra
  • Parasol

Mentionable

  • 0xcert framework

And attempted to do the following:

  1. Deploy a smart contract locally
  2. Deploy a smart contract to a testnet
  3. Deploy a smart contract that uses Chainlink to a testnet

I've made a PR to the ConsenSys repo with some improvements to their list. You can read more about even MORE tools there.

Top Recommended Frameworks:

Hardhat (JS)

Truffle (JS)

Brownie (PY)

Hardhat

  • Summary: ETH Foundation funded project, previously buidler.
  • Technology
    • Javascript
    • Web3.js and Ethers.js plugins
    • Openzepplin upgradable contracts plugin
    • Etherscan plugin
    • Blockchain forking
  • Blockchain
    • Hardhat Runtime Environment/Local
    • Testnets
    • Mainnet
  • Has Testing
    • Waffle
  • Maintainance
    • Very Active
  • Support
    • Active
  • Open Sourced

Hardhat is one of the best frameworks out there. Having some of the fastest tests, best tutorials, and easiest integrations, honestly, everyone who like JS frameworks should try out hardhat at some point. Really easy to get going, blazing fast tests, and getting started is really simple. There 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.

This project has an awesome feel to it: it's clean. It does what you wnat it to do. It's really fast. Very clean project that is clearly designed to make smart contract developers lives better.

Truffle

  • Summary: The most widely used platform that was recently aquired by ConsenSys (Nov. 2020).
  • Technology
    • Javascript
    • Web3.js
    • Openzepplin upgradable contracts plugin
    • Etherscan plugin
    • Blockchain forking
  • Blockchain
    • Ganache/Local
    • Testnets
    • Mainnet
  • Has Testing
  • Maintainance
    • Very Active
  • Support
    • Active
  • Open Sourced
    • With paid upgrades

Truffle has been the default framework for a few years now, so you'll find easily the most projects using this platform, so finding examples is easy. It also comes packed with other tools like drizzle and ganache, which you'll see, a lot of other platforms are based on ganache due to how powerful it is. Tests run a little slower than hardhat because of this, and due to the high volume of users, getting support can be a little hard. I'm looking forward to seeing how they will improve this project since being acquired by Consensys. For those looking for even more tools, you can pay for a truffle teams account, where you'll get access to some really cool features to make your life easier. Their documentation appears to be starting to fall off a little, but if you google an error you run into, you'll most likely run into someone who has run into the error before as well. I've found some of the best ways to improve the project is to leave a VERY THOUGHT OUT issue on their github. This also is our open sourced duty to do so to make these protocols better.

Due to almost everyone is familiar with it, getting support from your peers is usually pretty easy. I really hope to see the team get some more support on this project, as they are so insanly swamped. It feels like the truffle team has started working more on their paid platform when some of the docs of their core project are depreciating. I hope they see this post and work to improve it so that they can stay as one of the go-to platforms for testing and deploying smart contracts.

Brownie

  • Summary: The best python framework, used by defi projects like yearn.finance.
  • Technology
    • Python
    • Web3.py
    • Blockchain forking
    • Etherscan plugin
  • Blockchain
    • Ganache/Local
    • Testnets
    • Mainnet
  • Has Testing
  • Maintainance
    • Very Active
  • Support
    • Active
  • Open Sourced

Heavily inspired by truffle, this is basically the python equivalent, with some added quality of life changes. Due to it being written in python though, a lot of the headaches that comes with working with javascript are removed, and you get this wonderfully simple framework for working and deploying smart contracts.

Being someone who loves python myself, I'm really excited for the future of this project, and as adoptiong 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 brownine as my go-to framework and have been loving it. Yearn.finance is using this platform and basically put it on the map. I've chatted with a few of the people who have recently started working on it more and they are a really intelligent group.

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

Important tools to use with your frameworks

Openzepplin & Upgrades plugin

Etherscan/Block Explorer Verifier

create-eth-app

Openzepplin & Upgrades plugin

Openzepplin 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 Openzepplin:

// contracts/GLDToken.sol
// SPDX-License-Identifier: MIT
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, openzepplin is an open sourced project dedicated to making sure you don't have to.

The other HUGE piece the openzepplin 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 openzepplin 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 that 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.

create-eth-app

Having a backend of smart contracts is great... but if no one can use it, it's worthless. create-eth-app is a platform that allows you to spin up a front-end for your smart contracts using reactJS. It uses a lot of newer react tricks like state hooks, and makes building really powerful front ends easier.

Important Starter Tools

Scaffold-ETH

eth.build

Remix

oneclickdapp

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 3 take note of some of these awesome ideas. These are tools that probably could use a little more explore time.

Embark (JS)

Waffle (JS)

Dapp.Tools (HASKELL)

sbt-ethereum (SCALA/CLI)

Epirus (JAVA)

Apeworx (Python)

Embark

  • Summary: Javascript framework with a ton of bells and whistles for front end development.
  • Technology
    • Javascript
    • Web3.js
    • Proxy contract support
  • Blockchain
    • Ganache/Local
    • Testnets
    • Mainnet
  • Has Testing
  • Maintainance
    • Not very active
  • Support
    • Active
  • Open Sourced

I was surprised to see a framework outside of the top 3 with so many stars on github (3.1k). I'm not sure who uses it, but at least someone appears to be using it. This tool has a ton of while bells and whistles. After a little bit of struggling starting it (of course, I did my open sourced duty and created an issue to fix), I was able to deploy my contracts to the Kovan network. 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 showed a lot of promised. 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 think decoupling your front end from your back end is still best-practice, but if you need to spin up a project with a good front end quickly, this might be a project for you to look into.

I was able to get some support on the issues I was running into, and was happy to see they were aware of the support chat. 100% not a dead project, but not being worked on as activly as something like Hardhat, Brownie, or Truffle. Very cool project, and would recommend anyone check out if they like Hardhat and Truffle.

Waffle

  • Summary: Lightweight javascript framework focused on testing.
  • Technology
    • Javascript
    • Ethers.js
  • Blockchain
    • Anything you run
  • Has Testing
  • Maintainance
    • Very Active
  • Support
    • Active
  • Open Sourced

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 amoungst these other frameworks. Waffle can be used with whatever framework you like, and is currently the default tool for working with Hardhat. Waffle is great, and even better paired with Hardhat. I don't recommend using this by itself, but if you don't want to work with any of the bells and whistles that come with hardhat or truffle, then using this feels like a more raw, simple, customizable version of doing so.

Dapp.Tools

  • Summary: Haskell simple framework used by MakerDAO.
  • Technology
    • Haskell/CLI
  • Blockchain
    • Local/Ganache
    • Testnets
    • Mainnet
  • Has Testing
  • Maintainance
    • Active
  • Support
    • Active
  • Open Sourced

Tool used by MakerDAO that surprised me. Its written in haskell, but has support for a lot of the plugins like Openzepplin 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 on deploying my contract with this platform, and was surprised by how clean and simple it was. If you're looking for a minimalist framework then I'd recommend checking this one out as well.

Epirus

  • Summary: A truffle like java implementation.
  • Technology
    • Java
  • Blockchain
    • Ganache/Local
    • Testnets (Not Kovan)
  • Has Testing
  • Maintainance
    • Active
  • Support
    • Not very Active
  • Open Sourced
    • With Paid upgrades

Even though I said it's "truffle like" its not very truffle like at all in style, but in the business sense. They have an open sourced project, but they have a paid upgraded tool for those looking to work more with it. They use javas web3 implementation and it looks like it's still early in the projects development. I was happy to see they had android support, so I'm really curious to see how this project progresses, and 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, so that was a stopped, but it looks like they have support for rinkeby. In any case, excited to see the project move along.

ApeWorkx

The Ethereum Development Framework For Python Developers, Data Scientists, And Security Professionals

sbt-ethereum

  • Summary: SBT plugin, command line and scala project that tackles two problems. Hobbyists working with smart contracts and smart contract engineers.
  • Technology
    • Scala and SBT
  • Blockchain
    • Local/Ganache
    • Testnets
    • Mainnet
  • Has Testing
  • Maintainance
    • Mildly Active
  • Support
    • Inactive
  • Open Sourced

One of the more interesting projects I played with, this platform focuses on interacting with smart contracts almost solely from the command line, or if you were a scala engineer. I don't almost any scala experience so I don't have a great standpoint to review this platform. Seems like it could be really cool if you know scala and are looking to get into ethereum.

Outdated frameworks

These frameworks are no longer supported, and really shouldn't be used anymore. I see no reason to use these over any of the frameworks mentioned above.

Openzepplin CLI/SDK (JS)

Etherlime (JS)

Parasol (JS)

Cobra (PY)

Cobra

  • Summary: Inactive python framework.
  • Technology
    • Python
    • Web3.py
  • Blockchain
    • Ganache/Local
    • Testnets
    • Mainnet
  • No Test
  • Maintainance
    • Inactive
  • Support
    • Inactive
  • Open Sourced

Unfourtunatly we didn't spend enough time to get a working project done, we had some issues with the installation. It looks like it's very similar to brownie though, with a really intelligent group of contributors. It isn't activly maintained anymore, (as of writting, last commit was 17 months ago) and it looks like it's testing never was fully fleshed out. I see no reason to use this over brownie, but it looks like brownie may have drawn some inspiration from this project as well.

Openzepplin CLI/SDK (JS)

  • Summary: Openzepplin's depreciated smart contract framework. They depreciated to focus on upgrades plugin. Really clean JS framework otherwise.
  • Technology
    • Javascript
    • Web3.js and Ethers.js plugins
    • Openzepplin upgradable contracts plugin
  • Blockchain
    • Local
    • Testnets
    • Mainnet
  • Has Testing
  • Maintainance
    • Inactive
  • Support
    • Inactive
  • Open Sourced

Now I understand why this project stopped working on this, they want to focus on a really hard problem with upgradeable smart contracts, but to be honest, it's sort of a shame. This project is cllleeeeaaaaaan. I was able to deploy my Chainlinked smart contract and read the price of ETH quicker than almost any other framework. It also had some really nice CLI options, that 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.

Now 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 3 are able to pick up on what made this project so shiny. There is a reason why I said above that everyone should use openzepplin tools. It just works.

Etherlime

  • Summary: Inactive JS framework.
  • Technology
    • Javascript
    • Ethers.js
  • Blockchain
    • Local
    • Testnets
    • Mainnet
  • Has Testing
  • Maintainance
    • Inactive
  • Support
    • Inactive
  • Open Sourced

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

Parasol

  • Summary: Inactive JS framework.
  • Technology
    • Javascript
    • web3.js
  • Blockchain
    • Local/Ganache
    • Testnets
    • Mainnet
  • Has Testing
  • Maintainance
    • Inactive
  • Support
    • Inactive
  • Open Sourced

Another inactive JS framework (over 2 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.

Mention: 0xcert

0xcert seemed more like an asset manager focused on ETH than a deployment framework, so I will not review 0xcert.

More Repositories

1

nft-mix

Solidity
803
star
2

dungeons-and-dragons-nft

#chainlink #nft
JavaScript
603
star
3

hardhat-security-fcc

Solidity
400
star
4

all-on-chain-generated-nft

A repo for generating random NFTs with metadata 100% on chain!
JavaScript
349
star
5

dao-template

TypeScript
239
star
6

full-stack-web3-metamask-connectors

177
star
7

chainlink_defi

Build a defi yield farmable dApp. Get started here.
JavaScript
157
star
8

hardhat-smartcontract-lottery-fcc

JavaScript
113
star
9

hardhat-nft-marketplace-fcc

JavaScript
112
star
10

hardhat-nft-fcc

JavaScript
99
star
11

simple-storage-fcc

Solidity
93
star
12

unstoppable-ui

JavaScript
88
star
13

async-python

Shows how to use async requests vs requests
Python
87
star
14

hardhat-fund-me-fcc

JavaScript
82
star
15

ethers-simple-storage-fcc

JavaScript
82
star
16

defi-stake-yield-brownie

Solidity
78
star
17

smartcontract-lottery

Solidity
75
star
18

PatrickAlphaC

75
star
19

hardhat-simple-storage-fcc

JavaScript
68
star
20

aave_brownie_py

Solidity
61
star
21

foundry-play

Solidity
58
star
22

nextjs-smartcontract-lottery-fcc

JavaScript
57
star
23

pokemon-nft

Pokémon NFTs
Solidity
54
star
24

defi-stake-yield-brownie-freecode

Solidity
53
star
25

fund-me-fcc

Solidity
52
star
26

simple_storage

Solidity
51
star
27

erc20-brownie

Solidity
50
star
28

fund_me

Solidity
48
star
29

web3_py_simple_storage

Python
45
star
30

storage-factory-fcc

Solidity
44
star
31

nextjs-nft-marketplace-moralis-fcc

JavaScript
44
star
32

lens-blog

A minimal example of using Lens Protocol to build a blog
JavaScript
40
star
33

nextjs-nft-marketplace-thegraph-fcc

JavaScript
39
star
34

nft-demo

Python
38
star
35

hardhat-erc20-fcc

JavaScript
37
star
36

html-js-ethers-connect

JavaScript
36
star
37

defi_py_mix

Solidity
36
star
38

storage_factory

Solidity
35
star
39

aave_web3_py

web3.py way to interact with aave
Python
35
star
40

rwa-creator

Solidity
35
star
41

hardhat-defi-fcc

Solidity
34
star
42

graph-nft-marketplace-fcc

TypeScript
32
star
43

sc-language-comparison

Solidity
30
star
44

denver-security

Solidity
28
star
45

smartcontract-upgrades-example

JavaScript
28
star
46

html-fund-me-fcc

JavaScript
27
star
47

foundry-smart-contract-lottery-f23

Solidity
27
star
48

brownie_fund_me

Solidity
25
star
49

nextjs-ethers-metamask-connect

JavaScript
24
star
50

weather-nft

chainlink weather nfts
Solidity
24
star
51

brownie_simple_storage

Python
23
star
52

chainlink-the-graph

JavaScript
22
star
53

flashloan-forta-py

Python
22
star
54

chainlink-hardhat

JavaScript
20
star
55

upgrades-mix

Solidity
19
star
56

openweathermap_cl_ea

JavaScript
17
star
57

multicall-js

JavaScript
17
star
58

hardhat-upgrades-fcc

JavaScript
17
star
59

denver-security-challenges

Solidity
16
star
60

ai-stablecoin

Solidity
15
star
61

multicall

Python
15
star
62

staking-ui-demo

JavaScript
15
star
63

decentralized-raffle

TypeScript
15
star
64

ipfs_cl_ea

IPFS Chainlink External Adapter
JavaScript
14
star
65

hardhat-dao-fcc

TypeScript
14
star
66

get-all-transactions

Python
14
star
67

signatureVerification

Solidity
14
star
68

aave_brownie_py_freecode

Solidity
13
star
69

hardhat-events-logs

JavaScript
12
star
70

hardhat-simple-storage

JavaScript
12
star
71

nextjs-moralis-metamask-connect

JavaScript
12
star
72

hardhat-metamorphic-upgrades-fcc

JavaScript
12
star
73

defi-dapp

TypeScript
12
star
74

battle-game

JavaScript
11
star
75

foundry-vyper

A package for deploying and compiling vyper code in foundry
Solidity
11
star
76

vyper-chain-info

Python
10
star
77

vrf_pizza

lol
Solidity
10
star
78

dapptools-demo

Solidity
10
star
79

nextjs-web3-react-metamask-connect

JavaScript
10
star
80

filecoin_cl_ea

JavaScript
9
star
81

ape-fund-me-v23

Python
8
star
82

fuzzing-example

Solidity
8
star
83

eth-global-live-audit

Solidity
8
star
84

erc20-brownie-py

Python
8
star
85

puppy-raffle-smartcon

Solidity
7
star
86

brownie-events-logs

Python
7
star
87

unfinished-defi-workshop

JavaScript
6
star
88

vrf_pizza_front_end

lol
CSS
6
star
89

patrickalphac.com

TypeScript
6
star
90

nextjs-web3modal-metamask-connect

JavaScript
6
star
91

smartcon-hacker-house-hunt-rules

6
star
92

hardhat-fund-me-forked-fcc

JavaScript
5
star
93

geo_db_brownie

Solidity
5
star
94

clever-lottery-web3

JavaScript
5
star
95

scavenger-hunt

TypeScript
5
star
96

nextjs-ethers-introduction-fcc

JavaScript
5
star
97

nextjs-usedapp-metamask-connect

JavaScript
5
star
98

gcp-weather

Solidity
4
star
99

hackathon_scraper

Python
4
star
100

pizza_cl_ea

JavaScript
4
star