原文A Definitive List of Ethereum Developer Tools,感覺會用到留著
- 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.
- Infura — Scalable, secure, and reliable access to the Ethereum network.
Developer Tools
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
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
- 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
- 0xcert — JavaScript framework for building decentralized applications
Integrated Developer Environments
- Remix — Web IDE with built in static analysis, test blockchain VM.
- Superblocks Lab — Web IDE. Built in browser blochain VM, Metamask integration (one click deployments to Testnet/Mainnet), transaction logger and live code your WebApp among many other features.
- Atom — Atom editor with Atom Solidity Linter, Etheratom, autocomplete-solidity, and language-solidity packages
- Pragma — Very simple web IDE for solidity, and auto-generated interfaces for smart contracts.
- Vim solidity — Vim syntax file for solidity
- Visual Studio Code — Visual Studio Code extension that adds support for Solidity
- Intellij Solidity Plugin — Open-source plug-in for JetBrains IntelliJ Idea IDE(free/commercial) with syntax highlighting, formatting, code completion etc.
- YAKINDU Solidity Tools — Eclipse based IDE. Features context sensitive code completion and help, code navigation, syntax coloring, build in compiler, quick fixes and templates.
- Eth Fiddle — IDE developed by The Loom Network that allows you to write, compile and debug your smart contract. Easy to share and find code snippets.
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
- Pantheon Private Network — Run a private network of Pantheon nodes in a Docker container ** Orion — Component for performing private transactions by PegaSys ** Artemis — Java implementation of the Ethereum 2.0 Beacon Chain by PegaSys
- Cliquebait — Simplifies integration and accepting testing of smart contract applications with docker instances that closely resembles a real blockchain network
- 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
- Ethereum on Azure — Deployment and governance of consortium Ethereum PoA networks
- getho — DApp development platform including PoA private blockchain and Smart Contract testing tool.
- Ethereum on Google Cloud — Build Ethereum network based on Proof of Work
Test Ether faucets
Communicating with Ethereum
Frontend Ethereum APIs
- Web3.js — Javascript Web3
- Eth.js — Javascript Web3 alternative
- Ethers.js — Javascript Web3 alternative, useful utilities and wallet features
- 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
- Tasit SDK — A JavaScript SDK for making native mobile Ethereum dapps using React Native
- 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.
- Strictly Typed — Javascript alternatives
- elm-ethereum
- purescript-web3
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
- Truffle boxes — Packaged components for the Ethereum ecosystem
- Pantheon Private Network — Run a private network of Pantheon nodes in a Docker container
- 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
- The Chain Abstraction Layer — A flexible, modular library for developing disintermediated solutions across different blockchains
- Cheshire — A local sandbox implementation of the CryptoKitties API and smart contracts, available as a Truffle Box
- Aragon CLI — The Aragon CLI is used to create and develop Aragon apps
- ColonyJS — JavaScript client that provides an API for interacting with the Colony Network smart contracts.
- ArcJS — Library that facilitates javascript application access to the DAOstack Arc ethereum smart contracts.
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
- Dappsys: Safe, simple, and flexible Ethereum contract building blocks has solutions for common problems in Ethereum/Solidity, eg: Whitelisting, Upgradable ERC20-Token, ERC20-Token-Vault, Authentication (RBAC), provides building blocks for the MakerDAO or The TAO. It should be consulted before creating own, untested, solutions. Usage is described in Dapp-a-day 1–10 and Dapp-a-day 11–25
- OpenZeppelin: An open framework of reusable and secure smart contracts in the Solidity language. Likely the most widely-used libraries and smart contracts. It is Similar to Dappsys, but more integrated into Truffle framework
- Blog about Best Practices with Security Audits
- Advanced Workshop with Assembly
- Simpler Ethereum Multisig — especially section Benefits
- CryptoFin Solidity Auditing Checklist — A checklist of common findings, and issues to watch out for when auditing a contract for a mainnet launch.
- aragonOS: A smart contract framework for building DAOs, Dapps and protocols
- Upgreadability: Smart contracts can be upgraded to a newer version
- Permission control: By using the
auth
andauthP
modifiers, you can protect functionality so only other apps or entities can access it - Forwarders: aragonOS apps can send their intent to perform an action to other apps, so that intent is forwarded if a set of requirements are met
Upgradebility
- Blog von Elena Dimitrova, Dev at colony.io
- https://blog.colony.io/writing-more-robust-smart-contracts-99ad0a11e948
- https://blog.colony.io/writing-upgradeable-contracts-in-solidity-6743f0eecc88
- Researchblog von Aragon
- Library driven development
- Advanced Solidity code deployment techniques
- OpenZeppelin on Proxy Libraries
Infrastructure
Ethereum Clients
- 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.
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.
- 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
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
- Sol-profiler — Alternative and updated Solidity smart contract 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
- Tenderly CLI — Speed up your development with human readable stack traces
- Solhint — Solidity linter that provides security, style guide and best practice rules for smart contract validation
- Ethlint — Linter to identify and fix style & security issues in Solidity, formerly Solium
- Decode — npm package which parses tx’s submitted to a local testrpc node to make them more readable and easier to understand
- truffle-assertions — An npm package with additional assertions and utilities used in testing Solidity smart contracts with truffle. Most importantly, it adds the ability to assert whether specific events have (not) been emitted.
- Psol — Solidity lexical preprocessor with mustache.js-style syntax, macros, conditional compilation and automatic remote dependency inclusion.
- solpp — Solidity preprocessor and flattener with a comprehensive directive and expression language, high precision math, and many useful helper functions.
- Decode and Publish — Decode and publish raw ethereum tx. Similar to https://live.blockcypher.com/btc-testnet/decodetx/
- Doppelgänger — a library for mocking smart contract dependencies during unit testing.
- rocketh — A simple lib to test ethereum smart contract that allow to use whatever web3 lib and test runner you choose.
Security Tools
- MythX — Security verification platform and tools ecosystem for Ethereum developers
- Mythril Classic — Open-source EVM bytecode security analysis tool
- Oyente — Alternative static smart contract security analysis
- Securify — Security scanner for Ethereum smart contracts
- SmartCheck — Static smart contract security analyzer
- 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
- Slither — A Solidity static analysis framework
- Adelaide — The SECBIT static analysis extension to Solidity compiler
- 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
- Free Smart Contract Security Audit — Free smart contract security audits from Callisto Network
Monitoring
- 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.
- Gitcoin — Do work, get work done, open source.
- 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
- RLP — Recursive Length Prefix Encoding in JavaScript
- 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
- 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 — 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
- Purser — JavaScript universal wallet tool for Ethereum-based wallets. Supports software, hardware, and Metamask — brings all wallets into a consistent and predictable interface for dApp development.
- 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
- Tokens
- 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
- Zeppelin — Contains tested reusable smart contracts like SafeMath and ZeppelinOS library for smart contract upgradeability
- cryptofin-solidity — A collection of Solidity libraries for building secure and gas-efficient smart contracts on Ethereum.
- 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. Contains aragonOS smart contract frameworkwith focus on upgradeability and governance
- ARC — an operating system for DAOs and the base layer of the DAO stack.
- 0x — DEX protocol
- Token Libraries with Proofs — Contains correctness proofs of token contracts wrt. given specifications and high-level properties
Developer Guides for 2nd Layer Infrastructure
Scalability
Payment/State Channels
- Ethereum Payment Channel — Ethereum Payment Channel in 50 lines of code
- µRaiden Documentation — Guides and Samples for µRaiden Sender/Receiver Use Cases
Plasma
- 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
Side-Chains
Privacy / Confidentiality
zkSNARKs
- 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
- Rimble Design System––Adaptable components and design standards for decentralized applications.
- 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