github celo-org/celo-kona celo/reth-v1.0.4
celo-reth v1.0.4

2 hours ago

Highlights

Upgrade recommended. This release changes RPC behavior for some specific CIP-64 tx shape, so nodes are recommended to be on 1.0.4.

op-geth parity fixes for CIP-64 (consensus-affecting)

  • A zero-address feeCurrency is now an unregistered currency, not native CELO (#317, #318). op-geth rejects that shape and marks any block containing it invalid, while this line executed it as native. Native CELO is now expressed only by an absent feeCurrency, in the pool, the fee RPCs and the state transition. Fork-free: no canonical block carries the shape.
  • celo-revm now enforces balanceOf(caller) >= gasLimit * maxFeePerGas for CIP-64 (#298). Backport of #293.

Sequencing latency

  • The payload builder uses the engine's shared sparse trie for state roots, with a bounded wait before synchronous fallback (#301).
  • New --builder.state-root-wait <DURATION>, default 750ms (#313). Startup now fails when --engine.share-sparse-trie-with-payload-builder is set but Reth's parallel state-root task is inactive, where the flag used to be silently inert.
  • Payload build time is split into execution, post-state hashing and state-root phases (#288).

CIP-64 pool correctness

  • Cumulative fee-currency expenditure is derived from the live pending set instead of a head-reset reservation cache, and same-sender admission is serialized (#251).
  • Pending CIP-64 transactions are revalidated against canonical registration and balances after each canonical pool update (#276).

Other changes

  • The per-transaction CIP-64 gas summary line moved from info to trace (#304).

Flags

New in this release:

  • --builder.state-root-wait <DURATION> (#313): how long the payload builder waits for the shared sparse trie before falling back to a synchronous state-root calculation. Defaults to 750ms. Only takes effect when the shared-trie path is active.

Recommended on sequencers, to get the #301 / #313 latency work:

--engine.share-sparse-trie-with-payload-builder
--builder.state-root-wait 750ms

--engine.share-sparse-trie-with-payload-builder now fails at startup instead of being silently inert when reth's parallel state-root task is off. It requires at least five available CPUs and --engine.legacy-state-root to be unset. Non-sequencing nodes need no new flags.

The per-transaction CIP-64 gas summary line is now at trace (#304). To get it back:

--log.stdout.filter="info,celo_handler=trace"

What's Changed

  • fix(celo-reth): derive CIP-64 cumulative expenditure from live pending set by @jcortejoso in #251
  • fix(celo-reth): revalidate CIP-64 transactions after admission by @seolaoh in #276
  • feat(celo-reth): measure payload build phases by @seolaoh in #288
  • Backport: enforce the CIP-64 maxFeePerGas balance rule by @palango in #298
  • Demote the CIP-64 gas summary log to trace by @jcortejoso in #304
  • Use bounded sparse-trie state roots in the payload builder by @seolaoh in #301
  • feat(celo-reth): configure shared trie wait by @seolaoh in #313
  • celo-reth: a zero-address feeCurrency is an unregistered currency, not native CELO (celo/reth-v1.0) by @palango in #317
  • celo-revm: a zero-address feeCurrency is an unregistered currency, not native CELO (celo/reth-v1.0) by @palango in #318

Container image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-reth:celo-v1.0.4

Full Changelog: celo/reth-v1.0.3...celo/reth-v1.0.4

Don't miss a new celo-kona release

NewReleases is sending notifications on new releases.