Important
This is a recommended release for all node operators. It upgrades to upstream op-reth v2.6.0 (reth v2.5.2), which removes engine flags and changes engine persistence defaults. Review the upgrade notes below before upgrading.
Summary
Minor release on top of v2.3.1. Highlights:
- Upstream op-reth
v2.6.0(#86, #91): moves everyethereum-optimism/optimismcrate fromop-reth/v2.4.4throughv2.5.0toop-reth/v2.6.0, and the reth pin fromop-rs/reth@aef8d3eftoethereum-optimism/reth@0fbe4285(rethv2.5.2, revm 42, alloy 2.3). Upstream highlights: an Engine API responsiveness fix during persistence hand-off, correct storage wipes for destroyed accounts in batched persistence, ExEx WAL recovery with non-contiguous file IDs, a transaction pool fix that queues later-nonce transactions that cannot cover their L1 data and operator fees, new SDM metrics, and security updates forrustls(RUSTSEC-2026-0285) andimbl(RUSTSEC-2026-0292). - RPC override installation (#82): the flashblocks pending-state overrides (
eth_call,eth_estimateGas,eth_simulateV1) and the proofs-history overrides (eth_getProof,debug_executePayload) are now installed only on transports that serve theeth/debugnamespace, instead of on every configured transport. - Stricter chain spec validation (#77, #80): a node now refuses to start if
EvmLimitsFork0setstxGasLimitCap,maxCodeSizeormaxInitcodeSizeto0, or if a state-override fork contains code that cannot be decoded as bytecode. Both were previously accepted and failed only at the activation block.
Upgrade notes
- Removed flags.
--engine.sparse-trie-max-hot-slots,--engine.sparse-trie-max-hot-accountsand the--engine.sparse-trie-max-storage-triesalias are removed. The node refuses to start if any of them is passed; remove them from your launch configuration before upgrading. - Engine persistence defaults.
--engine.persistence-thresholdnow defaults to7(was2), and--engine.memory-block-buffer-targetdefaults to the smaller of the persistence threshold and5(was0), so a node keeps a few more blocks in memory ahead of the last persisted block. Pass--engine.persistence-threshold 2 --engine.memory-block-buffer-target 0to keep the previous behaviour. Nodes recover the unpersisted blocks automatically after an unclean shutdown. eth_getMultiProofis not served on any transport, including the authenticated endpoint.isSystemTxis a JSON boolean. Transaction RPC responses for deposits with the system-transaction flag returntrueinstead of"0x1". Only pre-Regolith deposits carry this flag.- Rollback. A database written by
v2.4.0opens withv2.3.1andv2.3.0, so rolling back is an image change; no resync or snapshot restore is needed.
Docker
docker pull ghcr.io/conduitxyz/conduit-op-reth:v2.4.0
Multi-arch image digest: sha256:560ef893edaaba1a59b2ece5713acf8569e89de7db17fd01f4a510d139979156 (linux/amd64, linux/arm64).
Changes
- chore: bump version to 2.4.0 (#92)
- chore: upgrade op-reth to v2.6.0 (#91)
- fix(rpc): only install flashblocks call overrides where eth is enabled (#82)
- chore: upgrade op-reth to v2.5.0 (#86)
- fix(chainspec): reject state override code that cannot be decoded (#80)
- ci: require an exact version match in the release tag check (#79)
- fix(chainspec): reject zero EvmLimitsFork0 limits (#77)
- docs: fix the clone URL and minimum Rust version in the README (#78)
Full diff: v2.3.1...v2.4.0
