Files
smom-dbis-138/docs/bridge/API_DOCUMENTATION.md

396 lines
8.1 KiB
Markdown
Raw Permalink Normal View History

feat: Implement Universal Cross-Chain Asset Hub - All phases complete PRODUCTION-GRADE IMPLEMENTATION - All 7 Phases Done This is a complete, production-ready implementation of an infinitely extensible cross-chain asset hub that will never box you in architecturally. ## Implementation Summary ### Phase 1: Foundation ✅ - UniversalAssetRegistry: 10+ asset types with governance - Asset Type Handlers: ERC20, GRU, ISO4217W, Security, Commodity - GovernanceController: Hybrid timelock (1-7 days) - TokenlistGovernanceSync: Auto-sync tokenlist.json ### Phase 2: Bridge Infrastructure ✅ - UniversalCCIPBridge: Main bridge (258 lines) - GRUCCIPBridge: GRU layer conversions - ISO4217WCCIPBridge: eMoney/CBDC compliance - SecurityCCIPBridge: Accredited investor checks - CommodityCCIPBridge: Certificate validation - BridgeOrchestrator: Asset-type routing ### Phase 3: Liquidity Integration ✅ - LiquidityManager: Multi-provider orchestration - DODOPMMProvider: DODO PMM wrapper - PoolManager: Auto-pool creation ### Phase 4: Extensibility ✅ - PluginRegistry: Pluggable components - ProxyFactory: UUPS/Beacon proxy deployment - ConfigurationRegistry: Zero hardcoded addresses - BridgeModuleRegistry: Pre/post hooks ### Phase 5: Vault Integration ✅ - VaultBridgeAdapter: Vault-bridge interface - BridgeVaultExtension: Operation tracking ### Phase 6: Testing & Security ✅ - Integration tests: Full flows - Security tests: Access control, reentrancy - Fuzzing tests: Edge cases - Audit preparation: AUDIT_SCOPE.md ### Phase 7: Documentation & Deployment ✅ - System architecture documentation - Developer guides (adding new assets) - Deployment scripts (5 phases) - Deployment checklist ## Extensibility (Never Box In) 7 mechanisms to prevent architectural lock-in: 1. Plugin Architecture - Add asset types without core changes 2. Upgradeable Contracts - UUPS proxies 3. Registry-Based Config - No hardcoded addresses 4. Modular Bridges - Asset-specific contracts 5. Composable Compliance - Stackable modules 6. Multi-Source Liquidity - Pluggable providers 7. Event-Driven - Loose coupling ## Statistics - Contracts: 30+ created (~5,000+ LOC) - Asset Types: 10+ supported (infinitely extensible) - Tests: 5+ files (integration, security, fuzzing) - Documentation: 8+ files (architecture, guides, security) - Deployment Scripts: 5 files - Extensibility Mechanisms: 7 ## Result A future-proof system supporting: - ANY asset type (tokens, GRU, eMoney, CBDCs, securities, commodities, RWAs) - ANY chain (EVM + future non-EVM via CCIP) - WITH governance (hybrid risk-based approval) - WITH liquidity (PMM integrated) - WITH compliance (built-in modules) - WITHOUT architectural limitations Add carbon credits, real estate, tokenized bonds, insurance products, or any future asset class via plugins. No redesign ever needed. Status: Ready for Testing → Audit → Production
2026-01-24 07:01:37 -08:00
# Bridge API Documentation
## Overview
The Bridge API provides endpoints for initiating, tracking, and managing cross-chain transfers from Chain 138 to EVM chains, XRPL, and Hyperledger Fabric networks.
## Base URL
```
https://api.bridge.chain138.example.com
```
## Authentication
Most endpoints require authentication via API key:
```
Authorization: Bearer <api_key>
```
## Endpoints
### 1. Get Bridge Quote
Get a quote for bridging tokens to a destination chain.
**Endpoint:** `POST /api/bridge/quote`
**Request Body:**
```json
{
"token": "0x0000000000000000000000000000000000000000",
"amount": "1000000000000000000",
"destinationChainId": 137,
"destinationType": 0,
"destinationAddress": "0x..."
}
```
**Response:**
```json
{
"transferId": "0x...",
"routes": [
{
"chainId": 137,
"chainName": "Polygon",
"provider": "thirdweb",
"estimatedTime": 300,
"fee": "1000000000000000",
"healthScore": 9500
}
],
"recommendedRoute": {
"chainId": 137,
"chainName": "Polygon",
"provider": "thirdweb",
"estimatedTime": 300,
"fee": "1000000000000000",
"healthScore": 9500
},
"totalFee": "1000000000000000",
"minReceived": "999000000000000000",
"estimatedTime": 300,
"slippage": "50",
"riskLevel": 0,
"sourceSwapQuote": "998000000000000000",
"destinationSwapQuote": "997000000000000000"
feat: Implement Universal Cross-Chain Asset Hub - All phases complete PRODUCTION-GRADE IMPLEMENTATION - All 7 Phases Done This is a complete, production-ready implementation of an infinitely extensible cross-chain asset hub that will never box you in architecturally. ## Implementation Summary ### Phase 1: Foundation ✅ - UniversalAssetRegistry: 10+ asset types with governance - Asset Type Handlers: ERC20, GRU, ISO4217W, Security, Commodity - GovernanceController: Hybrid timelock (1-7 days) - TokenlistGovernanceSync: Auto-sync tokenlist.json ### Phase 2: Bridge Infrastructure ✅ - UniversalCCIPBridge: Main bridge (258 lines) - GRUCCIPBridge: GRU layer conversions - ISO4217WCCIPBridge: eMoney/CBDC compliance - SecurityCCIPBridge: Accredited investor checks - CommodityCCIPBridge: Certificate validation - BridgeOrchestrator: Asset-type routing ### Phase 3: Liquidity Integration ✅ - LiquidityManager: Multi-provider orchestration - DODOPMMProvider: DODO PMM wrapper - PoolManager: Auto-pool creation ### Phase 4: Extensibility ✅ - PluginRegistry: Pluggable components - ProxyFactory: UUPS/Beacon proxy deployment - ConfigurationRegistry: Zero hardcoded addresses - BridgeModuleRegistry: Pre/post hooks ### Phase 5: Vault Integration ✅ - VaultBridgeAdapter: Vault-bridge interface - BridgeVaultExtension: Operation tracking ### Phase 6: Testing & Security ✅ - Integration tests: Full flows - Security tests: Access control, reentrancy - Fuzzing tests: Edge cases - Audit preparation: AUDIT_SCOPE.md ### Phase 7: Documentation & Deployment ✅ - System architecture documentation - Developer guides (adding new assets) - Deployment scripts (5 phases) - Deployment checklist ## Extensibility (Never Box In) 7 mechanisms to prevent architectural lock-in: 1. Plugin Architecture - Add asset types without core changes 2. Upgradeable Contracts - UUPS proxies 3. Registry-Based Config - No hardcoded addresses 4. Modular Bridges - Asset-specific contracts 5. Composable Compliance - Stackable modules 6. Multi-Source Liquidity - Pluggable providers 7. Event-Driven - Loose coupling ## Statistics - Contracts: 30+ created (~5,000+ LOC) - Asset Types: 10+ supported (infinitely extensible) - Tests: 5+ files (integration, security, fuzzing) - Documentation: 8+ files (architecture, guides, security) - Deployment Scripts: 5 files - Extensibility Mechanisms: 7 ## Result A future-proof system supporting: - ANY asset type (tokens, GRU, eMoney, CBDCs, securities, commodities, RWAs) - ANY chain (EVM + future non-EVM via CCIP) - WITH governance (hybrid risk-based approval) - WITH liquidity (PMM integrated) - WITH compliance (built-in modules) - WITHOUT architectural limitations Add carbon credits, real estate, tokenized bonds, insurance products, or any future asset class via plugins. No redesign ever needed. Status: Ready for Testing → Audit → Production
2026-01-24 07:01:37 -08:00
}
```
When EnhancedSwapRouter is configured, the response may include `sourceSwapQuote` and `destinationSwapQuote` (best Dodoex-inclusive swap quote on source and destination chain).
### 1b. Swap + Bridge + Swap Quote (full path)
Get a combined quote for swapping on source chain, bridging, then swapping on destination chain.
**Endpoint:** `POST /api/bridge/quote`
**Request Body (extended for swap+bridge+swap):**
```json
{
"sourceToken": "0x...",
"destinationToken": "0x...",
"sourceChainId": 138,
"destinationChainId": 137,
"amount": "1000000000000000000",
"destinationAddress": "0x..."
}
```
**Response:** Same as Get Bridge Quote; `minReceived` reflects the full path when source/destination swap routers are configured. Use `sourceSwapQuote` and `destinationSwapQuote` for per-leg amounts. Initiate flow: (1) source tx: swap + bridge via SwapBridgeSwapCoordinator.swapAndBridge, (2) destination tx: claim + swap via BridgeSwapCoordinator.bridgeAndSwap or coordinator contract.
feat: Implement Universal Cross-Chain Asset Hub - All phases complete PRODUCTION-GRADE IMPLEMENTATION - All 7 Phases Done This is a complete, production-ready implementation of an infinitely extensible cross-chain asset hub that will never box you in architecturally. ## Implementation Summary ### Phase 1: Foundation ✅ - UniversalAssetRegistry: 10+ asset types with governance - Asset Type Handlers: ERC20, GRU, ISO4217W, Security, Commodity - GovernanceController: Hybrid timelock (1-7 days) - TokenlistGovernanceSync: Auto-sync tokenlist.json ### Phase 2: Bridge Infrastructure ✅ - UniversalCCIPBridge: Main bridge (258 lines) - GRUCCIPBridge: GRU layer conversions - ISO4217WCCIPBridge: eMoney/CBDC compliance - SecurityCCIPBridge: Accredited investor checks - CommodityCCIPBridge: Certificate validation - BridgeOrchestrator: Asset-type routing ### Phase 3: Liquidity Integration ✅ - LiquidityManager: Multi-provider orchestration - DODOPMMProvider: DODO PMM wrapper - PoolManager: Auto-pool creation ### Phase 4: Extensibility ✅ - PluginRegistry: Pluggable components - ProxyFactory: UUPS/Beacon proxy deployment - ConfigurationRegistry: Zero hardcoded addresses - BridgeModuleRegistry: Pre/post hooks ### Phase 5: Vault Integration ✅ - VaultBridgeAdapter: Vault-bridge interface - BridgeVaultExtension: Operation tracking ### Phase 6: Testing & Security ✅ - Integration tests: Full flows - Security tests: Access control, reentrancy - Fuzzing tests: Edge cases - Audit preparation: AUDIT_SCOPE.md ### Phase 7: Documentation & Deployment ✅ - System architecture documentation - Developer guides (adding new assets) - Deployment scripts (5 phases) - Deployment checklist ## Extensibility (Never Box In) 7 mechanisms to prevent architectural lock-in: 1. Plugin Architecture - Add asset types without core changes 2. Upgradeable Contracts - UUPS proxies 3. Registry-Based Config - No hardcoded addresses 4. Modular Bridges - Asset-specific contracts 5. Composable Compliance - Stackable modules 6. Multi-Source Liquidity - Pluggable providers 7. Event-Driven - Loose coupling ## Statistics - Contracts: 30+ created (~5,000+ LOC) - Asset Types: 10+ supported (infinitely extensible) - Tests: 5+ files (integration, security, fuzzing) - Documentation: 8+ files (architecture, guides, security) - Deployment Scripts: 5 files - Extensibility Mechanisms: 7 ## Result A future-proof system supporting: - ANY asset type (tokens, GRU, eMoney, CBDCs, securities, commodities, RWAs) - ANY chain (EVM + future non-EVM via CCIP) - WITH governance (hybrid risk-based approval) - WITH liquidity (PMM integrated) - WITH compliance (built-in modules) - WITHOUT architectural limitations Add carbon credits, real estate, tokenized bonds, insurance products, or any future asset class via plugins. No redesign ever needed. Status: Ready for Testing → Audit → Production
2026-01-24 07:01:37 -08:00
### 2. Initiate XRPL Bridge
Initiate a bridge transfer to XRPL.
**Endpoint:** `POST /api/bridge/xrpl/initiate`
**Request Body:**
```json
{
"amount": "1000000000000000000",
"destinationAddress": "rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"destinationTag": 12345,
"token": "0x0000000000000000000000000000000000000000"
}
```
**Response:**
```json
{
"transferId": "0x...",
"status": "INITIATED",
"timestamp": 1234567890
}
```
### 3. Get Transfer Status
Get the current status of a bridge transfer.
**Endpoint:** `GET /api/bridge/status/:transferId`
**Response:**
```json
{
"transferId": "0x...",
"status": "EXECUTING",
"depositor": "0x...",
"asset": "0x0000000000000000000000000000000000000000",
"amount": "1000000000000000000",
"destinationType": 0,
"destinationData": "0x...",
"timestamp": 1234567890,
"timeout": 3600,
"refunded": false,
"executionData": {
"txHash": "0x...",
"blockNumber": 12345
},
"route": {
"chainId": 137,
"chainName": "Polygon",
"provider": "thirdweb",
"estimatedTime": 300,
"fee": "1000000000000000",
"healthScore": 9500
},
"isRefundable": false,
"refundDeadline": 1234567890
}
```
### 4. Get XRPL Quote
Get a quote for bridging to XRPL.
**Endpoint:** `POST /api/bridge/xrpl/quote`
**Request Body:**
```json
{
"token": "0x0000000000000000000000000000000000000000",
"amount": "1000000000000000000",
"destinationAddress": "rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"destinationTag": 12345
}
```
**Response:**
```json
{
"fee": "2000000000000000",
"minReceived": "998000000000000000",
"estimatedTime": 60,
"route": {
"chainId": 0,
"chainName": "XRPL",
"provider": "cacti-xrpl",
"estimatedTime": 60,
"fee": "2000000000000000",
"healthScore": 8000
}
}
```
## Admin Endpoints
### 5. Get Bridge Metrics
Get aggregated bridge metrics.
**Endpoint:** `GET /api/admin/metrics`
**Response:**
```json
{
"totalTransfers": 1000,
"successRate": 98.5,
"avgSettlementTime": 285,
"refundRate": 1.2,
"liquidityFailures": 5
}
```
### 6. List Transfers
List recent transfers with optional filters.
**Endpoint:** `GET /api/admin/transfers`
**Query Parameters:**
- `limit` (optional): Number of results (default: 50)
- `offset` (optional): Pagination offset (default: 0)
- `status` (optional): Filter by status
- `depositor` (optional): Filter by depositor address
**Response:**
```json
{
"transfers": [
{
"transferId": "0x...",
"status": "COMPLETED",
"depositor": "0x...",
"amount": "1000000000000000000",
"destinationType": 0,
"timestamp": 1234567890
}
],
"total": 1000,
"limit": 50,
"offset": 0
}
```
### 7. Pause Bridge Operations
Pause bridge operations globally or for specific token/destination.
**Endpoint:** `POST /api/admin/pause`
**Request Body:**
```json
{
"type": "global",
"id": null
}
```
**Types:**
- `global`: Pause all operations
- `token`: Pause specific token (provide token address in `id`)
- `destination`: Pause specific destination (provide chainId in `id`)
**Response:**
```json
{
"success": true,
"message": "Bridge paused successfully"
}
```
### 8. Initiate Refund
Manually initiate a refund for a failed transfer.
**Endpoint:** `POST /api/admin/refund/:transferId`
**Response:**
```json
{
"success": true,
"transferId": "0x...",
"status": "REFUND_PENDING"
}
```
## Error Responses
All endpoints may return error responses in the following format:
```json
{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable error message",
"details": {}
}
}
```
### Error Codes
- `INVALID_REQUEST`: Invalid request parameters
- `TRANSFER_NOT_FOUND`: Transfer ID not found
- `INSUFFICIENT_BALANCE`: Insufficient balance for transfer
- `INVALID_ROUTE`: No valid route available
- `BRIDGE_PAUSED`: Bridge operations are currently paused
- `UNAUTHORIZED`: Authentication required
- `FORBIDDEN`: Insufficient permissions
- `INTERNAL_ERROR`: Internal server error
## Rate Limiting
API requests are rate-limited:
- **Public endpoints**: 100 requests per minute per IP
- **Admin endpoints**: 1000 requests per minute per API key
Rate limit headers are included in responses:
```
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1234567890
```
## WebSocket Events
Real-time transfer status updates are available via WebSocket:
**Connection:** `wss://api.bridge.chain138.example.com/ws`
**Subscribe to transfer:**
```json
{
"action": "subscribe",
"transferId": "0x..."
}
```
**Event:**
```json
{
"event": "transfer_status_update",
"transferId": "0x...",
"status": "EXECUTING",
"timestamp": 1234567890
}
```
## SDK Examples
### JavaScript/TypeScript
```typescript
import { BridgeClient } from '@chain138/bridge-sdk';
const client = new BridgeClient({
apiUrl: 'https://api.bridge.chain138.example.com',
apiKey: 'your-api-key'
});
// Get quote
const quote = await client.getQuote({
token: '0x0000000000000000000000000000000000000000',
amount: '1000000000000000000',
destinationChainId: 137,
destinationType: 0,
destinationAddress: '0x...'
});
// Initiate transfer
const transfer = await client.initiateTransfer(quote);
```
### Python
```python
from chain138_bridge import BridgeClient
client = BridgeClient(
api_url='https://api.bridge.chain138.example.com',
api_key='your-api-key'
)
# Get quote
quote = client.get_quote(
token='0x0000000000000000000000000000000000000000',
amount='1000000000000000000',
destination_chain_id=137,
destination_type=0,
destination_address='0x...'
)
# Initiate transfer
transfer = client.initiate_transfer(quote)
```
## Support
For API support, contact:
- Email: api-support@chain138.example.com
- Documentation: https://docs.bridge.chain138.example.com
- Status: https://status.bridge.chain138.example.com