Bridge Service API

Cross-chain bridge operations powered by Chainlink CCIP v1.6. Transfer assets between Canton Network and supported EVM chains, Solana, and Bitcoin with cryptographic verification and Canton anchor proofs.

Endpoints

MethodEndpointDescription
GET/api/bridge/routesGet available bridge routes
POST/api/bridge/quoteGet quote for bridge operation
POST/api/bridge/operationsCreate bridge operation
GET/api/bridge/operationsList bridge operations
GET/api/bridge/operations/:idGet operation by ID
POST/api/bridge/operations/:id/cancelCancel pending operation
GET/api/bridge/operations/:id/verifyVerify operation with anchor proof
GET/api/bridge/limitsGet bridge limits

Supported Chains

The bridge service supports Chainlink CCIP-enabled chains:

EVM Chains

ChainChain IDNative TokenCCIP Chain Selector
Ethereum1ETH5009297550715157269
Base8453ETH15971525489660198786
Arbitrum One42161ETH4949039107694359620
Optimism10ETH3734403246176062136
Polygon137MATIC4051577828743386545
Avalanche43114AVAX6433500567565415381
BNB Smart Chain56BNB11344663589394136015

Non-EVM Chains

ChainTypeNative TokenNotes
Canton NetworkCanton-Primary settlement layer
SolanaSVMSOLCCIP v1.6 SVM support
BitcoinBitcoinBTCOP_RETURN anchoring
StacksBitcoin L2STXBitcoin L2 with smart contracts

Supported Tokens

TokenSymbolDecimalsBridge TypeNotes
USD CoinUSDC6Circle NativeNative Circle CCIP bridging
Coinbase Wrapped BTCcbBTC8CCTChainlink Cross-Chain Token
ChainlinkLINK18Lock/MintAlso CCIP fee token
Wrapped EtherWETH18WrappedFee token on EVM chains
Aave GHOGHO18CCTEthereum mainnet fee token

Token Addresses

// USDC addresses by chain
{
  "ethereum": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
  "base": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "arbitrum": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
  "optimism": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
  "polygon": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
  "solana": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}

// cbBTC addresses
{
  "ethereum": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
  "base": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"
}

Get Routes

GET /api/bridge/routes
X-Tenant-Id: your-tenant-id

Response

[
  {
    "id": "canton-eth-usdc",
    "fromChain": "canton",
    "toChain": "ethereum",
    "asset": "USDC",
    "minAmount": "10.0",
    "maxAmount": "100000.0",
    "fee": {
      "fixed": "1.0",
      "percentBps": 10
    },
    "estimatedTimeSeconds": 300,
    "available": true
  },
  {
    "id": "eth-base-usdc",
    "fromChain": "ethereum",
    "toChain": "base",
    "asset": "USDC",
    "minAmount": "10.0",
    "maxAmount": "50000.0",
    "fee": {
      "fixed": "0.5",
      "percentBps": 5
    },
    "estimatedTimeSeconds": 180,
    "available": true
  }
]

Get Quote

POST /api/bridge/quote
X-Tenant-Id: your-tenant-id
Content-Type: application/json

{
  "fromChain": "ethereum",
  "toChain": "base",
  "asset": "USDC",
  "amount": "1000.0",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f3..."
}

Response

{
  "route": {
    "id": "eth-base-usdc",
    "fromChain": "ethereum",
    "toChain": "base",
    "asset": "USDC",
    "minAmount": "10.0",
    "maxAmount": "50000.0",
    "fee": {
      "fixed": "0.5",
      "percentBps": 5
    },
    "estimatedTimeSeconds": 180,
    "available": true
  },
  "inputAmount": "1000.0",
  "outputAmount": "999.0",
  "fee": "1.0",
  "feeUsd": "1.0",
  "estimatedTimeSeconds": 180,
  "expiresAt": "2024-01-15T10:40:00Z",
  "quoteId": "qt_abc123..."
}

Create Operation

POST /api/bridge/operations
X-Tenant-Id: your-tenant-id
Content-Type: application/json

{
  "quoteId": "qt_abc123...",
  "fromChain": "ethereum",
  "toChain": "base",
  "asset": "USDC",
  "amount": "1000.0",
  "recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f3...",
  "sourceAddress": "0x123..."
}

Response

{
  "id": "op_def456...",
  "status": "pending",
  "fromChain": "ethereum",
  "toChain": "base",
  "asset": "USDC",
  "amount": "1000.0",
  "fee": "1.0",
  "sourceTxHash": null,
  "destinationTxHash": null,
  "sourceConfirmations": 0,
  "requiredConfirmations": 12,
  "anchorProof": null,
  "createdAt": "2024-01-15T10:30:00Z",
  "updatedAt": "2024-01-15T10:30:00Z",
  "completedAt": null,
  "error": null
}

Operation Status Values

StatusDescription
pendingOperation created, awaiting source transaction
source_confirmedSource transaction confirmed on chain
bridgingCCIP message in transit
destination_pendingAwaiting destination chain confirmation
completedBridge operation completed successfully
failedOperation failed

Required Confirmations

Confirmations required per chain (from security configuration):

ChainConfirmationsEstimated Time
Ethereum12~3 minutes
Base1~2 seconds
Arbitrum1~250ms
Optimism1~2 seconds
Polygon64~2 minutes
Solana32~13 seconds
Bitcoin6~60 minutes

Verify Operation

Verify operation includes Canton Network anchor proof for cryptographic verification:

GET /api/bridge/operations/:id/verify
X-Tenant-Id: your-tenant-id

Response

{
  "verified": true,
  "proof": {
    "blockHash": "0x...",
    "blockNumber": 12345678,
    "transactionHash": "0x...",
    "proofType": "anchor",
    "proofData": "...",
    "verifiedAt": "2024-01-15T10:35:00Z"
  },
  "details": [
    "Operation completed successfully",
    "Source confirmations: 12",
    "Source transaction: 0x...",
    "Destination transaction: 0x..."
  ]
}

Get Limits

GET /api/bridge/limits
X-Tenant-Id: your-tenant-id

Response

{
  "dailyLimit": "100000.0",
  "dailyUsed": "5000.0",
  "dailyRemaining": "95000.0",
  "perTxLimit": "10000.0",
  "resetsAt": "2024-01-16T00:00:00Z"
}

Bitcoin OP_RETURN Anchoring

For Bitcoin, the bridge uses OP_RETURN transactions for immutable state anchoring:

// OP_RETURN data format (47 bytes)
TENZRO<version:1><block_height:8><state_root:32>

// Example
TENZRO\x01\x00\x00\x00\x00\x00\xbc\x61\x4e<32-byte-hash>

Bitcoin anchoring provides the highest level of immutability but with longer confirmation times (~60 minutes for 6 confirmations).

Error Responses

CodeHTTP StatusDescription
MISSING_TENANT_ID401X-Tenant-Id header required
ROUTE_NOT_FOUND404No route for specified chains/asset
OPERATION_NOT_FOUND404Operation ID not found
INVALID_AMOUNT400Amount outside valid range
LIMIT_EXCEEDED403Daily or per-transaction limit exceeded
CANNOT_CANCEL409Operation cannot be cancelled in current state