#!/bin/bash # Deploy All Compliance Contracts # This script deploys all legal compliance contracts in the correct order set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Load environment variables if [ -f .env ]; then export $(cat .env | grep -v '^#' | xargs) else echo -e "${RED}Error: .env file not found${NC}" exit 1 fi # Set defaults RPC_URL=${RPC_URL:-${RPC_URL_138:-"http://192.168.11.250:8545"}} GAS_PRICE=${GAS_PRICE:-20000000000} echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}Deploying All Compliance Contracts${NC}" echo -e "${GREEN}========================================${NC}" echo "" # Step 1: Deploy ComplianceRegistry echo -e "${YELLOW}Step 1: Deploying ComplianceRegistry...${NC}" forge script script/DeployComplianceRegistry.s.sol:DeployComplianceRegistry \ --rpc-url "$RPC_URL" \ --broadcast \ --legacy \ --gas-price "$GAS_PRICE" \ --via-ir \ -vv | tee /tmp/compliance-registry-deploy.log COMPLIANCE_REGISTRY=$(grep "ComplianceRegistry deployed at:" /tmp/compliance-registry-deploy.log | tail -1 | awk '{print $NF}') if [ -z "$COMPLIANCE_REGISTRY" ]; then echo -e "${RED}Error: Failed to extract ComplianceRegistry address${NC}" exit 1 fi echo -e "${GREEN}ComplianceRegistry deployed at: $COMPLIANCE_REGISTRY${NC}" echo "COMPLIANCE_REGISTRY_ADDRESS=$COMPLIANCE_REGISTRY" >> .env echo "" # Step 2: Deploy CompliantUSDT echo -e "${YELLOW}Step 2: Deploying CompliantUSDT...${NC}" forge script script/DeployCompliantUSDT.s.sol:DeployCompliantUSDT \ --rpc-url "$RPC_URL" \ --broadcast \ --legacy \ --gas-price "$GAS_PRICE" \ --via-ir \ -vv | tee /tmp/compliant-usdt-deploy.log COMPLIANT_USDT=$(grep "CompliantUSDT deployed at:" /tmp/compliant-usdt-deploy.log | tail -1 | awk '{print $NF}') if [ -z "$COMPLIANT_USDT" ]; then echo -e "${RED}Error: Failed to extract CompliantUSDT address${NC}" exit 1 fi echo -e "${GREEN}CompliantUSDT deployed at: $COMPLIANT_USDT${NC}" echo "COMPLIANT_USDT_ADDRESS=$COMPLIANT_USDT" >> .env echo "" # Step 3: Deploy CompliantUSDC echo -e "${YELLOW}Step 3: Deploying CompliantUSDC...${NC}" forge script script/DeployCompliantUSDC.s.sol:DeployCompliantUSDC \ --rpc-url "$RPC_URL" \ --broadcast \ --legacy \ --gas-price "$GAS_PRICE" \ --via-ir \ -vv | tee /tmp/compliant-usdc-deploy.log COMPLIANT_USDC=$(grep "CompliantUSDC deployed at:" /tmp/compliant-usdc-deploy.log | tail -1 | awk '{print $NF}') if [ -z "$COMPLIANT_USDC" ]; then echo -e "${RED}Error: Failed to extract CompliantUSDC address${NC}" exit 1 fi echo -e "${GREEN}CompliantUSDC deployed at: $COMPLIANT_USDC${NC}" echo "COMPLIANT_USDC_ADDRESS=$COMPLIANT_USDC" >> .env echo "" # Step 4: Register contracts in ComplianceRegistry echo -e "${YELLOW}Step 4: Registering contracts in ComplianceRegistry...${NC}" echo "Registering CompliantUSDT..." cast send "$COMPLIANCE_REGISTRY" \ "registerContract(address)" \ "$COMPLIANT_USDT" \ --rpc-url "$RPC_URL" \ --private-key "$PRIVATE_KEY" \ --legacy \ --gas-price "$GAS_PRICE" || echo -e "${YELLOW}Warning: Failed to register CompliantUSDT${NC}" echo "Registering CompliantUSDC..." cast send "$COMPLIANCE_REGISTRY" \ "registerContract(address)" \ "$COMPLIANT_USDC" \ --rpc-url "$RPC_URL" \ --private-key "$PRIVATE_KEY" \ --legacy \ --gas-price "$GAS_PRICE" || echo -e "${YELLOW}Warning: Failed to register CompliantUSDC${NC}" echo "" echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}Deployment Complete!${NC}" echo -e "${GREEN}========================================${NC}" echo "" echo "Deployed Contracts:" echo " ComplianceRegistry: $COMPLIANCE_REGISTRY" echo " CompliantUSDT: $COMPLIANT_USDT" echo " CompliantUSDC: $COMPLIANT_USDC" echo "" echo "Addresses have been saved to .env file"