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