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:

OperationTempoEthereumNotes
New storage slot (SSTORE 0โ†’non-zero)250,000 gas20,000 gasExpect higher execution costs; test on testnet first
Account creation250,000 gas0 gasApplies when the message receiver is a new account; ensure destGasOverhead values are sufficient
Contract deployment (per byte)1,000 gas200 gasDeploying a token + pool via the factory may exceed limits
Transaction gas cap30M gas30M 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 destGasOverhead values 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:

FeatureERC-20TIP-20
decimals()Implementation-definedAlways returns 6 (hardcoded)
Transfer policyNoneEnforces TIP-403 policy on sender and recipient; reverts with PolicyForbids if either fails
Pause mechanismNoneAll token-moving functions revert when paused == true
Mint/burnNot standardRole-based via ISSUER_ROLE
RewardsNoneBuilt-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) and isAuthorized(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:

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:

ParameterExample value
nameMy Test Token
symbolMTT
currencyUSD
quoteToken0x20C0000000000000000000000000000000000000
adminYour admin wallet address
salt0x0000000000000000000000000000000000000000000000000000000000001234

References:

Step 2: Deploy the BurnMintTokenPool

Using Token Manager Expert Mode:

  1. Select Tempo Moderato Testnet as the network.
  2. Go to Deploy โ†’ Deploy token pool.
  3. Set CCIP Version to 1.6.0 and Token pool type to BurnMintTokenPool.
  4. Enter your TIP-20 token address.
  5. 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.

  1. Navigate to your deployed TIP-20 token contract on the Tempo explorer, select Interact, and call grantRole(bytes32 role, address account).
  2. For role, enter the ISSUER_ROLE ID: 0x114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa122
  3. For account, enter your BurnMintTokenPool address.
  4. 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.

  1. Connect your admin wallet.
  2. Enter your Tempo token address.
  3. 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.

  1. Enter your Tempo token address.
  2. Enter your Tempo BurnMintTokenPool address.
  3. 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.

  1. Set the network to Tempo Moderato Testnet.
  2. Enter your Tempo BurnMintTokenPool address.
  3. 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
  4. Click Chain Update and pay gas.

On each remote chain (add Tempo):

  1. Switch the network to a remote chain (e.g., Avalanche Fuji).
  2. Enter your existing token pool address on that chain.
  3. Click Add a new network โ†’ Tempo Moderato Testnet.
  4. Enter your Tempo token address and Tempo BurnMintTokenPool address.
  5. 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.

  1. In the Token dropdown, paste your source chain's token address โ€” the token symbol should be detected automatically.
  2. Select your source and destination networks.
  3. Set the token amount and approve the spending limit.
  4. 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:

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.

Get the latest Chainlink content straight to your inbox.