Repository navigation
Summary
Reth v2.11.0 is a hardening and performance release. RPC calls that can do unbounded work are now capped or cancellable (eth_callMany, trace_callMany, debug_traceCallMany, eth_getProof, mev_simBundle, eth_simulateV1), and the release brings a broad set of transaction pool, P2P and storage correctness fixes. EIP-7702 authorization recovery is parallelized, P2P skips decoding responses it never asked for, and overlay provider setup is cheaper.
SDK users: Ethereum block execution now runs on evm2::block, and reth's executor types are thin adapters over it (see Breaking Changes).
Action Required
-
Removed no-op CLI flags. The node now refuses to start if you still pass
--engine.legacy-state-root,--engine.caching-and-prewarming,--engine.parallel-sparse-trie,--engine.disable-parallel-sparse-trie,--engine.precompile-cacheor--rpc-cache.max-headers(alias--rpc-cache.max-envs). Drop them from your config (#28369) -
With
--instance Nand no explicit--auth-ipc.path, the Engine API IPC socket is now/tmp/reth_engine_api.ipc-N. Set--auth-ipc.pathif your consensus client expects the old path (#28257) -
Explicit IPC socket permissions are now validated at startup, and an invalid mode is a startup error. On platforms that can't set the mode before binding (including macOS), explicit permissions fail startup (#28326)
-
eth_callMany,trace_callManyanddebug_traceCallManynow allow at most 1,024 calls and share one--rpc.gascapbudget across the request. No additional call starts more than five seconds after the first. Previously successful requests may now fail; callers should review request sizes and gas budgets (#28314) -
eth_getProofnow allows at most 1,024 storage keys.eth_getMultiProofallows at most 1,024 targets and 1,024 storage keys in total. Requests exceeding these limits fail with invalid params (#27716)
Backwards Compatibility
Verification pending: Database migration and resync requirements, and supported downgrade versions, must be confirmed against the final v2.11.0 release build before publication.
Update Priority
| User Class | Priority |
|---|---|
| Payload Builders | High |
| Non-Payload Builders | High |
Breaking Changes
SDK
- Ethereum block execution moved into
evm2::block:BundleState,BlockState/StateUpdate, the block execution errors,GasOutput/CommitChangesand the Ethereum executor now come from evm2, andEthBlockExecutorwrapsevm2::block::ethereum::EthBlockExecutor.EthApiError::MuxTracerErrornow holds the error message (#28238) MessageInputno longer dereferences to bytes. Custom precompile integrations should read inputs throughEvm::message_input(#28413)- Discovery dependencies moved to discv5 0.12, ENR 0.14 and secp256k1 0.33. Downstream integrations using public discovery/key types must update their dependency versions and key APIs (#28289)
EnrCombinedKeyWrapperimplementsTryFrom<Enr<SecretKey>>instead ofFrom, andDiscv5::add_nodereturnsError::InvalidEnrfor records the discv5 key backend rejects (#28345)RpcServerArgs::auth_ipc_pathis nowOption<String>; read the effective endpoint withauth_ipc_path()(#28257)schnellrucaches are replaced withreth-lru(#28291)- Removed the unused
DEFAULT_HEADER_CACHE_MAX_LENconstant (#28369)
Features
Performance
- Parallelized EIP-7702 authorization recovery (#28307)
- P2P skips decoding responses that weren't requested (#28403)
- Reduced overlay provider setup and state-sharing overhead (#28373, #28333)
- The engine's balance tracker only steps on the opcodes it needs (#28334)
- Replaced
schnellruwith the fasterreth-lrucaches (#28291) - Reduced RPC serialization and authentication overhead (#28295, #28294)
RPC
- Block transaction replay now runs through the block executor (#28266)
Transaction Pool
- Subscribers can follow events of transactions held outside the pool (#28387)
Bug Fixes
RPC
mev_simBundlework is bounded (#28386)eth_simulateV1stops once its request is dropped (#28312), checks cancellation once per simulated block (#28390) and picks each simulated block's fork from its timestamp (#28431)- The default
eth_callgas limit is capped, so calls withoutgasno longer fail withintrinsic gas too highunder--rpc.gascap maxon Amsterdam (#28315) - The builder validation API defaults to a 3-block validation window;
--rpc.eth-proof-windowcan only widen it (#28424) eth_sendTransactionserializes nonce assignment (#28418)- Transactions with conflicting fee fields are rejected (#28324)
- Consensus errors map to invalid params (#28398)
testing_buildBlockV1skips blob transactions (#28379)- Namespace checks honor the default HTTP, WS and IPC module sets (#28327)
debug_intermediateRootsreplays bad blocks (#28331)- Fixed a tracer panic on frameless logs (#28330)
- Restored depth-zero root handling in tracers and tracing of unlisted precompiles as contracts (#28389)
- Retained receipt history is reported correctly (#28201)
reth_getBalanceChangesInBlockomits account creation and deletion when the balance remains zero (#28282)
Engine, EVM & Trie
- Closed the SSZ gaps from execution-apis#885 (#28417)
- Invalid block hook output on disk is capped (#28286) and invalid block diagnostics run off the engine thread (#28284)
- The EIP-8037 total transaction gas cap is published to the pool (#28353)
- Request system calls run without a code check (#28311)
- Configured JIT settings apply when the JIT is enabled at runtime (#28374)
- Range proof node counts are capped (#28375)
- Redundant proof requests are suppressed (#28365)
- A panicking proof job now sends an error instead of hanging (#28313)
- Bumped alloy-trie to 0.9.9 (#28367)
Transaction Pool
- Transactions exceeding the local size limit remain rejected, but no longer penalize the relaying peer (#28355)
- The blob replacement overdraft check runs for head replacements (#28356)
- The validator head refreshes on deep canonical commits (#28359)
- Blob store cleanup runs on every finalized block advance (#28357)
- Same-nonce replacement works for senders at slot capacity (#28358)
- Local senders are skipped when selecting pending eviction candidates (#28352)
- The tx fee cap applies based on submission origin (#28354)
P2P
- Banned and untrusted inbound peers are rejected before session activation (#28360)
- Shared capabilities that overflow the message ID space are rejected (#28414)
- Malformed disconnect payloads are bounded (#28280)
- The satellite mux eth send queue is bounded (#28381)
- Snap ranges are served off the eth handler (#28378)
- Disconnecting peers stay disconnected on repeated removal (#28423)
- Re-announcements from peers that failed to deliver a hash are ignored (#28362), and hash fetching moves past the eviction fallback search (#28361)
- Pending sessions and the listener get a turn under load (#28332)
netrestrictapplies to startup peers (#28198)- DNS discovery retries links whose initial root lookup failed (#28346) and handles whitespace in entries (#28310)
- Discv5 ENR conversion no longer panics on unsupported key encodings (#28345)
- The status payload is truncated in handshake decode logs (#28322)
Storage & Pruning
- Stages unwind on unrecoverable senders (#28420)
- Fixed a lock inversion in the MDBX read transaction timeout monitor (#28254), and the monitor stops when the environment is dropped (#28404)
- Snap trie reverts are no longer cached (#28401)
- Snap ranges are refused on unverified state (#28392)
- Interrupted genesis initialization resumes (#28376)
- Static file truncation is deferred on reorg (#28370)
- The pruner caps the ExEx height at the persisted tip (#28325)
CLI & Node
- The Unix IPC socket mode is set before bind, and invalid modes fail startup (#28326)
--instancesuffixes the default Engine API IPC path (#28257)--toblock is re-executed (#28269)- Zero blocks per archive is rejected (#28328)
Dependencies
- evm2
66687c1 - alloy-* 2.5.0
- alloy-primitives 1.6.1
- alloy-trie 0.9.9
- discv5 0.12, ENR 0.14, secp256k1 0.33
Full changelog: v2.10.1...v2.11.0 (available when the v2.11.0 tag is published).
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.11.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | reth-v2.11.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | reth-v2.11.0-aarch64-apple-darwin.tar.gz | PGP Signature | |
| Docker | paradigmxyz/reth | - |
