# Cross-Chain Operations for hermes Agents **Level**: Intermediate **Prerequisites**: Basic CLI knowledge, AITBC CLI installed, exchange service running **Estimated Time**: 30 minutes **Last Updated**: 2026-05-27 **Version**: 1.0 ## ๐Ÿงญ **Navigation Path:** **๐Ÿ  [Documentation Home](../README.md)** โ†’ **๐ŸŽญ [Agent Scenarios](./README.md)** โ†’ *You are here* **breadcrumb**: Home โ†’ Scenarios โ†’ Cross-Chain Operations --- ## ๐ŸŽฏ **See Also:** - **๐Ÿ“– Previous Scenario**: [52 Resource Management](./52_resource_management.md) - **๐Ÿ“– Next Scenario**: [54 Monitoring and Metrics](./54_monitoring_and_metrics.md) - **๐Ÿ“– Related**: [27 Cross Chain Trader](./27_cross_chain_trader.md) - **๐Ÿ“– Related**: [38 Cross Chain Market Maker](./38_cross_chain_market_maker.md) - **โš™๏ธ Cross-Chain Documentation**: [CLI Cross-Chain Commands](../cli/CLI_DOCUMENTATION.md) --- ## ๐Ÿ“š **Scenario Overview** This scenario demonstrates how hermes agents use cross-chain operations to transfer assets between different blockchain networks, manage liquidity pools, and monitor cross-chain transaction status. ### **Use Case** An hermes agent needs to: - Transfer AIT tokens between blockchain networks - Monitor cross-chain swap rates and fees - Bridge assets across chains - Track cross-chain transaction status - Manage liquidity pool positions - Analyze cross-chain statistics ### **What You'll Learn** - Query cross-chain exchange rates - Execute cross-chain swaps - Monitor swap status and history - Bridge assets between chains - Manage liquidity pools - Analyze cross-chain statistics ### **Features Combined** - **Cross-Chain Swaps**: Asset transfers between networks - **Bridge Operations**: Cross-chain asset bridging - **Liquidity Management**: Pool position management - **Rate Monitoring**: Real-time exchange rate tracking --- ## ๐Ÿ“‹ **Prerequisites** ### **Knowledge Required** - Basic command-line interface usage - Understanding of blockchain networks and cross-chain operations - AITBC CLI installed and accessible ### **System Requirements** - AITBC CLI installed - Exchange service running (http://127.0.0.1:18001) - Config file with `exchange_url` set - API key configured (if required by exchange) ### **Setup Required** - Exchange service running and accessible - Config file with exchange service URL - Wallet with sufficient balance for swaps --- ## ๐Ÿš€ **Quick Start** ```bash # Query exchange rates aitbc cross-chain rates --from AIT --to ETH # Execute cross-chain swap aitbc cross-chain swap --from AIT --to ETH --amount 100 # Check swap status aitbc cross-chain status --swap-id swap_123456 # Bridge assets aitbc cross-chain bridge --from AIT --to ETH --amount 50 # View liquidity pools aitbc cross-chain pools # View cross-chain statistics aitbc cross-chain stats ``` --- ## ๐Ÿ“– **Detailed Steps** ### Step 1: Query Exchange Rates Check current cross-chain exchange rates: ```bash # Get rate for AIT to ETH aitbc cross-chain rates --from AIT --to ETH # Get rate for ETH to AIT aitbc cross-chain rates --from ETH --to AIT # Get rate for AIT to BTC aitbc cross-chain rates --from AIT --to BTC ``` **Expected Output:** ``` Exchange Rate: AIT -> ETH { "from": "AIT", "to": "ETH", "rate": 0.00045, "inverse_rate": 2222.22, "fee": 0.005, "min_amount": 10, "max_amount": 10000 } ``` ### Step 2: Execute Cross-Chain Swap Transfer assets between blockchain networks: ```bash # Swap 100 AIT for ETH aitbc cross-chain swap --from AIT --to ETH --amount 100 # Swap 1 ETH for AIT aitbc cross-chain swap --from ETH --to AIT --amount 1 # Swap with custom timeout aitbc cross-chain swap --from AIT --to ETH --amount 500 --timeout 300 ``` **Expected Output:** ``` Swap initiated { "swap_id": "swap_1716789123", "from": "AIT", "to": "ETH", "amount": 100, "rate": 0.00045, "fee": 0.5, "expected_output": 0.045, "status": "pending", "estimated_completion": "2026-05-27T08:35:00" } ``` ### Step 3: Check Swap Status Monitor cross-chain swap progress: ```bash # Check specific swap status aitbc cross-chain status --swap-id swap_1716789123 # Check status by transaction hash aitbc cross-chain status --tx-hash 0xabc123... ``` **Expected Output:** ``` Swap Status: swap_1716789123 { "swap_id": "swap_1716789123", "status": "completed", "from": "AIT", "to": "ETH", "amount": 100, "output_amount": 0.045, "fee": 0.5, "tx_hash": "0xabc123...", "completed_at": "2026-05-27T08:35:00" } ``` ### Step 4: View Swap History Review past cross-chain swaps: ```bash # List all swaps aitbc cross-chain swaps # List swaps with limit aitbc cross-chain swaps --limit 10 # List swaps by status aitbc cross-chain swaps --status completed ``` **Expected Output:** ``` Swap History: [ { "swap_id": "swap_1716789123", "from": "AIT", "to": "ETH", "amount": 100, "status": "completed", "timestamp": "2026-05-27T08:30:00" }, { "swap_id": "swap_1716789000", "from": "ETH", "to": "AIT", "amount": 1, "status": "completed", "timestamp": "2026-05-27T08:00:00" } ] ``` ### Step 5: Bridge Assets Bridge assets between blockchain networks: ```bash # Bridge 50 AIT to ETH aitbc cross-chain bridge --from AIT --to ETH --amount 50 # Bridge with custom destination address aitbc cross-chain bridge --from AIT --to ETH --amount 100 \ --destination 0x1234567890abcdef... # Bridge with custom timeout aitbc cross-chain bridge --from AIT --to ETH --amount 200 --timeout 600 ``` **Expected Output:** ``` Bridge initiated { "bridge_id": "bridge_1716789123", "from": "AIT", "to": "ETH", "amount": 50, "destination": "0x1234567890abcdef...", "status": "pending", "estimated_completion": "2026-05-27T08:40:00" } ``` ### Step 6: Check Bridge Status Monitor bridge operation progress: ```bash # Check bridge status aitbc cross-chain bridge-status --bridge-id bridge_1716789123 ``` **Expected Output:** ``` Bridge Status: bridge_1716789123 { "bridge_id": "bridge_1716789123", "status": "completed", "from": "AIT", "to": "ETH", "amount": 50, "received_amount": 49.75, "fee": 0.25, "tx_hash": "0xdef456...", "completed_at": "2026-05-27T08:40:00" } ``` ### Step 7: View Liquidity Pools Check available liquidity pools: ```bash # List all pools aitbc cross-chain pools # List pools for specific pair aitbc cross-chain pools --pair AIT-ETH # List pools with details aitbc cross-chain pools --details ``` **Expected Output:** ``` Liquidity Pools: [ { "pair": "AIT-ETH", "pool_address": "0xpool123...", "total_liquidity": 1000000, "ait_balance": 500000, "eth_balance": 225, "apy": 8.5, "volume_24h": 50000 }, { "pair": "AIT-BTC", "pool_address": "0xpool456...", "total_liquidity": 500000, "ait_balance": 250000, "btc_balance": 0.5, "apy": 6.2, "volume_24h": 25000 } ] ``` ### Step 8: View Cross-Chain Statistics Analyze cross-chain operation metrics: ```bash # View overall statistics aitbc cross-chain stats # View statistics for specific period aitbc cross-chain stats --period 24h # View statistics for specific pair aitbc cross-chain stats --pair AIT-ETH ``` **Expected Output:** ``` Cross-Chain Statistics: { "total_swaps_24h": 1500, "total_volume_24h": 750000, "total_bridges_24h": 200, "total_bridge_volume_24h": 100000, "active_pools": 5, "total_liquidity": 2500000, "average_swap_time": 300, "average_bridge_time": 600, "success_rate": 99.5 } ``` --- ## ๐Ÿ”ง **Advanced Usage** ### Batch Cross-Chain Operations Execute multiple swaps in sequence: ```bash #!/bin/bash # batch_swaps.sh # Swap AIT to ETH aitbc cross-chain swap --from AIT --to ETH --amount 100 # Swap ETH to BTC aitbc cross-chain swap --from ETH --to BTC --amount 0.045 # Swap BTC back to AIT aitbc cross-chain swap --from BTC --to AIT --amount 0.001 ``` ### Rate Monitoring Script Monitor exchange rates over time: ```bash #!/bin/bash # monitor_rates.sh while true; do clear echo "=== Cross-Chain Exchange Rates ===" aitbc cross-chain rates --from AIT --to ETH aitbc cross-chain rates --from AIT --to BTC aitbc cross-chain rates --from ETH --to BTC sleep 60 done ``` ### Arbitrage Detection Identify arbitrage opportunities: ```bash #!/bin/bash # arbitrage_check.sh # Get AIT -> ETH rate aitbc cross-chain rates --from AIT --to ETH > rate1.json # Get ETH -> AIT rate aitbc cross-chain rates --from ETH --to AIT > rate2.json # Calculate arbitrage (simplified) python3 << EOF import json with open('rate1.json') as f: rate1 = json.load(f) with open('rate2.json') as f: rate2 = json.load(f) # Calculate round-trip round_trip = rate1['rate'] * rate2['rate'] profit = (round_trip - 1) * 100 print(f"Round-trip rate: {round_trip:.6f}") print(f"Profit margin: {profit:.2f}%") if profit > 1: print("Arbitrage opportunity detected!") else: print("No arbitrage opportunity") EOF ``` ### Liquidity Pool Management Monitor and manage pool positions: ```bash #!/bin/bash # pool_monitor.sh while true; do clear echo "=== Liquidity Pool Status ===" aitbc cross-chain pools --details echo "" echo "=== Pool APY Comparison ===" aitbc cross-chain pools | jq -r '.[] | "\(.pair): \(.apy)%"' sleep 300 # Check every 5 minutes done ``` --- ## โš ๏ธ **Important Notes** ### Exchange Service Dependency - **Service Required**: Exchange service must be running - **Network Access**: Requires network connectivity to exchange - **API Rate Limits**: Respect exchange API rate limits - **Configuration**: Exchange URL must be configured in config file ### Swap and Bridge Fees - **Swap Fees**: Typically 0.5% of transaction amount - **Bridge Fees**: Typically 0.25% of transaction amount - **Gas Fees**: Additional gas fees apply on destination chain - **Minimum Amounts**: Minimum swap/bridge amounts apply ### Transaction Times - **Swap Time**: Typically 5-10 minutes - **Bridge Time**: Typically 10-20 minutes - **Network Congestion**: Times may vary with network congestion - **Timeouts**: Use custom timeout for large transactions ### Liquidity Pool Risks - **Impermanent Loss**: Pool positions subject to impermanent loss - **APY Variability**: APY rates fluctuate with market conditions - **Liquidity Depth**: Low liquidity pools may have slippage - **Pool Composition**: Monitor pool composition changes --- ## ๐Ÿ› **Troubleshooting** ### Exchange service unavailable **Error:** ``` Error: Failed to connect to exchange service ``` **Solution:** ```bash # Check exchange service status curl http://127.0.0.1:18001/health # Verify exchange URL in config aitbc config show # Check if exchange service is running systemctl status aitbc-exchange-service ``` ### Insufficient balance **Error:** ``` Error: Insufficient balance for swap ``` **Solution:** ```bash # Check wallet balance aitbc wallet my-wallet balance # Ensure sufficient balance including fees # Balance must be >= amount + fee + gas ``` ### Invalid swap amount **Error:** ``` Error: Swap amount below minimum ``` **Solution:** ```bash # Check minimum amount aitbc cross-chain rates --from AIT --to ETH # Use amount >= minimum aitbc cross-chain swap --from AIT --to ETH --amount 100 ``` ### Swap timeout **Error:** ``` Error: Swap operation timed out ``` **Solution:** ```bash # Use custom timeout aitbc cross-chain swap --from AIT --to ETH --amount 1000 --timeout 600 # Check swap status manually aitbc cross-chain status --swap-id swap_123456 ``` ### Bridge operation failed **Error:** ``` Error: Bridge operation failed ``` **Solution:** ```bash # Check bridge status for details aitbc cross-chain bridge-status --bridge-id bridge_123456 # Verify destination address is valid # Ensure sufficient balance for bridge fees ``` --- ## ๐Ÿงช **Validation** Validate this scenario with the shared 3-node harness: ```bash bash scripts/workflow/44_comprehensive_multi_node_scenario.sh ``` **Node coverage**: - `aitbc1`: genesis / primary node checks - `aitbc`: follower / local node checks - `gitea-runner`: automation / CI node checks **Validation guide**: - [Scenario Validation Guide](./VALIDATION.md) **Expected result**: - Scenario-specific commands complete successfully - Cross-node health checks pass - Blockchain heights remain in sync - Any node-specific step is documented in the scenario workflow **Note**: Cross-chain commands require exchange service running. If the service is unavailable, commands will return network errors. This is expected behavior for scenarios dependent on external services. --- ## ๐Ÿ’ป **Code Examples Using Agent SDK** ### Example 1: Execute Cross-Chain Swap Programmatically ```python from aitbc_agent_sdk import Agent, AgentConfig config = AgentConfig( name="cross-chain-agent", blockchain_network="mainnet" ) agent = Agent(config) agent.start() # Execute swap result = agent.cross_chain_swap( from_token="AIT", to_token="ETH", amount=100 ) print(f"Swap ID: {result['swap_id']}") print(f"Expected output: {result['expected_output']}") print(f"Status: {result['status']}") ``` ### Example 2: Monitor Exchange Rates ```python from aitbc_agent_sdk import Agent, AgentConfig import asyncio async def monitor_rates(): config = AgentConfig( name="rate-monitor", blockchain_network="mainnet" ) agent = Agent(config) await agent.start() # Monitor rates while True: rate = await agent.get_exchange_rate("AIT", "ETH") print(f"AIT -> ETH: {rate['rate']}") if rate['rate'] > 0.0005: print("Favorable rate detected!") await asyncio.sleep(60) asyncio.run(monitor_rates()) ``` ### Example 3: Automated Arbitrage ```python from aitbc_agent_sdk import Agent, AgentConfig import asyncio async def arbitrage_bot(): config = AgentConfig( name="arbitrage-bot", blockchain_network="mainnet" ) agent = Agent(config) await agent.start() while True: # Get rates rate1 = await agent.get_exchange_rate("AIT", "ETH") rate2 = await agent.get_exchange_rate("ETH", "AIT") # Calculate round-trip round_trip = rate1['rate'] * rate2['rate'] profit = (round_trip - 1) * 100 if profit > 1.5: # 1.5% profit threshold print(f"Arbitrage opportunity: {profit:.2f}%") # Execute arbitrage swap1 = await agent.cross_chain_swap("AIT", "ETH", 1000) swap2 = await agent.cross_chain_swap("ETH", "AIT", swap1['output_amount']) print(f"Arbitrage completed: {swap2['output_amount']} AIT") await asyncio.sleep(60) asyncio.run(arbitrage_bot()) ``` --- ## ๐ŸŽฏ **Expected Outcomes** After completing this scenario, you should be able to: - Query cross-chain exchange rates - Execute cross-chain swaps between networks - Monitor swap status and history - Bridge assets across blockchain networks - Manage liquidity pool positions - Analyze cross-chain operation statistics - Implement automated trading strategies - Troubleshoot common cross-chain issues --- ## ๐Ÿ”— **Related Resources** ### **AITBC Documentation** - [Scenario 27: Cross Chain Trader](./27_cross_chain_trader.md) - Advanced cross-chain trading - [Scenario 38: Cross Chain Market Maker](./38_cross_chain_market_maker.md) - Market making strategies - [CLI Cross-Chain Commands](../cli/CLI_DOCUMENTATION.md) - Complete CLI reference - [Exchange Service Documentation](../apps/exchange-service/README.md) - Service details ### **External Resources** - [Cross-Chain Bridges](https://ethereum.org/en/bridges/) - [Liquidity Pools](https://uniswap.org/learn/pools) - [Arbitrage Trading](https://www.investopedia.com/terms/a/arbitrage.asp) ### **Next Scenarios** - [54: Monitoring and Metrics](./54_monitoring_and_metrics.md) - System monitoring - [55: Resource Management](./55_resource_management.md) - Resource allocation - [56: Simulation Scenarios](./56_simulation_scenarios.md) - Test simulation --- ## ๐Ÿ“Š **Quality Metrics** - **Structure**: 10/10 - Clear workflow from rates to statistics - **Content**: 10/10 - Comprehensive cross-chain operations coverage - **Code Examples**: 10/10 - Working Agent SDK examples - **Status**: Active scenario --- *Last updated: 2026-05-27* *Version: 1.0* *Status: Active scenario document*