/ethereum-developer-tools-list

A guide to available tools and platforms for developing on Ethereum.

Ethereum Developer Tools List

A guide to available tools, components, patterns, and platforms for developing applications on Ethereum.

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.

This resource is meant to be focused on developer tools, but the repo also includes:

Contributions are welcome!

Feel free to submit a pull request, with anything from small fixes to tools you'd like to add. If adding a new tool, please add a brief description that you think new developers would understand.

Many thanks to the 20+ contributors including @corbpage of Meridio for the idea, @pakaplace for expanding and curating, and @jpantunes for restructuring the list in a more logical way.

  • 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 - Consensys#70

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

Developer Tools

Developing Smart Contracts

Smart Contract Languages

  • Solidity- Ethereum smart contracting language
  • Bamboo - A morphing smart contract language
  • Vyper - New experimental programming language
  • LLL - Low-level Lisp-like Language

Frameworks

  • 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
  • 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
  • Cliquebait - Simplifies integration and accepting testing of smart contract applications with docker instances that closely resembles a real blockchain network

IDEs

Test blockchain networks

  • Ganache - App for test Ethereum blockchain with visual UI and logs
  • Kaleido - Use Kaleido for spinning up a consortium blockchain network. Great for PoCs and testing
  • Local Raiden - Run a local Raiden network in docker containers for demo and testing purposes
  • Private networks deployment scripts - Out-of-the-box deployment scripts for private PoA networks
  • Local Ethereum Network - Out-of-the-box deployment scripts for private PoW networks

Test Ether faucets

Communicating with Ethereum

Frontend Ethereum APIs

Backend Ethereum APIs

Bootstrap/out of box tools

  • Truffle boxes - Packaged components for the Ethereum ecosystem
  • Local Raiden - Run a local Raiden network in docker containers for demo and testing purposes
  • Private networks deployment scripts - Out-of-the-box deployment scripts for private PoA networks
  • Parity Demo-PoA Tutorial - Step-by-Step tutorial for building a PoA test chain with 2 nodes with Parity authority round consensus
  • Local Ethereum Network - Out-of-the-box deployment scripts for private PoW networks
  • Kaleido - Use Kaleido for spinning up a consortium blockchain network. Great for PoCs and testing
  • Cheshire - A local sandbox implementation of the CryptoKitties API and smart contracts, available as a Truffle Box

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

Patterns & Best Practices

Patterns for Smart Contract Development
Upgradebility

Infrastructure

Ethereum Clients

Storage

  • IPFS - Decentralised storage and file referencing
    • IPFS-Store - IPFS Storage service with added search capability
    • OrbitDB - Decentralised database on top of IPFS
    • JS IPFS API - A client library for the IPFS HTTP API, implemented in JavaScript.
  • Swarm - Distributed storage platform and content distribution service, a native base layer service of the Ethereum web3 stack

Messaging

  • 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

Testing Tools

  • Solidity code coverage - Solidity code coverage tool
  • Solidity coverage - Alternative code coverage for Solidity smart-contracts
  • Solidity function profiler - Solidity contract function profiler
  • Espresso - Speedy, parallelised, hot-reloading solidity test framework
  • Eth tester - Tool suite for testing Ethereum applications
  • Cliquebait - Simplifies integration and accepting testing of smart contract applications with docker instances that closely resembles a real blockchain network
  • Hevm - The hevm project is an implementation of the Ethereum virtual machine (EVM) made specifically for unit testing and debugging smart contracts
  • Ethereum graph debugger - Solidity graphical debugger
  • Solium - Linter to identify and fix style & security issues in Solidity
  • Decode - npm package which parses tx's submitted to a local testrpc node to make them more readable and easier to understand

Security Tools

  • Mythril - Static smart contract security analysis
  • Oyente - Alternative static smart contract security analysis
  • Securify - Security scanner for Ethereum smart contracts
  • Porosity - Decompiler and Security Analysis tool for Blockchain-based Ethereum Smart-Contracts
  • Ethersplay - EVM disassembler
  • Evmdis - Alternative EVM disassembler
  • Hydra - Framework for cryptoeconomic contract security, decentralised security bounties
  • Solgraph - Visualise Solidity control flow for smart contract security analysis
  • Manticore - Symbolic execution tool on Smart Contracts and Binaries
  • Solidity security blog - Comprehensive list of known attack vectors and common anti-patterns
  • Awesome Buggy ERC20 Tokens - A Collection of Vulnerabilities in ERC20 Smart Contracts With Tokens Affected

Monitoring

  • Neufund - Smart Contract Watch - A tool to monitor a number of smart contracts and transactions
  • Supermax - A live data feed of the activities and event logs of your smart contracts on Ethereum

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
  • RLP - Recursive Length Prefix Encoding in JavaScript
  • Ethereal - Ethereal is a command line tool for managing common tasks in Ethereum
  • Eth crypto - Cryptographic javascript-functions for Ethereum and tutorials to use them with web3js and solidity
  • Parity Signer - mobile app allows signing transactions
  • [py-eth](http://www.py eth.com) - 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

Smart Contract Standards & Libraries

ERCs - The Ethereum Request for Comment repository

  • Tokens
    • ERC-20 - Original token contract for fungible assets
    • ERC-721 - Token standard for non-fungible assets
  • 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

  • Zeppelin - Contains tested reusable smart contracts like SafeMath and ZeppelinOS library for smart contract upgradeability
  • Modular Libraries - A group of packages built for use on blockchains utilising the Ethereum Virtual Machine
  • DateTime Library - A gas-efficient Solidity date and time library
  • Aragon - DAO protocol
  • 0x - DEX protocol

Developer Guides for 2nd Layer Infrastructure

Scalability

Payment/State Channels

Plasma

  • 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

Side-Chains

Privacy

zkSNARKs
  • ZoKrates - A toolbox for zkSNARKS on Ethereum