# Complete Execution Guide - All Next Actions **Date**: 2025-12-24 **Status**: Ready for Complete Execution --- ## Overview This guide provides complete instructions for executing all next actions: deployment, integration, and testing. --- ## Prerequisites ### 1. Environment Setup ```bash cd /home/intlc/projects/proxmox/smom-dbis-138 # Set required environment variables export PRIVATE_KEY= export RPC_URL=http://192.168.11.250:8545 # Optional: Set admin addresses (defaults to deployer) export COMPLIANCE_ADMIN= export TOKEN_REGISTRY_OWNER= export FEE_COLLECTOR_OWNER= ``` ### 2. Verify Prerequisites ```bash # Check RPC connection cast block-number --rpc-url $RPC_URL # Check deployer balance cast balance $(cast wallet address $PRIVATE_KEY) --rpc-url $RPC_URL # Verify contracts compile forge build --via-ir contracts/compliance/*.sol contracts/tokens/*.sol contracts/utils/*.sol ``` --- ## Option 1: Automated Complete Deployment and Integration (Recommended) ### Single Command Execution ```bash cd /home/intlc/projects/proxmox/smom-dbis-138 # Set PRIVATE_KEY export PRIVATE_KEY= # Run complete deployment and integration ./scripts/deploy-and-integrate-all.sh ``` **This script will**: 1. ✅ Verify prerequisites (RPC, balance) 2. ✅ Deploy all 5 contracts 3. ✅ Register contracts in ComplianceRegistry 4. ✅ Register tokens in TokenRegistry 5. ✅ Verify all deployments 6. ✅ Save all addresses to .env --- ## Option 2: Step-by-Step Manual Execution ### Step 1: Deploy ComplianceRegistry ```bash forge script script/DeployComplianceRegistry.s.sol:DeployComplianceRegistry \ --rpc-url $RPC_URL \ --broadcast \ --legacy \ --gas-price 20000000000 \ --via-ir \ -vv # Save address from output export COMPLIANCE_REGISTRY_ADDRESS= echo "COMPLIANCE_REGISTRY_ADDRESS=$COMPLIANCE_REGISTRY_ADDRESS" >> .env ``` ### Step 2: Deploy CompliantUSDT ```bash forge script script/DeployCompliantUSDT.s.sol:DeployCompliantUSDT \ --rpc-url $RPC_URL \ --broadcast \ --legacy \ --gas-price 20000000000 \ --via-ir \ -vv # Save address from output export COMPLIANT_USDT_ADDRESS= echo "COMPLIANT_USDT_ADDRESS=$COMPLIANT_USDT_ADDRESS" >> .env ``` ### Step 3: Deploy CompliantUSDC ```bash forge script script/DeployCompliantUSDC.s.sol:DeployCompliantUSDC \ --rpc-url $RPC_URL \ --broadcast \ --legacy \ --gas-price 20000000000 \ --via-ir \ -vv # Save address from output export COMPLIANT_USDC_ADDRESS= echo "COMPLIANT_USDC_ADDRESS=$COMPLIANT_USDC_ADDRESS" >> .env ``` ### Step 4: Deploy TokenRegistry ```bash forge script script/DeployTokenRegistry.s.sol:DeployTokenRegistry \ --rpc-url $RPC_URL \ --broadcast \ --legacy \ --gas-price 20000000000 \ -vv # Save address from output export TOKEN_REGISTRY_ADDRESS= echo "TOKEN_REGISTRY_ADDRESS=$TOKEN_REGISTRY_ADDRESS" >> .env ``` ### Step 5: Deploy FeeCollector ```bash forge script script/DeployFeeCollector.s.sol:DeployFeeCollector \ --rpc-url $RPC_URL \ --broadcast \ --legacy \ --gas-price 20000000000 \ -vv # Save address from output export FEE_COLLECTOR_ADDRESS= echo "FEE_COLLECTOR_ADDRESS=$FEE_COLLECTOR_ADDRESS" >> .env ``` ### Step 6: Register Contracts in ComplianceRegistry ```bash # Register CompliantUSDT cast send $COMPLIANCE_REGISTRY_ADDRESS \ "registerContract(address)" \ $COMPLIANT_USDT_ADDRESS \ --rpc-url $RPC_URL \ --private-key $PRIVATE_KEY \ --legacy \ --gas-price 20000000000 # Register CompliantUSDC cast send $COMPLIANCE_REGISTRY_ADDRESS \ "registerContract(address)" \ $COMPLIANT_USDC_ADDRESS \ --rpc-url $RPC_URL \ --private-key $PRIVATE_KEY \ --legacy \ --gas-price 20000000000 ``` ### Step 7: Register Tokens in TokenRegistry ```bash # Register CompliantUSDT cast send $TOKEN_REGISTRY_ADDRESS \ "registerToken(address,string,string,uint8,bool,address)" \ $COMPLIANT_USDT_ADDRESS \ "Tether USD (Compliant)" \ "cUSDT" \ 6 \ false \ 0x0000000000000000000000000000000000000000 \ --rpc-url $RPC_URL \ --private-key $PRIVATE_KEY \ --legacy \ --gas-price 20000000000 # Register CompliantUSDC cast send $TOKEN_REGISTRY_ADDRESS \ "registerToken(address,string,string,uint8,bool,address)" \ $COMPLIANT_USDC_ADDRESS \ "USD Coin (Compliant)" \ "cUSDC" \ 6 \ false \ 0x0000000000000000000000000000000000000000 \ --rpc-url $RPC_URL \ --private-key $PRIVATE_KEY \ --legacy \ --gas-price 20000000000 ``` --- ## Step 8: Verify Deployments ```bash # Run verification script ./scripts/verify-deployments.sh # Or verify manually cast code $COMPLIANCE_REGISTRY_ADDRESS --rpc-url $RPC_URL cast code $COMPLIANT_USDT_ADDRESS --rpc-url $RPC_URL cast code $COMPLIANT_USDC_ADDRESS --rpc-url $RPC_URL cast code $TOKEN_REGISTRY_ADDRESS --rpc-url $RPC_URL cast code $FEE_COLLECTOR_ADDRESS --rpc-url $RPC_URL ``` --- ## Step 9: End-to-End Testing ```bash # Run test script ./scripts/test-contracts.sh # Or test manually # Test token transfer cast send $COMPLIANT_USDT_ADDRESS \ "transfer(address,uint256)" \ 1000000 \ --rpc-url $RPC_URL \ --private-key $PRIVATE_KEY \ --legacy # Test registry queries cast call $TOKEN_REGISTRY_ADDRESS \ "getTokenInfo(address)" \ $COMPLIANT_USDT_ADDRESS \ --rpc-url $RPC_URL # Test compliance status cast call $COMPLIANCE_REGISTRY_ADDRESS \ "isContractRegistered(address)" \ $COMPLIANT_USDT_ADDRESS \ --rpc-url $RPC_URL ``` --- ## Step 10: Update Service Configurations ### Update Service .env Files Add the new contract addresses to service configuration files: ```bash # Oracle Publisher service echo "COMPLIANCE_REGISTRY_ADDRESS=$COMPLIANCE_REGISTRY_ADDRESS" >> /.env echo "COMPLIANT_USDT_ADDRESS=$COMPLIANT_USDT_ADDRESS" >> /.env echo "COMPLIANT_USDC_ADDRESS=$COMPLIANT_USDC_ADDRESS" >> /.env echo "TOKEN_REGISTRY_ADDRESS=$TOKEN_REGISTRY_ADDRESS" >> /.env echo "FEE_COLLECTOR_ADDRESS=$FEE_COLLECTOR_ADDRESS" >> /.env # Repeat for other services as needed ``` --- ## Step 11: Configure FeeCollector (Optional) ```bash # Add fee recipient for ETH (example: 100% to one recipient) cast send $FEE_COLLECTOR_ADDRESS \ "addFeeRecipient(address,address,uint256)" \ 0x0000000000000000000000000000000000000000 \ \ 10000 \ --rpc-url $RPC_URL \ --private-key $PRIVATE_KEY \ --legacy \ --gas-price 20000000000 # Or split between multiple recipients cast send $FEE_COLLECTOR_ADDRESS \ "addFeeRecipient(address,address,uint256)" \ 0x0000000000000000000000000000000000000000 \ 5000 \ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --legacy cast send $FEE_COLLECTOR_ADDRESS \ "addFeeRecipient(address,address,uint256)" \ 0x0000000000000000000000000000000000000000 \ 5000 \ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --legacy ``` --- ## Verification Checklist After completion, verify: - [ ] All contracts deployed successfully - [ ] All contracts have code on-chain (>100 bytes) - [ ] CompliantUSDT registered in ComplianceRegistry - [ ] CompliantUSDC registered in ComplianceRegistry - [ ] CompliantUSDT registered in TokenRegistry - [ ] CompliantUSDC registered in TokenRegistry - [ ] All addresses saved to .env - [ ] Service .env files updated - [ ] FeeCollector configured (if needed) - [ ] End-to-end tests passing --- ## Troubleshooting ### Common Issues 1. **"PRIVATE_KEY not found"** - Solution: `export PRIVATE_KEY=` 2. **"Insufficient funds"** - Solution: Fund deployer address with ETH 3. **"Contract already deployed"** - Solution: Check if address already has code, use different nonce if needed 4. **"Registration failed"** - Solution: Verify contract addresses are correct, check access control --- ## Quick Reference ### All-in-One Command ```bash export PRIVATE_KEY= && \ export RPC_URL=http://192.168.11.250:8545 && \ cd /home/intlc/projects/proxmox/smom-dbis-138 && \ ./scripts/deploy-and-integrate-all.sh ``` ### Verification Command ```bash cd /home/intlc/projects/proxmox/smom-dbis-138 && \ ./scripts/verify-deployments.sh ``` ### Testing Command ```bash cd /home/intlc/projects/proxmox/smom-dbis-138 && \ ./scripts/test-contracts.sh ``` --- **Last Updated**: 2025-12-24 **Status**: ✅ Ready for Execution