• Stars
    star
    119
  • Rank 297,930 (Top 6 %)
  • Language
    C
  • Created almost 4 years ago
  • Updated over 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
410
star
4

all-on-chain-generated-nft

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

dao-template

TypeScript
244
star
6

full-stack-web3-metamask-connectors

180
star
7

chainlink_defi

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

rwa-creator

Solidity
133
star
9

hardhat-smartcontract-lottery-fcc

JavaScript
118
star
10

hardhat-nft-marketplace-fcc

JavaScript
114
star
11

hardhat-nft-fcc

JavaScript
101
star
12

simple-storage-fcc

Solidity
99
star
13

ethers-simple-storage-fcc

JavaScript
88
star
14

unstoppable-ui

JavaScript
87
star
15

async-python

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

hardhat-fund-me-fcc

JavaScript
83
star
17

defi-stake-yield-brownie

Solidity
78
star
18

smartcontract-lottery

Solidity
75
star
19

PatrickAlphaC

75
star
20

hardhat-simple-storage-fcc

JavaScript
74
star
21

aave_brownie_py

Solidity
61
star
22

nextjs-smartcontract-lottery-fcc

JavaScript
60
star
23

foundry-play

Solidity
59
star
24

fund-me-fcc

Solidity
56
star
25

pokemon-nft

Pokémon NFTs
Solidity
54
star
26

defi-stake-yield-brownie-freecode

Solidity
53
star
27

simple_storage

Solidity
51
star
28

erc20-brownie

Solidity
50
star
29

fund_me

Solidity
48
star
30

storage-factory-fcc

Solidity
45
star
31

web3_py_simple_storage

Python
45
star
32

nextjs-nft-marketplace-moralis-fcc

JavaScript
44
star
33

lens-blog

A minimal example of using Lens Protocol to build a blog
JavaScript
39
star
34

nextjs-nft-marketplace-thegraph-fcc

JavaScript
39
star
35

hardhat-erc20-fcc

JavaScript
38
star
36

html-js-ethers-connect

JavaScript
37
star
37

nft-demo

Python
37
star
38

defi_py_mix

Solidity
36
star
39

storage_factory

Solidity
35
star
40

hardhat-defi-fcc

Solidity
35
star
41

aave_web3_py

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

denver-security

Solidity
34
star
43

html-fund-me-fcc

JavaScript
32
star
44

graph-nft-marketplace-fcc

TypeScript
32
star
45

sc-language-comparison

Solidity
31
star
46

smartcontract-upgrades-example

JavaScript
28
star
47

foundry-smart-contract-lottery-f23

Solidity
27
star
48

nextjs-ethers-metamask-connect

JavaScript
26
star
49

brownie_fund_me

Solidity
25
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

multicall-js

JavaScript
19
star
57

signatureVerification

Solidity
18
star
58

openweathermap_cl_ea

JavaScript
17
star
59

denver-security-challenges

Solidity
17
star
60

multicall

Python
16
star
61

hardhat-upgrades-fcc

JavaScript
16
star
62

hardhat-dao-fcc

TypeScript
15
star
63

ai-stablecoin

Solidity
15
star
64

staking-ui-demo

JavaScript
15
star
65

decentralized-raffle

TypeScript
15
star
66

ipfs_cl_ea

IPFS Chainlink External Adapter
JavaScript
14
star
67

get-all-transactions

Python
14
star
68

hardhat-simple-storage

JavaScript
13
star
69

aave_brownie_py_freecode

Solidity
13
star
70

hardhat-events-logs

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

fuzzing-example

Solidity
10
star
77

vyper-chain-info

Python
10
star
78

vrf_pizza

lol
Solidity
10
star
79

dapptools-demo

Solidity
10
star
80

nextjs-web3-react-metamask-connect

JavaScript
10
star
81

eth-global-live-audit

Solidity
10
star
82

filecoin_cl_ea

JavaScript
9
star
83

puppy-raffle-smartcon

Solidity
9
star
84

ape-fund-me-v23

Python
8
star
85

erc20-brownie-py

Python
8
star
86

brownie-events-logs

Python
7
star
87

patrickalphac.com

TypeScript
7
star
88

send_blob

Python
7
star
89

unfinished-defi-workshop

JavaScript
6
star
90

vrf_pizza_front_end

lol
CSS
6
star
91

gcp-weather

Solidity
6
star
92

nextjs-web3modal-metamask-connect

JavaScript
6
star
93

smartcon-hacker-house-hunt-rules

6
star
94

hardhat-fund-me-forked-fcc

JavaScript
5
star
95

geo_db_brownie

Solidity
5
star
96

clever-lottery-web3

JavaScript
5
star
97

scavenger-hunt

TypeScript
5
star
98

nextjs-ethers-introduction-fcc

JavaScript
5
star
99

vheader

A tool for making perfect vyper headers, inspired by transmissions11
Rust
5
star
100

nextjs-usedapp-metamask-connect

JavaScript
5
star