A curated list of resources on the Ethereum Virtual Machine (EVM), which is the virtual machine executed on the Ethereum network.
Not listed there yet, but in the spirit of
Here is how to contribute.
Table of Contents generated with DocToc
- Specification
- Illustration
- Tests
- EVM Implementations
- Programming Languages that Compile into EVM
- Debuggers
- Code Analyzers
- Improvement Proposals
- Tutorials
- Related Resources
- License of This List
- Yellow Paper
- A terse specification of EVM and Ethereum blocks
- A detailed illustration of the Ethereum Virtual Machine
- The illustration shows the contents of blocks and block headers faithfully
- Consensus test suite
- EVM implementations can be tested against this test suite
- go-ethereum
- A popular Ethereum client with its own EVM implementation (core/vm directory)
- Parity in Rust
- Another popular Ethereum client with its own EVM implementation (ethcore directory)
- cpp-ethereum
- An Ethereum client that generates the consensus test suite (libevm/VM.cpp)
- Pyethereum in Python
- Another client with probably the best readable EVM implementation (ethereum/vm.py)
- Py-EVM in Python
- An alternate Python implementation designed to be highly configurable and modular.
- EthereumJ in Java
- A client with its own EVM implementation
- eth-isabelle
- An EVM implementation for theorem provers
- Modeling EVM in the K framework (whitepaper)
- An EVM implementation for K framework
- hsevm
- An EVM implementation written in Haskell with debugging in mind
- Burrow
- An EVM implementation in Go extended with a native name registry and permissioning layer
- Solidity
- The most popular programming language for Ethereum contracts
- Awesome Solidity
- The LLL compiler is also in the same repository
- Viper
- A language with overflow-checking, numeric units but without unlimited loops
- Bamboo
- A language without loops but with explict constructor invocation at the end of every call
- EthSharp
- A C# compiler for Ethereum smart contracts
- REMIX
- An IDE containing an EVM code debugger
- debug_traceTransaction method
- An instruction-wise trace information provided by go-ethereum
- Ethereum Function Signature Database
- A database for deciphering
0x165ffd10
intorestart(bytes32,bytes32)
.
- A database for deciphering
- Mythril
- A blockchain exploration tool that indexes all contracts on the network, containing a disassembler, an ABI function detector and a control flow analyzer.
- Comes with a --fire-laser option
- porosity
- A reverse enginering tool, a disassembler, an ABI function detector and a decompiler that also highlights vulnerabilities
- evmdis
- A disassembler for EVM code
- Securify
- A tool that strives to achieve no false-negatives
- The implementation seems not public as of now
- Oyente
- An automatic EVM code analyzer based on symbolic execution and Z3 SMT solver
- Dr. Y's Ethereum Contract Analyzer
- A symbolic executor for EVM code
- Ethereum Improvement Proposals
- A portal for EVM & Ethereum improvements
- The soonest changes are listed in the README
- EVM 1.5
- A proposal to tame jumps so that a linear-time scan can determine stack layouts
- eWASM
- A proposal to use a WebAssembly for Ethereum contract execution
- CoinCulture's Guide to the EVM
- A hands on guide to understanding how the EVM works, with examples written in raw byte-code and solidity
Awesome Ethereum Virtual Machine
Written in 2017 by Yoichi Hirai i@yoichihirai.com
[other author/contributor lines as appropriate]
To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see http://creativecommons.org/publicdomain/zero/1.0/.