github taikoxyz/alethia-reth v1.4.1

pre-release2 hours ago

alethia-reth v1.4.1

This release upgrades alethia-reth to reth v2.4.1 (revm 41, alloy-evm 0.37). It also removes the built-in Masaya network, rejects Amsterdam-era Engine API fields that Taiko does not support, and fixes tracer event forwarding. It contains no fork-schedule changes, and Taiko's block execution rules are unchanged.

v1.4.1 supersedes v1.4.0. The v1.4.0 Docker image build failed on a stale Cargo.lock, so no v1.4.0 images were published. The node code in the two releases is the same. These notes cover every change since v1.3.1.

CLI changes

Removed:

  • --chain masaya, along with the taiko-masaya and taiko masaya aliases. The built-in presets are now mainnet, taiko-hoodi, and devnet.

Inherited from reth v2.4.1:

  • Discv5 discovery is now enabled by default. --enable-discv5-discovery is still accepted but does nothing; use the new --disable-discv5-discovery (or --disable-discovery) to turn discv5 off.
  • --engine.legacy-state-root is still accepted but does nothing and logs a warning.
  • --engine.state-root-task-timeout now defaults to 4s (was 1s).
  • node and re-execute now list reth's --jit / --jit.* options. alethia-reth rejects --jit at startup because Unzen zk gas metering requires the interpreter; the other --jit.* options have no effect.
  • New optional flags include --tx-channel-memory-limit (default 1 GiB), --rpc.disable-metrics, --db.disable-metrics, --rpc.compute-state-root-for-eth-simulate, --engine.suppress-persistence-during-build, and --debug.skip-genesis-validation. The Amsterdam block-access-list options (--engine.disable-bal-*, --rpc-cache.max-bals, --db.balstore-cache-size) have no effect on Taiko.

Breaking and operator-visible changes

  • Masaya support is removed. alethia-reth-chainspec no longer exports TAIKO_MASAYA, TAIKO_MASAYA_HARDFORKS, TAIKO_MASAYA_GENESIS_HASH, or TAIKO_MASAYA_CHAIN_ID.
  • Because discv5 is now on by default, the node binds UDP port 9200 for discv5 unless you disable it.
  • Proof-history metrics follow the upstream reth-optimism-trie rename. The per-block reth_optimism_trie_block_* duration and trie-write metrics are no longer emitted. The proof-window gauges moved from reth_optimism_trie_block_{earliest,latest}_number to reth_optimism_trie_proof_window_{earliest,latest}. Update dashboards and alerts.
  • On first start, proof-history storage that finished initialization but never indexed a live block is migrated in place and logs migrated legacy proof-history storage. If the stored anchor and earliest block disagree, startup stops and asks for the proof-history storage to be wiped and re-initialized.
  • Release builds now include trace-level logs: reth's min-trace-logs default replaces min-debug-logs.
  • Building from source requires Rust 1.95.
  • The reth database does not need a migration or resync.

Engine API and header validation

  • newPayload rejects payloads that carry blockAccessList or slotNumber.
  • forkchoiceUpdated rejects payload attributes that carry slotNumber, targetGasLimit, or a non-zero parentBeaconBlockRoot. A non-zero beacon root cannot round-trip through newPayload on Taiko. taiko-client never sets any of these fields.
  • Headers are rejected when Amsterdam is active at their timestamp, or when they carry blockAccessListHash or slotNumber, matching upstream EthBeaconConsensus. Payload building also refuses to run under a custom chain spec that activates Amsterdam. No Taiko network schedules Amsterdam.

RPC and tracing fixes

  • Tracers now receive log and selfdestruct events. Previously, the zk gas metering wrapper placed around every tracer dropped both events on all forks. As a result, callTracer with withLog: true returned no logs, and self-destructs were missing from call traces and trace_* output.
  • eth_simulateV1 now applies a beaconRoot block override to the EIP-4788 beacon-roots call in simulated Unzen blocks. Previously that root was always zero.
  • The v1.3.1 fixes are all included: anchor-transaction replay for debug_trace* / trace_*, per-call zk gas metering for eth_estimateGas, and the anchor zk gas reserve in taikoAuth tx-pool preselection. v1.3.1 was cut from a maintenance branch; this release carries the equivalent changes from main.

Dependencies

  • reth moves from 27bfdde to f2eecc6, which is v2.4.0 plus 9 commits: the revision op-reth pins, with dependencies aligned to v2.4.1. Also upgraded: revm 38 → 41, alloy-evm 0.33 → 0.37, alloy 2.0 → 2.1, and reth-optimism-trie (ethereum-optimism/optimism) bcf489e4f21ce6.
  • The zk gas interpreter loop is ported to revm 41 and charges out-of-gas halts exactly as before. Unzen zk gas totals, which are committed to header.difficulty, are unchanged.
  • Precompile backends follow reth's defaults: MODEXP now runs on GMP, and P256VERIFY on aws-lc-rs. Gas and zk gas charges are unchanged.

Release process

  • Cargo.lock now lists the workspace crates at the release version, as the image's cargo build --release --locked requires.
  • Release PRs now bump the workspace versions in Cargo.lock along with Cargo.toml. The Cargo.lock rules in release-please-config.json had never matched anything. release-please's TOML updater wraps each value in position metadata before evaluating JSONPath filters, so @.name == "..." was always false (googleapis/release-please#2455).
  • CI now runs cargo metadata --locked on every pull request, release PRs included. A stale Cargo.lock now fails before merge instead of breaking the image build.

Full changelog: v1.3.1...v1.4.1

Don't miss a new alethia-reth release

NewReleases is sending notifications on new releases.