github ethereum-optimism/optimism op-reth/v2.6.0
op-reth v2.6.0

3 hours ago

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-slots and --engine.sparse-trie-max-hot-accounts removed (#22495). The node refuses to start if either flag, or the --engine.sparse-trie-max-storage-tries alias, is passed. Remove them from launch configuration before upgrading.
  • Engine persistence defaults changed (#22495). --engine.persistence-threshold now defaults to 7 instead of 2, and --engine.memory-block-buffer-target no 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 0 to keep the previous behaviour.
  • testing_buildBlockV1 no longer skips invalid transactions by default (#22495). Callers that rely on the old behaviour must start the node with --testing.skip-invalid-transactions.
  • eth_getMultiProof is 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.
  • isSystemTx is now a JSON boolean (#22946). Transaction RPC responses for deposits with the system-transaction flag set return "isSystemTx": true instead 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-peers and --bootnodes accept ENRs. New flags --engine.txpool-prewarming, --engine.sender-recovery-cache and --dev.finality-depth are available. debug_executionWitness accepts a block hash as well as a number, and debug_executePayload returns 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 follows admin_setOperatorSdmOptIn) and reth_op_sdm_operator_opt_in_configured (the --rollup.operator-sdm-opt-in value at boot), which differ when a restart would change the opt-in; and the counters reth_op_sdm_block_gas_total, reth_op_sdm_refund_entries_total and reth_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:

Don't miss a new optimism release

NewReleases is sending notifications on new releases.