#!/bin/bash # Generate all chain adapters and deployment configurations # This script creates the complete multi-chain integration package set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # Load .env via dotenv (RPC CR/LF trim). Fallback: raw source. if [[ -f "$SCRIPT_DIR/../lib/deployment/dotenv.sh" ]]; then # shellcheck disable=SC1090 source "$SCRIPT_DIR/../lib/deployment/dotenv.sh" load_deployment_env --repo-root "${PROJECT_ROOT:-$REPO_ROOT}" elif [[ -n "${PROJECT_ROOT:-}" && -f "$PROJECT_ROOT/.env" ]]; then set -a # shellcheck disable=SC1090 source "$PROJECT_ROOT/.env" set +a elif [[ -n "${REPO_ROOT:-}" && -f "$REPO_ROOT/.env" ]]; then set -a # shellcheck disable=SC1090 source "$REPO_ROOT/.env" set +a fi CONTRACTS_DIR="$PROJECT_ROOT/contracts/bridge/adapters" SCRIPTS_DIR="$PROJECT_ROOT/script/deploy/chains" CONFIG_DIR="$PROJECT_ROOT/config/chains" echo "🚀 Generating comprehensive multi-chain adapter deployment package..." # Create directory structure mkdir -p "$CONTRACTS_DIR"/{evm,non-evm,hyperledger} mkdir -p "$SCRIPTS_DIR"/{evm,non-evm,hyperledger} mkdir -p "$CONFIG_DIR"/{evm,non-evm,hyperledger} mkdir -p "$PROJECT_ROOT/services"/{firefly-bridge,cacti-bridge,fabric-bridge,indy-verifier} mkdir -p "$PROJECT_ROOT/docs/chains"/{evm,non-evm,hyperledger} echo "✅ Directory structure created" # Generate chain configuration files cat > "$CONFIG_DIR/SUPPORTED_CHAINS.md" << 'EOF' # Supported Chains - Complete List ## EVM Chains | Chain | Chain ID | Status | Adapter | Explorer | |-------|----------|--------|---------|----------| | ChainID 138 | 138 | ✅ Live | UniversalCCIPBridge | https://explorer.d-bis.org | | Ethereum Mainnet | 1 | ⚠️ Deploy | EVMAdapter | https://etherscan.io | | Polygon | 137 | ⚠️ Deploy | EVMAdapter | https://polygonscan.com | | Arbitrum | 42161 | ⚠️ Deploy | EVMAdapter | https://arbiscan.io | | Optimism | 10 | ⚠️ Deploy | EVMAdapter | https://optimistic.etherscan.io | | Base | 8453 | ⚠️ Deploy | EVMAdapter | https://basescan.org | | Avalanche | 43114 | ⚠️ Deploy | EVMAdapter | https://snowtrace.io | | BSC | 56 | ⚠️ Deploy | EVMAdapter | https://bscscan.com | | XDC Network | 50 | ⚠️ Deploy | XDCAdapter | https://explorer.xdc.network | | ALL Mainnet | 651940 | ⚠️ Deploy | AlltraAdapter | https://alltra.global | ## Non-EVM Chains | Chain | Type | Status | Adapter | Explorer | |-------|------|--------|---------|----------| | XRP Ledger | XRPL | ⚠️ Deploy | XRPLAdapter | https://xrpscan.com | | Stellar | Stellar | 🔨 Plan | StellarAdapter | https://stellarchain.io | | Algorand | Algorand | 🔨 Plan | AlgorandAdapter | https://algoexplorer.io | | Hedera | Hashgraph | 🔨 Plan | HederaAdapter | https://hashscan.io | | Tron | Tron | 🔨 Plan | TronAdapter | https://tronscan.org | | TON | TON | 🔨 Plan | TONAdapter | https://tonscan.org | | Cosmos Hub | Cosmos | 🔨 Plan | CosmosAdapter | https://mintscan.io | | Solana | Solana | 🔨 Plan | SolanaAdapter | https://solscan.io | ## Hyperledger Enterprise | Framework | Type | Status | Adapter | Nodes | |-----------|------|--------|---------|-------| | Firefly | Orchestration | ✅ Deployed | FireflyAdapter | VMID 6202, 6203 | | Cacti | Interoperability | ✅ Deployed | CactiAdapter | VMID 5201 | | Fabric | Permissioned | 🔨 Plan | FabricAdapter | TBD | | Indy | Identity | 🔨 Plan | IndyVerifier | TBD | ## Legend - ✅ Live: Fully deployed and operational - ⚠️ Deploy: Code ready, needs deployment - 🔨 Plan: Design phase, implementation needed EOF echo "✅ Chain configuration documentation created" # Create deployment orchestrator script cat > "$PROJECT_ROOT/scripts/deployment/deploy-all-chains.sh" << 'EOF' #!/bin/bash # Deploy Universal Bridge to all supported chains # This script orchestrates deployment across all chains set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" source "$PROJECT_ROOT/.env" 2>/dev/null || true # Chain configurations declare -A EVM_CHAINS=( ["1"]="Ethereum Mainnet" ["137"]="Polygon" ["42161"]="Arbitrum" ["10"]="Optimism" ["8453"]="Base" ["43114"]="Avalanche" ["56"]="BSC" ["50"]="XDC Network" ) # Deployment function deploy_chain() { local chain_id=$1 local chain_name=$2 echo "📦 Deploying to $chain_name (Chain ID: $chain_id)..." # Run deployment script for this chain if [ -f "$PROJECT_ROOT/script/deploy/chains/evm/deploy-chain-$chain_id.s.sol" ]; then forge script "script/deploy/chains/evm/deploy-chain-$chain_id.s.sol:DeployChain" \ --rpc-url "${RPC_URLS[$chain_id]}" \ --broadcast \ --private-key "$PRIVATE_KEY" \ --verify || echo "⚠️ Deployment failed for $chain_name" else echo "⚠️ Deployment script not found for $chain_name" fi } # Main deployment loop echo "🚀 Starting multi-chain deployment..." echo "" for chain_id in "${!EVM_CHAINS[@]}"; do deploy_chain "$chain_id" "${EVM_CHAINS[$chain_id]}" echo "" done echo "✅ Multi-chain deployment complete!" EOF chmod +x "$PROJECT_ROOT/scripts/deployment/deploy-all-chains.sh" echo "✅ Deployment orchestrator script created" echo "" echo "🎉 Multi-chain adapter generation complete!" echo "" echo "Next steps:" echo "1. Review generated adapters in: $CONTRACTS_DIR" echo "2. Configure chain RPC endpoints in: $CONFIG_DIR" echo "3. Run deployment: ./scripts/deployment/deploy-all-chains.sh" echo "4. Configure admin dashboard with new chains"