taiko-alethia-client-rs v2.2.0
This release prepares the Rust Alethia client for the Unzen Mainnet upgrade and includes important CLI, execution-engine compatibility, checkpoint sync, event sync, proposer, and preconfirmation reliability improvements.
Unzen Mainnet activation
Taiko Mainnet activates Unzen at Unix timestamp 1786021200, corresponding to 2026-08-06 13:00:00 UTC.
Upgrade Rust client, proposer, driver, and preconfirmation deployments before the activation time.
Unzen compatibility
- Update the embedded Alethia-Reth chainspec dependency with the Mainnet activation timestamp.
- Encode Unzen
headerDifficultyas a decimal JSON number inengine_newPayloadV2, matching taiko-geth and alethia-reth wire expectations. - Restore the hash-relevant Unzen header difficulty from Engine API payload envelopes.
- Validate Unzen header-difficulty presence on whitelist preconfirmation envelopes.
CLI changes
Removed
- Remove the
preconfirmation-driversubcommand and its permissionless preconfirmation runtime. Usewhitelist-preconfirmation-driverfor the supported preconfirmation path in this release. - Remove
--preconf.rpc.addr/PRECONF_RPC_ADDR.
Deprecated and ignored
--p2p.discovery.addr/P2P_DISCOVERY_ADDR--p2p.disable-discovery/P2P_DISABLE_DISCOVERY
The deprecated discovery flags are hidden but still parse so deployments can migrate without an immediate startup failure. Discv5 discovery has been removed; configured bootnodes are dialed directly and may use ENR, enode, or multiaddr formats.
Proposer changes
- Restore forced-inclusion inputs so the proposer requests all pending forced inclusions.
- Keep the proposer process running after mined transaction reverts or tx-manager execution-reverted errors.
- Build manifest timestamps from the L1 head and stagger timestamps across multi-block manifests.
- Use the manifest gas limit when selecting transaction-pool content instead of the previous 10M cap.
- Delay missed proposer ticks instead of replaying a burst after a slow confirmation.
Driver and checkpoint sync
- Recover from checkpoint-sync handoff when custom L1-origin mappings are missing instead of entering a restart loop.
- Use a proof-finalized checkpoint target and treat the checkpoint endpoint as an untrusted block-body source.
- Verify the target by block hash and retry transient checkpoint failures.
- Accept
VALIDorSYNCINGduring checkpoint import while keeping invalid payloads fatal. - Enforce strict
VALIDstatuses for normal payload insertion and verify the canonical readback hash after promotion. - Bound retries for deterministic payload rejections while continuing to retry transient or canonically unproven failures.
Event-sync reliability
- Reconnect and replay after scanner lag instead of silently skipping dropped proposal ranges.
- Identify reorged-out proposal logs through canonical block-hash mismatches.
- Recover from reorged-out logs without blocking event sync indefinitely.
- Reject oversized manifest length fields and trailing bytes after manifest RLP.
- Decode legacy transactions in preconfirmation transaction lists.
- Degrade undecodable derivation-source blobs to the default payload instead of terminating derivation.
Preconfirmation and observability
- Bind queued preconfirmations to their authenticated parent hash and reject stale submissions before engine injection.
- Prevent stale cached envelopes from advancing local status or being served to peers.
- Restore the Go-compatible
highestUnsafeL2PayloadBlockIDstatus field. - Report the execution head from
/statuswhen the unsafe counter lags it. - Add periodic preconfirmation peer-status logging.
- Add the client version metric to the Prometheus endpoint.
Full changelog: taiko-alethia-client-rs-v2.1.0...taiko-alethia-client-rs-v2.2.0