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
| Method | Endpoint | Description |
|---|
GET | /api/bridge/routes | Get available bridge routes |
POST | /api/bridge/quote | Get quote for bridge operation |
POST | /api/bridge/operations | Create bridge operation |
GET | /api/bridge/operations | List bridge operations |
GET | /api/bridge/operations/:id | Get operation by ID |
POST | /api/bridge/operations/:id/cancel | Cancel pending operation |
GET | /api/bridge/operations/:id/verify | Verify operation with anchor proof |
GET | /api/bridge/limits | Get bridge limits |
Supported Chains
The bridge service supports Chainlink CCIP-enabled chains:
EVM Chains
| Chain | Chain ID | Native Token | CCIP Chain Selector |
|---|
| Ethereum | 1 | ETH | 5009297550715157269 |
| Base | 8453 | ETH | 15971525489660198786 |
| Arbitrum One | 42161 | ETH | 4949039107694359620 |
| Optimism | 10 | ETH | 3734403246176062136 |
| Polygon | 137 | MATIC | 4051577828743386545 |
| Avalanche | 43114 | AVAX | 6433500567565415381 |
| BNB Smart Chain | 56 | BNB | 11344663589394136015 |
Non-EVM Chains
| Chain | Type | Native Token | Notes |
|---|
| Canton Network | Canton | - | Primary settlement layer |
| Solana | SVM | SOL | CCIP v1.6 SVM support |
| Bitcoin | Bitcoin | BTC | OP_RETURN anchoring |
| Stacks | Bitcoin L2 | STX | Bitcoin L2 with smart contracts |
Supported Tokens
| Token | Symbol | Decimals | Bridge Type | Notes |
|---|
| USD Coin | USDC | 6 | Circle Native | Native Circle CCIP bridging |
| Coinbase Wrapped BTC | cbBTC | 8 | CCT | Chainlink Cross-Chain Token |
| Chainlink | LINK | 18 | Lock/Mint | Also CCIP fee token |
| Wrapped Ether | WETH | 18 | Wrapped | Fee token on EVM chains |
| Aave GHO | GHO | 18 | CCT | Ethereum 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
| Status | Description |
|---|
pending | Operation created, awaiting source transaction |
source_confirmed | Source transaction confirmed on chain |
bridging | CCIP message in transit |
destination_pending | Awaiting destination chain confirmation |
completed | Bridge operation completed successfully |
failed | Operation failed |
Required Confirmations
Confirmations required per chain (from security configuration):
| Chain | Confirmations | Estimated Time |
|---|
| Ethereum | 12 | ~3 minutes |
| Base | 1 | ~2 seconds |
| Arbitrum | 1 | ~250ms |
| Optimism | 1 | ~2 seconds |
| Polygon | 64 | ~2 minutes |
| Solana | 32 | ~13 seconds |
| Bitcoin | 6 | ~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
| Code | HTTP Status | Description |
|---|
MISSING_TENANT_ID | 401 | X-Tenant-Id header required |
ROUTE_NOT_FOUND | 404 | No route for specified chains/asset |
OPERATION_NOT_FOUND | 404 | Operation ID not found |
INVALID_AMOUNT | 400 | Amount outside valid range |
LIMIT_EXCEEDED | 403 | Daily or per-transaction limit exceeded |
CANNOT_CANCEL | 409 | Operation cannot be cancelled in current state |