Reth v2.11.0
- Version
v2.11.0- Repository
- paradigmxyz/reth
Release notes
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-cache or --rpc-cache.max-headers (alias --rpc-cache.max-envs). Drop them from your config (#28369)
With --instance N and no explicit --auth-ipc.path, the Engine API IPC socket is now /tmp/reth_engine_api.ipc-N. Set --auth-ipc.path if 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_callMany and debug_traceCallMany now allow at most 1,024 calls and share one --rpc.gascap budget 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_getProof now allows at most 1,024 storage keys. eth_getMultiProof allows 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/CommitChanges and the Ethereum executor now come from evm2, and EthBlockExecutor wraps evm2::block::ethereum::EthBlockExecutor. EthApiError::MuxTracerError now holds the error message (#28238)
• MessageInput no longer dereferences to bytes. Custom precompile integrations should read inputs through Evm::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)
• EnrCombinedKeyWrapper implements TryFrom<Enr<SecretKey>> instead of From, and Discv5::add_node returns Error::InvalidEnr for records the discv5 key backend rejects (#28345)
• RpcServerArgs::auth_ipc_path is now Option<String>; read the effective endpoint with auth_ipc_path() (#28257)
• schnellru caches are replaced with reth-lru (#28291)
• Removed the unused DEFAULT_HEADER_CACHE_MAX_LEN constant (#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 schnellru with the faster reth-lru caches (#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_simBundle work is bounded (#28386)
• eth_simulateV1 stops once its request is dropped (#28312), checks cancellation once per simulated…