# T11 Network Upgrade

T11 extends expiring-nonce validity to five minutes and updates precompile pricing and validation.

:::warning[Breaking change: integration disruption]
T11 introduced stricter ABI decoding to address a denial-of-service vulnerability. Rejecting trailing bytes, including extra zeros and attribution data, was an unintended side effect. This can disrupt transfers, read-only `eth_call` requests, gas estimation, and mint/burn workflows that depend on token supply checks.

Trailing bytes will be allowed again with [T12](https://github.com/tempoxyz/tempo/pull/7598); other strict ABI checks will remain.
:::

:::info[T11 status]
T11 is active on testnet and mainnet. [v1.14.0](https://github.com/tempoxyz/tempo/releases/tag/v1.14.0) is the required T11 release. See [Node Operator Updates](https://tempo.xyz/developers/docs/guide/node/network-upgrades#node-operator-updates) for current release guidance.
:::

## Timeline

| Network | Activated (UTC) | Unix timestamp |
|---------|-----------------|----------------|
| Testnet | September 9, 2026 at 14:00 | `1788962400` |
| Mainnet | September 10, 2026 at 14:00 | `1789048800` |

<span id="t11-upgrade-overview" />

<span id="integration-impact" />

## Stricter precompile validation

Calldata generated by standard ABI encoders such as Alloy and viem remains compatible when sent unchanged. No ABI migration is needed unless your integration modifies the encoding or appends trailing bytes.

For custom or modified calldata, use canonical ABI encoding without gaps, overlaps, or nonzero padding. Until T12 activates on your network, remove trailing bytes and disable options that append data suffixes. Preserve required ABI padding, and move any tracking or attribution data to a supported field or application layer.

Test affected reads, simulations, and transactions on the target network using the final calldata your integration sends.

### Duplicate checks

T11 charges 20 gas per value processed by duplicate checks in account key permissions and Zone configuration lists.

For `ZoneFactory.createZone`, addresses must be unique across `allowedAccounts`, `zoneGateways`, and `sequencers`. T11 newly rejects duplicates within `allowedAccounts` and `zoneGateways`; cross-list overlaps and duplicate sequencers were already invalid. See [Zone creation](https://tempo.xyz/developers/docs/protocol/zones/architecture#creating-a-zone) and [TIP-1105](https://tips.sh/1105).

## Updated gas pricing

The precompile input charge rises from 6 to 30 gas per 32-byte word, rounded up over the full calldata including the selector. Below 1 KiB, the increase is at most 768 gas, excluding duplicate-check charges.

Estimate gas on the target network and update fixed limits. See [TIP-1100](https://tips.sh/1100).

## Longer transaction submission window

Expiring-nonce transactions can now set `validBefore` up to five minutes ahead, instead of 30 seconds. Shorter windows remain supported. Already-signed transactions retain their original expiry; replay protection and other nonce modes are unchanged. See [TIP-1093](https://tips.sh/1093).
