Awesome Ethereum Virtual Machine - Go语言中文社区

Awesome Ethereum Virtual Machine


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 Awesome

Here is how to contribute.

Table of Contents generated with DocToc

Specification

  • Yellow Paper
    • A terse specification of EVM and Ethereum blocks

Illustration

Tutorials

Tests

EVM Implementations

Live on Main Network

  • 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

Other Implementations

Programming Languages that Compile into EVM

  • Solidity
    • The most popular programming language for Ethereum contracts
    • Awesome Solidity
    • The LLL compiler is also in the same repository
  • Vyper
    • A language with overflow-checking, numeric units but without unlimited loops
  • Pyramid Scheme (experimental)
  • Flint
    • A language with several security features: e.g. asset types with a restricted set of atomic operations
  • LLLL
    • An LLL-like compiler being implemented in Isabelle/HOL
  • HAseembly-evm
    • An EVM assembly implemented as a Haskell DSL
  • Bamboo (experimental)   - A language without loops but with explicit constructor invocation at the end of every call

Programming Languages that Compile zk-SNARK Circuits and Proofs

  • Zokrates
  • snarky
    • An OCaml front-end for writing R1CS SNARKs (parametrized over the backend SNARK libraries)
    • Shallowly embedded DSL that can be compiled into SNARK circuits
    • The verifier is an OCaml function, so some more work is necessary before using it on Ethereum
  • jsnark
    • A Java front-end for writing R1CS SNARKs

Debuggers

Code Analyzers

  • Echidna
    • A fuzzer on EVM that also takes Solidity input
    • Able to fuzz a program with sequences of multiple transactions
  • MAIAN
    • An automatic tool that detects trace vulnerabilities (Greedy, Prodigal and Suicidal) with depth-first search of symbolic execution of multiple invocations
  • 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
    • Powered by laser-ethereum
  • porosity
    • A reverse enginering tool, a disassembler, an ABI function detector and a decompiler that also highlights vulnerabilities
  • Manticore
    • A symtolic execution engine that can generate inputs to cover codepaths (asciicast), which also comes with a Python API
  • evmdis
    • A disassembler for EVM code
  • ethersplay
  • 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

Improvement Proposals

  • 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

Related Resources


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/omnispace/article/details/80345291
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-05-07 22:29:29
  • 阅读 ( 1841 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢