Tempo Integration Guide
CCIP is compatible with Tempo Moderato Testnet, enabling cross-chain token transfers to and from Tempo using the standard BurnMint mechanism. This guide provides comprehensive information for CCIP users who want to enable a token on Tempo.
Before you start: Token Manager Expert Mode access is required for this integration. Contact CCIP Support to request access before proceeding.
How Tempo Works
Tempo is an app-chain that uses stablecoin-native gas tokens instead of a volatile native token. It introduces a custom token standard (TIP-20) designed for stablecoins and payment tokens, and has a significantly different gas cost structure compared to Ethereum mainnet.
Gas and Execution Model
Tempo has substantially higher costs for storage and deployment operations:
| Operation | Tempo | Ethereum | Notes |
|---|---|---|---|
| New storage slot (SSTORE 0โnon-zero) | 250,000 gas | 20,000 gas | Expect higher execution costs; test on testnet first |
| Account creation | 250,000 gas | 0 gas | Applies when the message receiver is a new account; ensure destGasOverhead values are sufficient |
| Contract deployment (per byte) | 1,000 gas | 200 gas | Deploying a token + pool via the factory may exceed limits |
| Transaction gas cap | 30M gas | 30M gas | โ |
Key implications:
- Always test token transfers and message sends on testnet before estimating production gas costs.
- Deploying both a token and a token pool via Token Manager's factory contract can exceed gas limits. Adding a token in Token Manager therefore requires an existing token rather than a net-new deployment. Use Token Manager Expert Mode to deploy an ERC-20 or Tempo's official TIP-20 factory contract.
- When sending messages across chains, ensure
destGasOverheadvalues are set high enough to cover Tempo's account creation costs on inbound transfers.
Fee Tokens
Tempo uses stablecoin-based native gas tokens. On CCIP, the supported fee tokens are listed in the CCIP Directory and include:
- LINK
- PathUSD
For EVM gas on testnet, this guide uses alphaUSD.
TIP-20 Token Standard
TIP-20 is Tempo's native token standard, optimized for stablecoins and payment tokens. More information is available in the official Tempo docs. It differs from ERC-20 in the following key ways:
| Feature | ERC-20 | TIP-20 |
|---|---|---|
decimals() | Implementation-defined | Always returns 6 (hardcoded) |
| Transfer policy | None | Enforces TIP-403 policy on sender and recipient; reverts with PolicyForbids if either fails |
| Pause mechanism | None | All token-moving functions revert when paused == true |
| Mint/burn | Not standard | Role-based via ISSUER_ROLE |
| Rewards | None | Built-in opt-in reward distribution |
Additional TIP-20 transfer restrictions:
-
Tokens cannot be sent to another TIP-20 token contract address (reverts).
-
All transfers enforce
TIP403_REGISTRY.isAuthorized(transferPolicyId, from)andisAuthorized(transferPolicyId, to); both must pass.ERC-20 alternative: ERC-20 tokens can also be deployed to Tempo and are supported via Token Manager Expert Mode. Contact CCIP Support for access.
Prerequisites
Before starting:
- Access to Tempo Moderato Testnet
- A funded wallet with alphaUSD (see Add Funds and Set EVM Gas)
- Token Manager Expert Mode access (request from CCIP Support)
- All Tempo Moderato Testnet CCIP addresses from the CCIP Directory
Integration Steps
High-Level Sequence
1. Deploy TIP-20 token (TIP20Factory precompile)
2. Deploy BurnMintTokenPool (Token Manager Expert Mode)
3. Grant ISSUER_ROLE (TIP-20 token contract)
4. Register token in TAR (self-serve via registerAccessControlDefaultAdmin())
5. Accept Admin + Set Pool (Token Manager Expert Mode)
6. Wire pools across chains (applyChainUpdates on Tempo + each remote chain)
7. Test transfers (Transporter testnet)
Order matters: Complete Steps 1โ5 before wiring token pools. Wiring early can allow users to initiate transfers before the Tempo pool is active.
Step 1: Deploy a TIP-20 Token
Deploy using the TIP20Factory precompile on Tempo Moderato Testnet.
Factory address: 0x20Fc000000000000000000000000000000000000
Call createToken(string name, string symbol, string currency, address quoteToken, address admin, bytes32 salt). The following inputs have been provided as an example:
| Parameter | Example value |
|---|---|
name | My Test Token |
symbol | MTT |
currency | USD |
quoteToken | 0x20C0000000000000000000000000000000000000 |
admin | Your admin wallet address |
salt | 0x0000000000000000000000000000000000000000000000000000000000001234 |
References:
Step 2: Deploy the BurnMintTokenPool
Using Token Manager Expert Mode:
- Select Tempo Moderato Testnet as the network.
- Go to Deploy โ Deploy token pool.
- Set CCIP Version to
1.6.0and Token pool type toBurnMintTokenPool. - Enter your TIP-20 token address.
- Click Connect and execute the deployment transaction.
Step 3: Grant ISSUER_ROLE to the BurnMintTokenPool
The BurnMintTokenPool must hold ISSUER_ROLE on your TIP-20 token in order to call burn() and mint() during cross-chain transfers.
- Navigate to your deployed TIP-20 token contract on the Tempo explorer, select Interact, and call
grantRole(bytes32 role, address account). - For
role, enter theISSUER_ROLEID:0x114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa122 - For
account, enter yourBurnMintTokenPooladdress. - Execute the transaction.
Verify: Call hasRole(address account, bytes32 role) with your BurnMintTokenPool address and the ISSUER_ROLE ID. The expected return is true.
Step 4: Register Token in the CCIP TokenAdminRegistry (TAR)
TIP-20 tokens support self-serve TAR registration via OpenZeppelin's AccessControl. Because your admin wallet holds DEFAULT_ADMIN_ROLE (granted at factory deployment), you can register directly without manual assistance from Chainlink Labs.
In Token Manager Expert Mode, go to Token Admin โ Register token and call registerAccessControlDefaultAdmin() with your TIP-20 token address.
You can verify this capability directly on the token contract โ see an example on the Tempo explorer.
This makes your admin wallet the proposed CCIP Token Admin. Proceed to Step 5 to accept and activate.
Step 5: Accept Admin and Set Pool
Accept Admin:
In Token Manager Expert Mode, go to Token Admin โ Accept admin.
- Connect your admin wallet.
- Enter your Tempo token address.
- Click Accept Admin and pay gas.
Your admin wallet is now the official CCIP Token Admin for your Tempo token.
Set Pool:
In Token Manager Expert Mode, go to Token Admin โ Set pool.
- Enter your Tempo token address.
- Enter your Tempo
BurnMintTokenPooladdress. - Click Set Pool and pay gas.
This activates the token and token pool for CCIP. The token is now ready to be wired to remote chains.
Step 6: Wire Token Pools Across Chains
Now that the token pool is active on Tempo, connect it to your existing remote chains.
On Tempo (add remote chains):
In Token Manager Expert Mode, go to Token Pool โ Chain Update โ Apply Chain Updates.
- Set the network to Tempo Moderato Testnet.
- Enter your Tempo
BurnMintTokenPooladdress. - Click Add a new network for each remote chain (e.g., Avalanche Fuji). For each, provide:
- The remote chain's token address
- The remote chain's token pool address
- Click Chain Update and pay gas.
On each remote chain (add Tempo):
- Switch the network to a remote chain (e.g., Avalanche Fuji).
- Enter your existing token pool address on that chain.
- Click Add a new network โ Tempo Moderato Testnet.
- Enter your Tempo token address and Tempo
BurnMintTokenPooladdress. - Click Chain Update and pay gas.
Repeat for each additional remote chain by switching the network at the top. At the end of this step, all token pools should be mutually wired to each other.
New networks will have rate limiting disabled by default.
Step 7: Test Cross-Chain Transfers
Use Transporter (testnet) to test transfers across your connected chains.
- In the Token dropdown, paste your source chain's token address โ the token symbol should be detected automatically.
- Select your source and destination networks.
- Set the token amount and approve the spending limit.
- Click Send and pay gas (e.g., using alphaUSD as the gas token on Tempo).
Test transfers in both directions across all connected chains. Your Token Manager dashboard will auto-detect configured networks once wiring is complete.
Contact Us
To request Token Manager Expert Mode access, or if you have questions about your integration or need help validating your configuration, contact the Chainlink CCIP team:
- CCIP Support: chain.link/ccip-contact
Once testing is complete, please share your CCIP transaction hashes with the team so the CCIP Directory and Transporter can be updated with your token's information.