# T9 Network Upgrade

T9 records each TIP-20 token's active transfer policy in TIP-403. This is necessary for [Tempo Zones](https://tempo.xyz/developers/docs/protocol/zones#tempo-zones-are-private): zones keep balances, transfers, and account relationships private, but they still need a provable way to know which issuer policy applies to a token. The same registry binding also gives provable contract flows, apps, indexers, and other tooling a single place to check which policy a token is using.

In simpler terms, T9 moves the answer to "which transfer rules apply to this token?" into TIP-403, where it can be checked from registry state.

For most partners, T9 is only relevant if you issue TIP-20 tokens, run tooling that reads token policy state, or build zone/provable contract flows that depend on TIP-403 policy checks.

:::info[T9 status]
T9 is active on testnet and mainnet. Release [v1.12.0](https://github.com/tempoxyz/tempo/releases/tag/v1.12.0) is required for T9; see the [Network Upgrades and Releases table](https://tempo.xyz/developers/docs/guide/node/network-upgrades#node-operator-updates) for the current node-operator release status.
:::

## Timeline

| Milestone | Date |
|-----------|------|
| Release published | August 3, 2026 |
| Testnet rollout | Live: August 5, 2026 |
| Mainnet rollout | Live: August 6, 2026 |

Node operators were required to run [v1.12.0](https://github.com/tempoxyz/tempo/releases/tag/v1.12.0) before activation to stay synced.

## Overview

T9 has one protocol change:

* **TIP-20 policy IDs in TIP-403.** TIP-403 can record which transfer policy a TIP-20 token is currently using.

That registry binding is required for zone token enablement and useful for tooling that needs the TIP-403 view. For zones, a ZonePortal can check the TIP-403 binding before enabling a token instead of relying on token-local state.

### Why this matters for zones

Tempo Zones keep balances, transfers, and account relationships private. At the same time, tokens in a zone still need to follow the issuer's transfer policy. T9 gives zones a registry-backed way to prove which policy applies to each token before that token is enabled in the zone.

## What changes

### Token policy lookup in TIP-403

TIP-403 already stores transfer policy data. With T9, it can also record which transfer policy a TIP-20 token is using.

New TIP-20 tokens write this binding when they are created. Policy changes after T9 keep the binding up to date. Existing tokens only need targeted migration when they need to be enabled in a zone, used by a provable contract flow, or read by tooling that needs their policy ID to be available from TIP-403.

Read the [specification](https://github.com/tempoxyz/tempo/blob/main/tips/tip-1092.md).

### Targeted migration

T9 adds a migration path for individual existing TIP-20 tokens. The migration copies the token's current local policy ID into TIP-403. It does not change the token's policy or rules, and it can be run only for the tokens that need the TIP-403 binding.

For zone enablement, ZonePortal checks whether the token already has a TIP-403 binding. If it is missing, ZonePortal migrates that token, checks again, and rejects the token if the binding is still missing.

## Compatible release

Release notes and binaries are available in the [v1.12.0 release](https://github.com/tempoxyz/tempo/releases/tag/v1.12.0).

## Integration impact

### For TIP-20 issuers and token admins

* Migrate an existing token when it needs to be enabled in a zone, used by a provable contract flow, or read by tooling that needs its policy ID from TIP-403.
* After activation, policy updates write the TIP-403 binding for the updated token.

### For zones, provable contract flows, and tooling

* Treat the TIP-403 binding as required before enabling a token in a zone or using it in a provable contract flow.
* Use TIP-403 when your flow needs the registry view of token policy state.
* If the binding is missing, migrate the specific token and verify that TIP-403 has the binding before continuing.

### For migration tooling

* Migrate only the specific tokens that need a TIP-403 binding.
* Batch token lists and verify each binding after migration.
