The Avail Nexus SDK supports multiple tokens across various blockchain networks. This page provides comprehensive information about supported tokens, their decimals, and contract addresses on each network.
Token Overview
| Token | Name | Decimals | Type | Networks |
|---|
| ETH | Ethereum | 18 | Native | All EVM chains |
| USDC | USD Coin | 6 | Stablecoin | 18 networks |
| USDT | Tether USD | 6 | Stablecoin | 12 networks |
| USDM | USDm | 18 | Stablecoin | MegaETH |
| MATIC | Polygon | 18 | Native | Polygon, Polygon Amoy |
| AVAX | Avalanche | 18 | Native | Avalanche |
| BNB | BNB | 18 | Native | BNB Smart Chain |
| MON | Monad | 18 | Native | Monad, Monad Testnet |
| KAIA | Kaia | 18 | Native | Kaia Mainnet |
| cBTC | Citrea BTC | 18 | Native | Citrea (mainnet & testnet) |
| HYPE | Hype | 18 | Native | Hyper EVM |
USDC Contract Addresses
USD Coin (USDC) is supported on the most networks with 6 decimal places.
Mainnet
| Network | Chain ID | Contract Address |
|---|
| Ethereum | 1 | 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 |
| Base | 8453 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Arbitrum One | 42161 | 0xaf88d065e77c8cc2239327c5edb3a432268e5831 |
| Optimism | 10 | 0x0b2c639c533813f4aa9d7837caf62653d097ff85 |
| Polygon | 137 | 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 |
| Avalanche | 43114 | 0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e |
| Scroll | 534352 | 0x06efdbff2a14a7c8e15944d1f4a48f9f95f663a4 |
| BNB Smart Chain | 56 | 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d |
| Hyper EVM | 999 | 0xb88339CB7199b77E23DB6E890353E22632Ba630f |
| Monad | 143 | 0x754704Bc059F8C67012fEd69BC8A327a5aafb603 |
| Citrea Mainnet | 4114 | 0xE045e6c36cF77FAA2CfB54466D71A3aEF7bbE839 |
Testnet
| Network | Chain ID | Contract Address |
|---|
| Sepolia | 11155111 | 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238 |
| Base Sepolia | 84532 | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
| Arbitrum Sepolia | 421614 | 0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d |
| Optimism Sepolia | 11155420 | 0x5fd84259d66Cd46123540766Be93DFE6D43130D7 |
| Polygon Amoy | 80002 | 0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582 |
| Monad Testnet | 10143 | 0xf817257fed379853cDe0fa4F97AB987181B1E5Ea |
| Citrea Testnet | 5115 | 0xb669dC8cC6D044307Ba45366C0c836eC3c7e31AA |
USDT Contract Addresses
Tether USD (USDT) is available on multiple networks with 6 decimal places.
Mainnet
| Network | Chain ID | Contract Address |
|---|
| Ethereum | 1 | 0xdac17f958d2ee523a2206206994597c13d831ec7 |
| Arbitrum One | 42161 | 0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9 |
| Optimism | 10 | 0x94b008aa00579c1307b0ef2c499ad98a8ce58e58 |
| Polygon | 137 | 0xc2132d05d31c914a87c6611c10748aeb04b58e8f |
| Avalanche | 43114 | 0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7 |
| Scroll | 534352 | 0xf55bec9cafdbe8730f096aa55dad6d22d44099df |
| BNB Smart Chain | 56 | 0x55d398326f99059fF775485246999027B3197955 |
| Kaia Mainnet | 8217 | 0xd077a400968890eacc75cdc901f0356c943e4fdb |
| Hyper EVM | 999 | 0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb |
| Citrea Mainnet | 4114 | 0x9f3096Bac87e7F03DC09b0B416eB0DF837304dc4 |
| MegaETH | 4326 | 0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb |
Testnet
| Network | Chain ID | Contract Address |
|---|
| Arbitrum Sepolia | 421614 | 0xF954d4A5859b37De88a91bdbb8Ad309056FB04B1 |
| Optimism Sepolia | 11155420 | 0x6462693c2F21AC0E517f12641D404895030F7426 |
| Monad Testnet | 10143 | 0x1c56F176D6735888fbB6f8bD9ADAd8Ad7a023a0b |
USDM Contract Addresses
USDm is a stablecoin with 18 decimal places, currently only available on MegaETH.
| Network | Chain ID | Contract Address |
|---|
| MegaETH | 4326 | 0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7 |
Native Tokens
Native tokens are represented with the zero address (0x0000000000000000000000000000000000000000) in the SDK.
| Token | Symbol | Decimals | Networks |
|---|
| Ethereum | ETH | 18 | Ethereum, Base, Arbitrum, Optimism, Scroll, Sepolia, Base Sepolia, Arbitrum Sepolia, Optimism Sepolia, MegaETH |
| Polygon | MATIC | 18 | Polygon, Polygon Amoy |
| Avalanche | AVAX | 18 | Avalanche |
| BNB | BNB | 18 | BNB Smart Chain |
| Monad | MON | 18 | Monad, Monad Testnet |
| Kaia | KAIA | 18 | Kaia Mainnet |
| Citrea Bitcoin | cBTC | 18 | Citrea Mainnet, Citrea Testnet |
| Hype | HYPE | 18 | Hyper EVM |
Programmatic Access
Access token contract addresses programmatically:
import {
TOKEN_CONTRACT_ADDRESSES,
TOKEN_METADATA,
SUPPORTED_CHAINS
} from '@avail-project/nexus-core';
// Get USDC address on Ethereum
const usdcOnEth = TOKEN_CONTRACT_ADDRESSES.USDC[SUPPORTED_CHAINS.ETHEREUM];
console.log(usdcOnEth); // "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
// Get token metadata
const usdcMetadata = TOKEN_METADATA.USDC;
console.log(usdcMetadata);
// {
// symbol: 'USDC',
// name: 'USD Coin',
// decimals: 6,
// icon: 'https://...'
// coingeckoId: 'usd-coin'
// }
// Get USDT address on Polygon
const usdtOnPolygon = TOKEN_CONTRACT_ADDRESSES.USDT[SUPPORTED_CHAINS.POLYGON];
console.log(usdtOnPolygon); // "0xc2132d05d31c914a87c6611c10748aeb04b58e8f"
Bridge Operations
When using bridge operations, you specify tokens by their symbol:
await sdk.bridge({
token: 'USDC', // Use symbol, not address
amount: 100_000_000n, // 100 USDC (6 decimals)
toChainId: 137,
});
Swap Operations
For swap operations, you must use the contract address:
await sdk.swapWithExactIn({
from: [
{
chainId: 10,
amount: 1_000_000n,
tokenAddress: '0x0b2c639c533813f4aa9d7837caf62653d097ff85', // USDC on Optimism
},
],
toChainId: 8453,
toTokenAddress: '0x0000000000000000000000000000000000000000', // ETH (native)
});
Remember: Bridge operations use token symbols (e.g., 'USDC'), while swap operations use contract addresses.
Working with Decimals
Always use the correct decimal places when specifying amounts:
import { parseUnits } from '@avail-project/nexus-core';
// USDC/USDT (6 decimals)
const usdc100 = 100_000_000n; // 100 USDC
const usdc100Alt = parseUnits('100', 6); // Alternative
// ETH/Native tokens (18 decimals)
const eth1 = 1_000_000_000_000_000_000n; // 1 ETH
const eth1Alt = parseUnits('1', 18); // Alternative
// USDM (18 decimals)
const usdm50 = parseUnits('50', 18); // 50 USDM
Using incorrect decimal places will result in transferring the wrong amount. Always verify the token’s decimal count.