Skip to main content

USDG Gateway & Avalanche ICTT

USDG (USD Ghost) is the native stablecoin on Umbraline Testnet, backed 1:1 by USDC via Avalanche's Inter-Chain Token Transfer (ICTT) protocol.

Architecture

┌─────────────────────────────────────────────────────────────────┐
│ Avalanche Fuji C-Chain │
│ │
│ ┌─────────┐ ┌──────────────────┐ │
│ │ USDC │ ──► │ ERC20TokenHome │ (Locks USDC) │
│ └─────────┘ └────────┬─────────┘ │
│ │ Avalanche Warp Messaging │
└────────────────────────────┼────────────────────────────────────┘


┌────────────────────────────┼────────────────────────────────────┐
│ Umbraline Testnet (47474) │
│ │ │
│ ┌────────▼─────────┐ │
│ │ GhostTokenRemote │ (Mints USDG) │
│ │ (USDG) │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────▼─────────┐ │
│ │ GhostVault │ (vanish/summon) │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

Contract Addresses

Avalanche Fuji C-Chain (43113)

ContractAddressPurpose
Test USDC0x5425890298aed601595a70AB815c96711a31Bc65Aave faucet USDC
ERC20TokenHome0x255E85e3a021Cd8074D11dCD73FE342273178048Locks USDC for bridging
TeleporterRegistry0xF86Cb19Ad8405AEFa7d09C778215D2Cb6eBfB228Teleporter coordination
Blockchain ID0x7fc93d85c6d62c5b2ac0b519c87010ea5294012d1e407030d6acd0021cac10d5ICTT routing

Umbraline Testnet (47474)

ContractAddressPurpose
USDG (GhostTokenRemote)0x2A3ad14479ecB02B2B59Fc6D239F0777a0afFE05Stablecoin on L1
TeleporterRegistry0xD984Bc60965390D70D3Bf744cfFD58D7E52D718ETeleporter coordination
TeleporterMessenger0x253b2784c75e510dD0fF1da844684a1aC0aa5fcfCross-chain messaging
Blockchain ID0x4a449a82fed39ca256e89872ee71a24dc2291b848e1fb0785c25e33a0972d304ICTT routing

Bridge Flow: USDC → USDG

const UMBRALINE_BLOCKCHAIN_ID = '0x4a449a82fed39ca256e89872ee71a24dc2291b848e1fb0785c25e33a0972d304';
const USDG_ADDRESS = '0x2A3ad14479ecB02B2B59Fc6D239F0777a0afFE05';
const ERC20_TOKEN_HOME = '0x255E85e3a021Cd8074D11dCD73FE342273178048';

// Step 1: Approve USDC on Fuji C-Chain
await usdc.approve(ERC20_TOKEN_HOME, amount);

// Step 2: Send via ICTT
await tokenHome.send({
destinationBlockchainID: UMBRALINE_BLOCKCHAIN_ID,
destinationTokenTransferrerAddress: USDG_ADDRESS,
recipient: userAddress,
primaryFeeTokenAddress: ethers.ZeroAddress, // Pay fee in AVAX
primaryFee: 0,
secondaryFee: 0,
requiredGasLimit: 250000n,
multiHopFallback: ethers.ZeroAddress,
}, { value: 0 }); // No additional value needed

// Step 3: User receives USDG on Umbraline Testnet
// USDG can be vanished directly to GhostVault

USDG Features

  • Privacy Ready: USDG can be vanished directly to GhostVault (no wrapper needed)
  • Standard ERC-20: Fully compatible with DeFi protocols
  • Bridgeable Back: Can be sent back to C-Chain via send() method on USDG contract

Getting Test USDC

Test USDC can be obtained from the Aave faucet: