·
33 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Release v1.9.0
Important
This release is required for the T6 network upgrade scheduled for testnet on June 18, 2026 16:00 CEST (1781791200) and mainnet on June 23, 2026 16:00 CEST (1782223200). Node operators must update before activation or their nodes will fall out of sync. This release activates T6 support for address-level receive policies and admin access keys, along with performance, stability, and operator tooling improvements.
Update Priority
| User Class | Priority |
|---|---|
| Validators | High |
| RPC Nodes | High |
Nodes that are not updated will fall out of sync at the T6 activation timestamp.
Activation Times
| Network | Date | Timestamp |
|---|---|---|
| Testnet | June 18, 2026 16:00 CEST | 1781791200 |
| Mainnet | June 23, 2026 16:00 CEST | 1782223200 |
TIPs included with T6
The T6 network upgrade includes:
- TIP-1028 Address-Level Receive Policies: Lets receivers define which TIP-20 tokens and senders they accept, redirecting blocked transfers or mints to
ReceivePolicyGuardfor later recovery instead of reverting. - TIP-1049 Admin Access Keys: Adds admin access keys for account key management and extends
SignatureVerifierwith stateful keychain/admin signature verification helpers.
Operators
What's Changed
- Certified Follow Mode (#2551): Followers run a lightweight consensus engine that validates consensus certificates as a prerequisite to progressing execution state. Mainnet & Testnet nodes behind the public RPC will be switched over by setting
--follow.experimental.certifyand servingconsensus_rpcs. The flag is available and will become the default in the next release. - Consensus finalized block storage pruning (#3870, #5234): The consensus layer now stores blocks as a persisted cache, pruning it as execution layer finalization watermark rises. This will be automatically pruned for new nodes, for operators running existing nodes may delete the legacy archive at
<consensus_storage>/engine-finalized_blocks-{freezer*,metadata,ordinal}. Make sure to retain<consensus_storage>/engine-finalized-blocks-prunable-{key,value}! - Embedded Network Identities (#4004): The network keys for Mainnet and Tesnet are embedded in the binaries. Certified followers can jump past several epochs when verifying a certificate against this key instead of progressing boundary to boundary.
- Improved snapshot bootstrapping (#4482): Tempo snapshots now include finalization data in the manifest and dump the finalization certificate for startup recovery when the finalizations archive is empty.
- Consensus execution actor no longer blocks on every EL interaction (#5312): Queues forkchoice/new-payload work through the executor actor to improve consensus responsiveness.
- Consensus signing key CLI fix (#5276): Adds
--secretsupport for signing consensus smart contract arguments.
Developers
Compatible Tooling Versions
| Package | Version | Notes |
|---|---|---|
tempo-alloy |
1.9.0 |
Includes T6 admin access key support in SDK transaction builders. |
tempo-primitives |
1.9.0 |
Includes T6 admin access key primitives and signature encoding improvements. |
tempo-contracts |
1.9.0 |
Includes T6 AccountKeychain and SignatureVerifier ABI updates. |
tempo-chainspec |
1.9.0 |
Includes T6 activation timestamps and hardfork configuration. |
T6 Protocol Changes
- Address-level receive policies (#3800, #5476): TIP-1028 extends TIP-403/TIP-20 so receivers can configure accepted tokens and senders. Blocked TIP-20 transfers and mints succeed by redirecting funds to
ReceivePolicyGuard, where they can later be claimed by the originator or configured recovery authority. Recovery addresses may not be precompile addresses. - Admin access keys (#4265): TIP-1049 adds
authorizeAdminKey(...),isAdminKey(...), admin key authorization events, and account-bound admin key permissions. Admin keys can manage other keys but must not carry spending limits, call scopes, or expiry. - Keychain signature verification (#4302):
SignatureVerifiernow exposes stateful keychain verification helpers, includingverifyKeychain(account, hash, signature)andverifyKeychainAdmin(account, hash, signature), for contracts that need to validate active access-key or root/admin signatures against AccountKeychain state.
EVM, Transaction, and Fee Semantics
- Per-transaction fee accounting fix (#5506): Resets collected-fee state for each transaction so stale fee collection cannot affect same-transaction key authorization/use paths.
- Transaction validation caching (#5522, #5518, #5513): Validation now reuses state reads across EVM validation, AMM liquidity planning, and ETH account/code checks, while avoiding unnecessary transaction/env clones and eager batch allocation.
- Signature encoding optimization (#5553): Signature RLP length calculation now avoids materializing an intermediate
Bytesbuffer. - Dynamic base fee support in txpool ordering (#5243): Transaction priority is no longer cached under a fixed-base-fee assumption; ordering indices are recomputed or reindexed when the base fee changes.
Performance
- Builder budget pacing (#5211): Payload building now reserves proposal-return time using recent local validation latency feedback instead of always mirroring projected builder work.
- Parallelize builder computations (#4473): Refactors block building to offload transaction cloning and computation of transaction/receipt roots to a separate spawned task
- Redundant builder precache disabled (#5419): Tempo nodes skip Reth’s basic parent-state pre-cache because the Tempo payload builder already uses the execution cache.
- Execution/storage hot-path work (#3626, #4455, #5038, #5239, #4480): precomputes TIP-20 keccak slots, improves storage handler caching, removes useless TIP-403 SLOADs, and caches AA replay hash.
- Transaction pool iteration and eviction improvements (#5432, #5546, #5585, #5590): Adds best-transaction size hints, moves AA allocation out of write locks, removes eviction entries with lightweight order keys, and defers dropping removed transactions until after block update windows.
Full Changelog: v1.5.2...v1.9.0