A Definitive List of Ethereum Developer Tools – ConsenSys Media
For any developer — whether you’re a wide-eyed Web3 novice or a grizzled OG crypto-anarchist tech overlord — Github is your friend. The ConsenSys Github in particular features perhaps the most definitive repository for Ethereum dev tools you’ll find on the entire Internet. Whether it’s the basics, coding languages, IDEs, APIs, ABIs, frameworks, best practices, smart contract standards, testing tools, or faucets, the ConsenSys Github has what you need to start building decentralized apps on the Ethereum blockchain now.
Creation of this list was spurred by product managers at ConsenSys who saw a need for better sharing of tools, development patterns, and components amongst both new and experienced blockchain developers. If you’re ready to delve into the wormhole, get scrolling! To stay updated on all things ConsenSys and Ethereum, sign up for the weekly newsletter and stay abreast of all the latest updates and news.
New developers Start Here!
- Solidity — The most popular smart contract language.
- Truffle — Most popular smart contract development, testing, and deployment framework. Install the CLI via NPM and start here to write your first smart contracts.
- Metamask — Chrome extension wallet to interact with Dapps.
- Truffle boxes — Packaged components for the Ethereum ecosystem
- EthHub.io — Comprehensive crowdsourced overview of Ethereum- its history, governance, future plans and development resources.
Developing Smart Contracts
Smart Contract Languages
- Solidity — Ethereum smart contracting language
- Bamboo — A morphing smart contract language
- Vyper — New experimental pythonic programming language
- LLL — Low-level Lisp-like Language
- Flint — New language under development with security features including asset types, state transition, and safe integers
- Truffle — Most popular smart contract development, testing, and deployment framework. The Truffle suite includes Truffle, Ganache, and Drizzle. Deep dive on Truffle here
- Embark — Framework for DApp development
- Waffle — Framework for advanced smart contract development and testing, small, flexible, fast (based on ethers.js)
- Dapp — Framework for DApp development, successor to DApple
- Populus — The Ethereum development framework with the most cute animal pictures
- Etherlime — ethers.js based framework for Dapp deployment
- Parasol — Agile smart contract development environment with testing, INFURA deployment, automatic contract documentation and more. It features a a flexible and unopinionated design with unlimited customizability
Integrated Developer Environments
Test blockchain networks
Test Ether faucets
Communicating with Ethereum
Frontend Ethereum APIs
- Web3Wrapper — Typescript Web3 alternative
- Ethereumjs — A collection of utility functions for Ethereum like ethereumjs-util and ethereumjs-tx
- flex-contract and flex-ether Modern, zero-configuration, high-level libraries for interacting with smart contracts and making transactions.
- ez-ens Simple, zero-configuration Ethereum Name Service address resolver.
- web3x — A TypeScript port of web3.js. Benefits includes tiny builds and full type safety, including when interacting with contracts.
- Drizzle — Redux library to connect a frontend to a blockchain
- Subproviders — Several useful subproviders to use in conjunction with Web3-provider-engine (including a LedgerSubprovider for adding Ledger hardware wallet support to your dApp)
- web3-react — React framework for building single-page Ethereum dApps
- Vortex — A Dapp-ready Redux Store. Smart and Dynamic background data refresh thanks to WebSockets. Works with Truffle and Embark.
Backend Ethereum APIs
- Web3.py — Python Web3
- Web3.php — PHP Web3
- Ethereum-php — PHP Web3
- Web3j — Java Web3
- Nethereum — .Net Web3
- Ethereum.rb — Ruby Web3
- Web3.hs — Haskell Web3
- KEthereum — Kotlin Web3
- Pyethereum — The Python core library of the Ethereum project
- Eventeum — A bridge between Ethereum smart contract events and backend microservices, written in Java by Kauri
- Ethereumex — Elixir JSON-RPC client for the Ethereum blockchain
- EthContract — A set of helper methods to help query ETH smart contracts in Elixir
Bootstrap/out of box tools
Ethereum ABI (Application Binary Interface) tools
- ABI decoder — library for decoding data params and events from Ethereum transactions
- ABI-gen — Generate Typescript contract wrappers from contract ABI’s.
- Ethereum ABI UI — Auto-generate UI form field definitions and associated validators from an Ethereum contract ABI
- headlong — type-safe Contract ABI and Recursive Length Prefix library in Java
- One Click dApp — Instantly create a dApp at a unique URL using the ABI.
- Truffle Pig — a development tool that provides a simple HTTP API to find and read from Truffle-generated contract files, for use during local development. Serves fresh contract ABIs over http.
Patterns & Best Practices
Patterns for Smart Contract Development
- Pantheon — Java client by PegaSys
- Geth — Go client
- Parity — Rust client
- Aleth — C++ client
- Pyethapp — Python client using pyethereum
- Trinity — Python client using py-evm
- Ethereumjs — JS client using ethereumjs-vm
- Ethereumj — Java client by the Ethereum Foundation
- Harmony — Java client by EtherCamp
- Seth — Seth is an Ethereum client tool — like a “MetaMask for the command line”
- Mustekala — Ethereum Light Client project of Metamask.
- Exthereum — Elixir client
- EWF Parity — Energy Web Foundation client for the Tobalaba test network
- Quorum — A permissioned implementation of Ethereum supporting data privacy by JP Morgan
- Mana — Ethereum full node implementation written in Elixir.
- IPFS — Decentralised storage and file referencing
- IPFS-Store — IPFS Storage service with added search capability
- OrbitDB — Decentralised database on top of IPFS
- TEMPORAL — Easy to use API into IPFS and other distributed/decentralised storage protocols
- Swarm — Distributed storage platform and content distribution service, a native base layer service of the Ethereum web3 stack
- Whisper — Communication protocol for DApps to communicate with each other, a native base layer service of the Ethereum web3 stack
- DEVp2p Wire Protocol — Peer-to-peer communications between nodes running Ethereum/Whisper
- Pydevp2p — Python implementation of the RLPx network layer
- Neufund — Smart Contract Watch — A tool to monitor a number of smart contracts and transactions
- Scout — A live data feed of the activities and event logs of your smart contracts on Ethereum
- Chainlyt — Explore smart contracts with decoded transaction data, see how the contract is used and search transactions with specific function calls
Other Miscellaneous Tools
- Truffle boxes — Packaged components for building DApps fast.
- Cheshire — A local sandbox implementation of the CryptoKitties API and smart contracts, available as a Truffle Box
- Solc — Solidity compiler
- Sol-compiler — Project-level Solidity compiler
- Solidity cli — Compile solidity-code faster, easier and more reliable
- Solidity flattener — Combine solidity project to flat file utility. Useful for visualizing imported contracts or for verifying your contract on Etherscan
- Sol-merger — Alternative, merges all imports into single file for solidity contracts
- eth-cli — A collection of CLI tools to help with ethereum learning and development
- Ethereal — Ethereal is a command line tool for managing common tasks in Ethereum
- Parity Signer — mobile app allows signing transactions
- py-eth — Collection of Python tools for the Ethereum ecosystem
- truffle-flattener — Concats solidity files developed under Truffle with all of their dependencies
- Decode — npm package which parses tx’s submitted to a local testrpc node to make them more readable and easier to understand
- TypeChain — Typescript bindings for Ethereum smartcontracts
- EthSum — A Simple Ethereum Address Checksum Tool
- PHP based Blockchain indexer — allows indexing blocks or listening to Events in PHP
- Node-Metamask — Connect to MetaMask from node.js
- Solidity-docgen — Documentation generator for Solidity projects
- Ethereum ETL — Export Ethereum blockchain data to CSV or JSON files
- prettier-plugin-solidity — Prettier plugin for formatting Solidity code
- EthToolbox — A web app with off-chain tools for Ethereum developers. EC recovery, address formatter, unit converter, hash functions, keys generator, etc.
Smart Contract Standards & Libraries
ERCs — The Ethereum Request for Comment repository
- ERC-20 — Original token contract for fungible assets
- ERC-721 — Token standard for non-fungible assets
- ERC-918 — Mineable Token Standard
- ERC-165 — Creates a standard method to publish and detect what interfaces a smart contract implements.
- ERC-725 — Proxy contract for key management and execution, to establish a Blockchain identity.
- ERC-173 — A standard interface for ownership of contracts
Popular Smart Contract Libraries
Developer Guides for 2nd Layer Infrastructure
- Ethereum Payment Channel — Ethereum Payment Channel in 50 lines of code
- µRaiden Documentation — Guides and Samples for µRaiden Sender/Receiver Use Cases
- Learn Plasma — Website as Node application that was started at the 2018 IC3-Ethereum Crypto Boot Camp at Cornell University, covering all Plasma variants (MVP/Cash/Debit)
- Plasma MVP — OmiseGO’s research implementation of Minimal Viable Plasma
- Plasma MVP Golang — Golang implementation and extension of the Minimum Viable Plasma specification
- Plasma Cash — Simple Plasma Cash implementation
Privacy / Confidentiality
- ZoKrates — A toolbox for zkSNARKS on Ethereum
- The AZTEC Protocol — Confidential transactions on the Ethereum network, implementation is live on the Ethereum main-net
Prebuilt UI Components
- ui.aragon.org — A React library including Dapp components
- components.bounties.network — A React library including Dapp components
- lorikeet.design — A React library including Dapp components
- ui.decentraland.org — A React library including Dapp components
- dapparatus — Reusable React Dapp components
- Metamask ui — Metamask React Components
Contributions are welcome!
Feel free to submit a pull request, with anything from small fixes to tools you’d like to add (or remove!). If adding a new tool, please add a brief description that you think new developers would understand.
- Projects that do not have a working product will not be added.
- Projects that are deprecated or no longer maintained will be removed.
- Projects that are paid/restricted services without open source code or developer reviews will be further vetted.
^Is the above fair? Share your input here — https://github.com/ConsenSysLabs/ethereum-developer-tools-list/pull/70