• Stars
    star
    839
  • Rank 54,338 (Top 2 %)
  • Language
  • License
    Creative Commons ...
  • Created over 7 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ethereum Virtual Machine Awesome List

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
  • Py-EVM in Python
    • A Python implementation designed to be highly configurable and modular and compliant with the Ethereum test suite, work is in progress on it to run a full node and develop sharding.
  • EthereumJ in Java
    • A client with its own EVM implementation
  • For more, see here.

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

License of This List

Awesome Ethereum Virtual Machine

Written in 2017 by Yoichi Hirai [email protected]

[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/.

More Repositories

1

bamboo

Bamboo see https://github.com/cornellblockchain/bamboo
OCaml
324
star
2

ethereum-formal-verification-overview

The start page about my efforts around smart contract verification
298
star
3

eth-isabelle

A Lem formalization of EVM and some Isabelle/HOL proofs
Isabelle
236
star
4

coq2rust

Coq to Rust program extraction. The whole tree is on the original Coq code base.
OCaml
214
star
5

evmverif

An EVM code verification framework in Coq
Coq
44
star
6

dry-analyzer

Dr. Y's Ethereum Contract Analyzer
Coq
42
star
7

vmtrace_visualizer

A program that annotates a vm trace with dataflow information
Ruby
35
star
8

ethereum-word-list

Words are Hard: Defining Common Terms in the Ethereum / Crypto Space
22
star
9

gohantabeyo

Gohantabeyo is a web site where people can make a wish whom they want to eat out with. If the other makes a similar wish, their wishes are told to both.
Ruby
15
star
10

cbc_casper

Isabelle formalization of binary consensus
Isabelle
8
star
11

record

6
star
12

neta

neta notes
HTML
5
star
13

rlp-ocaml

RLP serialization for OCaml
OCaml
4
star
14

practice

JavaScript
3
star
15

kissdb-rust

kissdb ported to rust
Rust
3
star
16

sql2lisp

Verilog
3
star
17

verbose-code-reading

Verboselly Logged Code Reading
2
star
18

token_why3

A Why3 modelling of a token contract
Coq
2
star
19

surreal

surreal numbers in Coq
Verilog
2
star
20

proofmarket

2
star
21

kietter

kietter
Ruby
2
star
22

js-graph-it-with-containers

a fork of http://js-graph-it.sourceforge.net/
JavaScript
2
star
23

ethereum-formal-list

A list of formal method applications on smart contracts
1
star
24

undecidable

undecidability club's web page
1
star
25

async_lazy_rpc

Haskell
1
star
26

taocp_in_coq

taocp_in_coq
1
star
27

htodo

a todo manager
Haskell
1
star
28

CLTT

Verilog
1
star
29

lifepicker

A randomized activity picker for your 5 minites
Python
1
star
30

waitfree

A combinator library for asynchronous waitfree computation among forkIO threads.
Haskell
1
star
31

haskell-twitter

1
star
32

thesis

1
star
33

game

combinatorial game
Verilog
1
star
34

ConcurrentSet

Haskell
1
star
35

pirapira.github.io

HTML
1
star
36

salary-nego

Salary negotiation app on the Nexus zkVM
Rust
1
star