Parallel EVM inspired by BlockSTM
See the codeGrevm is a Block-STM-inspired optimistic parallel EVM execution engine built on revm. It combines multi-version state, read-set validation, and dependency-aware scheduling while preserving block-order outcomes and state.
See Use Grevm with reth for the public API and integration model.
Skipped outcomes; fatal errors retain the
successfully committed prefix.GrevmConfig::concurrency_level controls the number of speculative workers. The finality and
ordered-commit loops are additional coordinator threads.
The following results and diagram describe the Grevm 2.1 release. Static hints, Task Groups, and the original lock-free DAG are historical designs and do not describe the current scheduler.

Core library tests run without optional features:
cargo test
The integration suites, fixtures, and benchmarks use test-utils:
cargo test --features test-utils
This runs the library unit tests plus the integration suites (erc20, native_transfers,
uniswap, eip-7702, delegated_safety, and mainnet replay). See
Testing & Benchmarking for the full guide, including how to replay real mainnet
blocks (EIP-7702 included) and the available environment-variable knobs.
To reproduce the synthetic gigagas benchmark:
JEMALLOC_SYS_WITH_MALLOC_CONF="thp:always,metadata_thp:always" \
NUM_EOA=<num_accounts> HOT_RATIO=<hot_ratio> DB_LATENCY_US=<latency_in_us> \
cargo bench --features test-utils --bench gigagas
Replace <num_accounts>, <hot_ratio>, and <latency_in_us> with your desired parameters. There
is also a continuous benchmark that runs merged real-mainnet "big blocks"; see
Testing & Benchmarking.
For historical design context and benchmark analysis, refer to the versioned technical reports. Some implementation details in those reports, such as static dependency hints, describe their respective releases rather than the current code.
Rust
100.0%
Parallel EVM inspired by BlockSTM
See the codeGrevm is a Block-STM-inspired optimistic parallel EVM execution engine built on revm. It combines multi-version state, read-set validation, and dependency-aware scheduling while preserving block-order outcomes and state.
See Use Grevm with reth for the public API and integration model.
Skipped outcomes; fatal errors retain the
successfully committed prefix.GrevmConfig::concurrency_level controls the number of speculative workers. The finality and
ordered-commit loops are additional coordinator threads.
The following results and diagram describe the Grevm 2.1 release. Static hints, Task Groups, and the original lock-free DAG are historical designs and do not describe the current scheduler.

Core library tests run without optional features:
cargo test
The integration suites, fixtures, and benchmarks use test-utils:
cargo test --features test-utils
This runs the library unit tests plus the integration suites (erc20, native_transfers,
uniswap, eip-7702, delegated_safety, and mainnet replay). See
Testing & Benchmarking for the full guide, including how to replay real mainnet
blocks (EIP-7702 included) and the available environment-variable knobs.
To reproduce the synthetic gigagas benchmark:
JEMALLOC_SYS_WITH_MALLOC_CONF="thp:always,metadata_thp:always" \
NUM_EOA=<num_accounts> HOT_RATIO=<hot_ratio> DB_LATENCY_US=<latency_in_us> \
cargo bench --features test-utils --bench gigagas
Replace <num_accounts>, <hot_ratio>, and <latency_in_us> with your desired parameters. There
is also a continuous benchmark that runs merged real-mainnet "big blocks"; see
Testing & Benchmarking.
For historical design context and benchmark analysis, refer to the versioned technical reports. Some implementation details in those reports, such as static dependency hints, describe their respective releases rather than the current code.
Rust
100.0%