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
feeCurrencyis 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 absentfeeCurrency, 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 * maxFeePerGasfor 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>, default750ms(#313). Startup now fails when--engine.share-sparse-trie-with-payload-builderis 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 summaryline 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 to750ms. 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