Reth v2.9.0 replaces revm with evm2 as reth's EVM (#25002). This is a breaking change for SDK users who build on reth's EVM, executor or inspector types. Node operators don't need to change any config.
The release also fixes engine, RPC, storage and pipeline-unwind bugs, adds snap sync progress metrics and JIT support in reth-bb, and makes builds noticeably lighter by cutting monomorphization and unused dependencies. evm2 makes block execution about 10% faster than revm. On 500 mainnet blocks, execution throughput rose +10.0% and median block execution time fell 10.5%. On 300M-gas big blocks, throughput rose 9.3%, and 6.6% with BALs.
Action Required
SDK users: revm types are replaced by evm2 (evm2, evm2-inspectors, evm2-jit). Custom EVMs, precompiles, inspectors and executors need porting to evm2's APIs.
Backwards Compatibility
Important
You can downgrade to v2.8.1.
Update Priority
| User Class | Priority |
|---|---|
| Payload Builders | Medium |
| Non-Payload Builders | Medium |
Breaking Changes
SDK
- Replaced revm with evm2 across execution, RPC and inspectors (#25002, #28127, #28169)
- RPC crates no longer depend on
reth-node-api(#28145)
Features
Sync
- Snap sync now reports progress metrics (#28059)
SDK
- reth-bb supports the evm2 JIT (#28140)
Performance
- Faster builds and smaller binaries: less per-table monomorphization in db commands and viewers, type-erased task spawns, and network and config code compiled once (#28111, #28142, #28112, #28141, #28144, #28143)
- DB table handles and metrics are indexed by table position (#28134)
- Lighter dependency tree: smolgen replaces vergen, OTLP builds only with the
otlpfeature, RocksDB drops unused codecs and jemalloc (#28122, #28124, #28147, #28152, #28108, #28109, #28119, #28110)
Bug Fixes
Engine & EVM
- The precompile cache now survives big-block segments (#28162)
- Recreated account state stays in the execution cache (#28148)
RPC
- Call allowance now reserves blob fees (#28113)
- Proof responses match execution-apis (#28091)
- The shared HTTP/WS server stops only once (#28120)
Storage & Pipeline
- Interrupted pipeline unwinds resume (#28067)
- Safe-no-sync rollback is bounded by a sync period (#28163)
- State import writes the right slots and history lookups (#28053)
- Static-file read errors are propagated, and unwind errors name the segment and anchor (#28064, #28164)
- Snapshot block counts and downloads line up (#28058)
Trie
- Proof targets are grouped by child (#28085)
Networks
- Amsterdam is unscheduled on Hoodi (#28089)
Other
- Task worker state cleans itself up (#28069)
- tokio 1.53.3 and an updated webpki that distrusts emSign (#28101, #28050)
Dependencies
- evm2
f93318f(git), evm2-inspectors and evm2-jit at the same rev - alloy-primitives 1.6.1, alloy-consensus / alloy-provider 2.5.0, alloy-hardforks 0.4.11
Binaries
See pre-built binaries documentation.
The binaries are signed with the PGP key: 50FB 7CC5 5B2E 8AFA 59FE 03B7 AA5E D56A 7FBF 253E
Reth
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | reth-v2.9.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | reth-v2.9.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | reth-v2.9.0-aarch64-apple-darwin.tar.gz | PGP Signature | |
| Docker | paradigmxyz/reth | - |
