Overview
Important
This is a recommended release for all op-reth operators. It contains the update to reth v2.5.2, which removes two engine flags and changes the engine's persistence defaults, and a transaction pool fix for senders whose later transactions cannot cover their L1 data and operator fees.
Breaking changes
--engine.sparse-trie-max-hot-slotsand--engine.sparse-trie-max-hot-accountsremoved (#22495). The node refuses to start if either flag, or the--engine.sparse-trie-max-storage-triesalias, is passed. Remove them from launch configuration before upgrading.- Engine persistence defaults changed (#22495).
--engine.persistence-thresholdnow defaults to 7 instead of 2, and--engine.memory-block-buffer-targetno longer has a fixed default: its effective value is the smaller of the persistence threshold and 5, so a node on default settings now keeps 5 blocks in memory ahead of the last persisted block instead of 0. Pass--engine.persistence-threshold 2 --engine.memory-block-buffer-target 0to keep the previous behaviour. testing_buildBlockV1no longer skips invalid transactions by default (#22495). Callers that rely on the old behaviour must start the node with--testing.skip-invalid-transactions.eth_getMultiProofis not served (#22495). Upstream reth now installs this method by default; op-reth removes it from every RPC transport, including the authenticated endpoint. We may reinstate it later if needed.isSystemTxis now a JSON boolean (#22946). Transaction RPC responses for deposits with the system-transaction flag set return"isSystemTx": trueinstead of"0x1", matching op-geth. Only deposits in pre-Regolith blocks carry the flag, and no chain in the superchain registry has such blocks. On a chain that does, RPC consumers must accept the boolean form, and kona-node must be upgraded to v1.7.2 alongside, since it no longer decodes the hex form.
Other changes
Upstream
- Update reth to v2.5.2, with a backport of the upstream fix that keeps the Engine API responsive while persisted state is handed off during a payload build (paradigmxyz/reth#26708). Among the upstream changes: pending payload builds are finalized when resolved early, storage wipes of destroyed accounts are handled correctly in batched persistence, ExEx write-ahead log recovery tolerates non-contiguous file IDs, the discovery fork filter updates at fork activation without a restart, and
--trusted-peersand--bootnodesaccept ENRs. New flags--engine.txpool-prewarming,--engine.sender-recovery-cacheand--dev.finality-depthare available.debug_executionWitnessaccepts a block hash as well as a number, anddebug_executePayloadreturns the ancestor headers it used. revm moves to 42 and alloy to 2.3 (#22495)
Transaction pool
- A sender's transaction cost now includes the L1 data fee and operator fee reserved at admission, not only the L2 execution cost. Later-nonce transactions that cannot cover the fees of the sender's earlier ones are classified as queued instead of pending, as op-geth does, so the block builder no longer retries them every block and they expire after the pool's transaction lifetime. Single-transaction admission is unchanged (#23076, #23077)
Metrics
- New SDM metrics are exported on every node: the gauges
reth_op_sdm_operator_opt_in(the current value, which followsadmin_setOperatorSdmOptIn) andreth_op_sdm_operator_opt_in_configured(the--rollup.operator-sdm-opt-invalue at boot), which differ when a restart would change the opt-in; and the countersreth_op_sdm_block_gas_total,reth_op_sdm_refund_entries_totalandreth_op_sdm_refund_gas_total, recorded for every imported block. The refund counters stay at zero on chains without SDM (#22927, #22961, #22931)
Full Changelog: op-reth/v2.5.0...op-reth/v2.6.0
🚢 Docker Image: