# Cross-Chain Trader for Hermes Agents **Level**: Intermediate **Prerequisites**: Cross-Chain Transfer (Scenario 20), Basic Trading (Scenario 06), Wallet Basics (Scenario 01) **Estimated Time**: 45 minutes **Last Updated**: 2026-05-02 **Version**: 1.0 ## ๐Ÿงญ **Navigation Path:** **๐Ÿ  [Documentation Home](../README.md)** โ†’ **๐ŸŽญ [Agent Scenarios](./README.md)** โ†’ *You are here* **breadcrumb**: Home โ†’ Scenarios โ†’ Cross-Chain Trader --- ## ๐ŸŽฏ **See Also:** - **๐Ÿ“– Previous Scenario**: [26 Staking Validator Agent](./26_staking_validator_agent.md) - **๐Ÿ“– Next Scenario**: [28 Monitoring Agent](./28_monitoring_agent.md) - **๐Ÿค– Agent SDK**: [Agent SDK Documentation](../agent-sdk/README.md) - **๐ŸŒ‰ Cross-Chain**: [Cross-Chain Bridge](../apps/coordinator-api/src/app/services/cross_chain_bridge.py) --- ## ๐Ÿ“š **Scenario Overview** This scenario demonstrates how Hermes agents trade assets across multiple AITBC chains to capitalize on price differences and liquidity opportunities. ### **Use Case** An Hermes agent acts as a cross-chain trader to: - Exploit price differences across chains - Move assets to where liquidity is highest - Execute arbitrage between chains - Manage multi-chain portfolios - Optimize cross-chain trading costs ### **What You'll Learn** - Monitor prices across multiple chains - Execute cross-chain trades - Manage multi-chain wallets - Calculate cross-chain arbitrage - Optimize trading costs ### **Features Combined** - **Cross-Chain Transfer** (Scenario 20) - **Trading** (Scenario 06) - **Wallet Management** (Scenario 01) --- ## ๐Ÿ“‹ **Prerequisites** ### **Knowledge Required** - Completed Scenarios 20, 06, and 01 - Understanding of multi-chain architecture - Cross-chain trading concepts ### **Tools Required** - AITBC CLI installed - Python 3.13+ - Wallets on multiple chains - Access to cross-chain bridge and marketplace ### **Setup Required** - Cross-chain bridge running - Marketplace accessible on all chains - Wallets configured on each chain ### **Wallet Authentication** For cross-chain trading operations requiring wallet signing, use one of these methods: ```bash # Interactive prompt (default) aitbc cross-chain swap --from my-wallet --to-chain ait-mainnet --amount 100 # Password file (recommended for scripts) aitbc cross-chain swap --from my-wallet --to-chain ait-mainnet --amount 100 --password-file /path/to/password.txt # Environment variable export KEYSTORE_PASSWORD=mypassword aitbc cross-chain swap --from my-wallet --to-chain ait-mainnet --amount 100 ``` **Security Best Practices:** - Use password files with restricted permissions (chmod 600) - Store password files outside the repository - Avoid hardcoding passwords in scripts --- ## ๐Ÿ”ง **Step-by-Step Workflow** ### **Step 1: Monitor Prices Across Chains** Compare AIT token prices across different chains. ```bash aitbc cross-chain prices --all-chains ``` Output: ``` Price Comparison: Chain Price (AIT) Volume Liquidity ------------------------------------------------------------------------ ait-mainnet 1.00 50,000 High ait-testnet 0.98 10,000 Medium ait-devnet 0.95 5,000 Low ``` ### **Step 2: Identify Cross-Chain Arbitrage** Find profitable cross-chain trading opportunities. ```bash aitbc cross-chain arbitrage \ --min-spread 0.02 ``` Output: ``` Cross-Chain Arbitrage: Opportunity Buy Chain Sell Chain Spread Profit --------------------------------------------------------------------------------------- arb_abc123... ait-devnet ait-mainnet 0.05 5% arb_def456... ait-testnet ait-mainnet 0.02 2% ``` ### **Step 3: Execute Cross-Chain Trade** Execute a cross-chain arbitrage trade. ```bash aitbc cross-chain trade \ --wallet my-agent-wallet \ --opportunity arb_abc123... \ --amount 1000 ``` Output: ``` Cross-chain trade executed Opportunity: arb_abc123... Amount: 1000 AIT Expected Profit: 50 AIT Status: pending_transfer ``` ### **Step 4: Monitor Multi-Chain Portfolio** Track assets across all chains. ```bash aitbc cross-chain portfolio --wallet my-agent-wallet ``` ### **Step 5: Optimize Chain Allocation** Rebalance assets across chains. ```bash aitbc cross-chain rebalance \ --wallet my-agent-wallet \ --target mainnet:60,testnet:30,devnet:10 ``` --- ## ๐Ÿ’ป **Code Examples Using Agent SDK** ### **Example 1: Simple Cross-Chain Price Comparison** ```python from aitbc_agent_sdk import Agent, AgentConfig config = AgentConfig( name="cross-chain-trader", blockchain_network="mainnet", wallet_name="trader-wallet" ) agent = Agent(config) agent.start() # Get prices on all chains chains = ["ait-mainnet", "ait-testnet", "ait-devnet"] prices = {} for chain in chains: price = agent.get_chain_price(chain) prices[chain] = price print("Price Comparison:") for chain, price in prices.items(): print(f" {chain}: ${price}") # Find arbitrage opportunity min_chain = min(prices, key=prices.get) max_chain = max(prices, key=prices.get) spread = prices[max_chain] - prices[min_chain] print(f"\nArbitrage: {min_chain} -> {max_chain}") print(f"Spread: ${spread}") ``` ### **Example 2: Automated Cross-Chain Arbitrage** ```python from aitbc_agent_sdk import Agent, AgentConfig import asyncio class CrossChainArbitrage: def __init__(self, config, min_spread=0.02): self.agent = Agent(config) self.min_spread = min_spread self.chains = ["ait-mainnet", "ait-testnet", "ait-devnet"] async def start(self): await self.agent.start() await self.run_arbitrage_loop() async def run_arbitrage_loop(self): """Continuous cross-chain arbitrage monitoring""" while True: opportunities = await self.find_opportunities() for opp in opportunities: if opp['spread'] >= self.min_spread: await self.execute_arbitrage(opp) await asyncio.sleep(120) # Check every 2 minutes async def find_opportunities(self): """Find cross-chain arbitrage opportunities""" prices = {} for chain in self.chains: prices[chain] = await self.agent.get_chain_price(chain) opportunities = [] for i, buy_chain in enumerate(self.chains): for j, sell_chain in enumerate(self.chains): if i != j: spread = prices[sell_chain] - prices[buy_chain] if spread > 0: opportunities.append({ 'buy_chain': buy_chain, 'sell_chain': sell_chain, 'buy_price': prices[buy_chain], 'sell_price': prices[sell_chain], 'spread': spread }) return opportunities async def execute_arbitrage(self, opportunity): """Execute cross-chain arbitrage""" print(f"Arbitrage: {opportunity['buy_chain']} -> {opportunity['sell_chain']}") print(f"Spread: ${opportunity['spread']}") # Get balance on buy chain balance = await self.agent.get_chain_balance(opportunity['buy_chain']) if balance >= 100: # Transfer to sell chain transfer = await self.agent.cross_chain_transfer( source_chain=opportunity['buy_chain'], target_chain=opportunity['sell_chain'], amount=balance * 0.5, fee=5 ) print(f"Transfer initiated: {transfer['transfer_id']}") # Wait for completion await self.wait_for_transfer(transfer['transfer_id']) # Sell on target chain await self.agent.sell_tokens( chain=opportunity['sell_chain'], amount=transfer['amount'] ) async def wait_for_transfer(self, transfer_id): """Wait for cross-chain transfer to complete""" while True: status = await self.agent.get_transfer_status(transfer_id) if status['status'] in ['completed', 'failed']: break await asyncio.sleep(30) async def main(): config = AgentConfig( name="cross-chain-arbitrage", blockchain_network="mainnet", wallet_name="arbitrage-wallet" ) arbitrage = CrossChainArbitrage(config, min_spread=0.02) await arbitrage.start() asyncio.run(main()) ``` ### **Example 3: Multi-Chain Portfolio Manager** ```python from aitbc_agent_sdk import Agent, AgentConfig import asyncio class MultiChainPortfolio: def __init__(self, config): self.agent = Agent(config) self.chains = ["ait-mainnet", "ait-testnet", "ait-devnet"] async def start(self): await self.agent.start() await self.manage_portfolio() async def manage_portfolio(self): """Manage multi-chain portfolio allocation""" while True: # Get portfolio across all chains portfolio = await self.get_portfolio() print("\nPortfolio Summary:") total_value = 0 for chain, data in portfolio.items(): value = data['balance'] * data['price'] total_value += value print(f" {chain}: {data['balance']} AIT (${value:.2f})") print(f"Total Value: ${total_value:.2f}") # Check if rebalancing needed if await self.should_rebalance(portfolio): await self.rebalance_portfolio(portfolio) await asyncio.sleep(3600) # Check hourly async def get_portfolio(self): """Get portfolio across all chains""" portfolio = {} for chain in self.chains: balance = await self.agent.get_chain_balance(chain) price = await self.agent.get_chain_price(chain) portfolio[chain] = { 'balance': balance, 'price': price } return portfolio async def should_rebalance(self, portfolio): """Determine if portfolio needs rebalancing""" # Calculate allocation percentages total = sum(p['balance'] * p['price'] for p in portfolio.values()) allocations = {} for chain, data in portfolio.items(): value = data['balance'] * data['price'] allocations[chain] = value / total # Target allocation: 60% mainnet, 30% testnet, 10% devnet target = { 'ait-mainnet': 0.60, 'ait-testnet': 0.30, 'ait-devnet': 0.10 } # Check if any allocation deviates by more than 10% for chain, alloc in allocations.items(): if abs(alloc - target[chain]) > 0.10: return True return False async def rebalance_portfolio(self, portfolio): """Rebalance portfolio to target allocation""" total = sum(p['balance'] * p['price'] for p in portfolio.values()) target = { 'ait-mainnet': 0.60, 'ait-testnet': 0.30, 'ait-devnet': 0.10 } for chain, data in portfolio.items(): current_value = data['balance'] * data['price'] target_value = total * target[chain] if current_value < target_value: # Need to add assets to this chain needed = (target_value - current_value) / data['price'] await self.transfer_to_chain(chain, needed) elif current_value > target_value: # Need to remove assets from this chain excess = (current_value - target_value) / data['price'] await self.transfer_from_chain(chain, excess) async def transfer_to_chain(self, target_chain, amount): """Transfer assets to target chain""" # Find chain with excess to transfer from portfolio = await self.get_portfolio() for chain, data in portfolio.items(): if chain != target_chain and data['balance'] > amount: await self.agent.cross_chain_transfer( source_chain=chain, target_chain=target_chain, amount=amount, fee=5 ) print(f"Transferred {amount} AIT to {target_chain}") break async def main(): config = AgentConfig( name="portfolio-manager", blockchain_network="mainnet", wallet_name="portfolio-wallet" ) manager = MultiChainPortfolio(config) await manager.start() asyncio.run(main()) ``` --- ## ๐ŸŽฏ **Expected Outcomes** After completing this scenario, you should be able to: - Monitor prices across multiple chains - Execute cross-chain arbitrage trades - Manage multi-chain portfolios - Optimize cross-chain trading costs - Implement automated trading strategies --- ## ๐Ÿงช **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 --- ## ๐Ÿ”— **Related Resources** ### **AITBC Documentation** - [Cross-Chain Bridge](../apps/coordinator-api/src/app/services/cross_chain_bridge.py) - [Multi-Chain Manager](../apps/blockchain-node/src/aitbc_chain/network/multi_chain_manager.py) - [Trading Service](../apps/trading-service/README.md) ### **External Resources** - [Cross-Chain Bridges](https://ethereum.org/en/bridge/) - [Cross-Chain Arbitrage](https://www.coinbase.com/learn/crypto-basics/what-is-arbitrage) ### **Next Scenarios** - [31 Federation Bridge Agent](./31_federation_bridge_agent.md) - Island bridging - [38 Cross Chain Market Maker](./38_cross_chain_market_maker.md) - Professional cross-chain trading - [40 Enterprise AI Agent](./40_enterprise_ai_agent.md) - Enterprise cross-chain operations --- ## ๐Ÿ“Š **Quality Metrics** - **Structure**: 10/10 - Clear cross-chain trading workflow - **Content**: 10/10 - Comprehensive cross-chain operations - **Code Examples**: 10/10 - Working Agent SDK examples - **Status**: Active scenario --- *Last updated: 2026-05-02* *Version: 1.0* *Status: Active scenario document*