An agent’s bond capital does not have to start on Arc. This mini-demo brings USDC from another testnet (Base Sepolia) to Arc and deposits it straight into AgentBond, so an agent funded anywhere can post its slashable bond on Arc in one runnable flow.
[Base Sepolia] ── kit.bridge(FAST) ──▶ [Arc] ── AgentBond.deposit ──▶ bonded capital
bridge-onboard.ts)Built with Circle’s official App Kit / Bridge Kit (@circle-fin/bridge-kit +
@circle-fin/adapter-viem-v2), CCTP V2 under the hood. Bridge Kit lists Arc Testnet natively
(ArcTestnet, chainId 5042002, CCTP domain 26), so the whole cross-chain leg is one
kit.bridge({ from: 'Base_Sepolia', to: 'Arc_Testnet', config: { transferSpeed: 'FAST' } }) call,
no raw depositForBurn / attestation-polling / receiveMessage by hand. The AgentBond deposit is
a plain viem call on Arc afterwards.
npm install
PRIVATE_KEY=0x<burner> npm run onboard # burner 0x2e36..A08a, never a personal key
Verified: with the SDK installed,
kit.bridge(Base_Sepolia → Arc_Testnet)resolves the route and validates against the real Base-Sepolia USDC, it stops only at the funding gate (BALANCE_INSUFFICIENT_TOKEN) until the burner is funded, confirming Arc is a first-class Bridge-Kit destination.
run.sh)The same flow with bare cast calls against the canonical CCTP V2 contracts ,
approve → TokenMessengerV2.depositForBurn → poll the public Iris sandbox → Arc
MessageTransmitterV2.receiveMessage. Kept as a low-level reference that shows exactly what the
SDK does under the hood (and as a fallback). ./run.sh.
Arc-side gas is USDC and the burner already holds it. A full run writes result.json with every
tx hash; the captured transcript is in SAMPLE_RUN.md.
| Address | CCTP domain | |
|---|---|---|
| TokenMessengerV2 (canonical, every chain) | 0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA |
, |
| MessageTransmitterV2 (canonical, every chain) | 0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275 |
, |
| USDC · Base Sepolia | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
src 6 |
| USDC · Arc | 0x3600000000000000000000000000000000000000 |
dst 26 |
| AgentBond · Arc | 0x4383Ea48837eF7e60fC22BD67945BCBf0551702c |
, |
Standard Transfer (finality threshold 2000) is free; Fast Transfer (1000) costs a few
micro-USDC and clears in seconds on testnet. This demo uses Fast.