Execution & Gas
This page specifies how Tempo Zones handle gas accounting, fee collection, and token management. For deposit and withdrawal flows, see the bridging specification. For balance visibility and access control rules, see the accounts specification.
Fee Tokens
Tempo Zones reuse Tempo fee units and gas accounting. Each transaction includes a feeToken field. Any enabled TIP-20 token with USD currency is valid for gas payment. The sequencer accepts all enabled tokens directly, so no Fee AMM is needed.
Deposit Fees
Deposits charge a fixed processing fee in the deposited token:
fee = FIXED_DEPOSIT_GAS × zoneGasRate
FIXED_DEPOSIT_GAS is fixed at 100,000 gas. The sequencer configures zoneGasRate through ZonePortal.setZoneGasRate(). The fee is deducted from the deposit amount and paid to the sequencer on Tempo Mainnet.
Withdrawal Fees
Withdrawals charge a processing fee in the withdrawn token:
fee = gasLimit × tempoGasRate
The user specifies gasLimit to cover processing and any callback execution. The sequencer configures tempoGasRate through ZoneOutbox.setTempoGasRate().
Fixed Gas Costs
All user-facing TIP-20 transfer and approval operations cost exactly 100,000 gas. This removes gas-based information leaks tied to storage state. On a standard EVM chain, gas varies based on whether a transfer writes to a previously empty storage slot, revealing whether the recipient has received tokens before. Fixed costs eliminate that side channel.
| Function | Gas Cost |
|---|---|
transfer(to, amount) | 100,000 |
transferFrom(from, to, amount) | 100,000 |
transferWithMemo(to, amount, memo) | 100,000 |
transferFromWithMemo(from, to, amount, memo) | 100,000 |
approve(spender, amount) | 100,000 |
System functions (systemTransferFrom, transferFeePreTx, transferFeePostTx) retain standard gas costs. Only restricted system callers can invoke them, so the gas side channel does not apply.
Contract Creation Disabled
Tempo Zones currently disable the CREATE and CREATE2 opcodes. Each Tempo Zone runs a fixed set of system contracts and predeploys. Any transaction that attempts contract creation reverts.
Token Management
The sequencer manages which TIP-20 tokens are available on a Tempo Zone:
| Function | Behavior |
|---|---|
enableToken(token) | Enables a TIP-20 token for bridging and gas payment. Irreversible. |
pauseDeposits(token) | Stops new deposits for the token. Withdrawals continue. |
resumeDeposits(token) | Restarts deposits for a previously paused token. |
Once enabled, a token cannot be disabled. This preserves withdrawals for that token, subject to the token's own compliance policy. Tokens on the Tempo Zone use the same address as their Tempo Mainnet counterpart. ZoneInbox mints on deposit, ZoneOutbox burns on withdrawal. No mechanism exists to create new tokens on the Tempo Zone.
Was this helpful?