MCPcopy Index your code
hub / github.com/rust-ethereum/evm

github.com/rust-ethereum/evm @evm-v1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release evm-v1.1.0 ↗ · + Follow
886 symbols 1,703 edges 70 files 262 documented · 30% 7 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Rust EVM

Build Status License Matrix Crates.io Version docs.rs

Rust EVM, also known as SputnikVM, is a flexible Ethereum Virtual Machine interpreter that can be easily customized.

Status

The Rust EVM project has a long history dating back to the initial implementation in 2017 (when it was called SputnikVM). It has gone through multiple rewrites over the years to accommodate for different requirements, when we successfully tested it by integrating Geth to sync the mainnet.

The current rewrite is used in production for the Frontier project (the Ethereum-compatibility layer for Polkadot). We pass the Ethereum test suite. PRs for fixes are welcomed.

Features

  • Standalone - can be launched as an independent process or integrated into other apps.
  • Flexible - can be customized and extended to support additional opcodes, additional precompiles, different gasometers or other more exotic use cases.
  • Portable - support no_std, and can be used in different environments like in WebAssembly.
  • Fast - we of course try to be fast!
  • written in Rust, can be used as a binary, cargo crate or shared library.

Dependencies

Rust EVM requires at least rustc 1.75.

Documentation

License

Apache 2.0

Extension points exported contracts — how you extend this code

Etable (Interface)
An etable "set" that can be evaluated. This is the generic trait to support all types of dispatching strategies (via `ma [7 …
interpreter/src/etable.rs
PurePrecompile (Interface)
(no doc) [14 implementers]
precompile/src/lib.rs
PrecompileSet (Interface)
A set of precompiles. [2 implementers]
src/standard/invoker/resolver.rs
GasMutState (Interface)
Mutable [GasState]. This simply allows recording an arbitrary gas. [1 implementers]
src/gasometer.rs
TransactionalBackend (Interface)
Backend with layers that can transactionally be committed or discarded. [1 implementers]
src/backend/mod.rs
Invoker (Interface)
An invoker, responsible for pushing/poping values in the call stack.
src/invoker.rs
FutureInterpreterAction (Interface)
(no doc) [1 implementers]
future/src/lib.rs
RuntimeEnvironment (Interface)
(no doc) [6 implementers]
interpreter/src/runtime.rs

Core symbols most depended-on inside this repo

as_usize
called by 311
interpreter/src/opcode.rs
push
called by 174
interpreter/src/machine/stack.rs
peek
called by 56
interpreter/src/machine/stack.rs
len
called by 53
interpreter/src/machine/stack.rs
get
called by 45
interpreter/src/machine/memory.rs
mark_hot
called by 29
src/backend/overlayed.rs
address
called by 20
precompile/src/lib.rs
low_usize
called by 18
interpreter/src/uint/ruint.rs

Shape

Method 439
Function 308
Class 89
Enum 30
Interface 20

Languages

Rust100%

Modules by API surface

interpreter/src/eval/mod.rs77 symbols
src/backend/overlayed.rs51 symbols
src/standard/config.rs42 symbols
interpreter/tests/usability.rs40 symbols
future/tests/usability.rs40 symbols
features/evm64/src/eval.rs39 symbols
src/standard/gasometer/mod.rs31 symbols
interpreter/src/eval/system.rs31 symbols
jsontests/src/types.rs30 symbols
interpreter/src/runtime.rs25 symbols
src/backend/in_memory.rs23 symbols
precompile/src/bn128.rs23 symbols

For agents

$ claude mcp add evm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page