Files
explorer-monorepo/docs/DEPLOYMENT_READY_COMPLETE.md

7.3 KiB

Deployment Ready - Complete Status

Date: 2025-12-24
Status: READY FOR DEPLOYMENT


Executive Summary

All tests are passing (215/215), all contracts compile successfully, and the system is ready for deployment to ChainID 138.


Test Status

215/215 Tests Passing
0 Failures
0 Skipped

Test Breakdown

  • Unit Tests: All passing
  • Integration Tests: All passing
  • Fuzz Tests: All passing
  • End-to-End Tests: All passing

Compilation Status

All contracts compile with --via-ir
No compilation errors
⚠️ Minor lint warnings (acceptable - style preferences only)


Deployment Readiness Checklist

Prerequisites Complete

  • All contracts compile
  • All tests pass
  • No critical errors
  • Environment variables documented
  • Deployment scripts ready
  • Verification scripts ready

Pre-Deployment Steps

  • Verify PRIVATE_KEY is set in .env
  • Verify RPC_URL or RPC_URL_138 is set
  • Check deployer balance (minimum 0.1 ETH recommended)
  • Verify RPC connection: cast block-number --rpc-url $RPC_URL
  • Review deployment order

📋 Deployment Order

  1. Core eMoney System (Required first)

    • ComplianceRegistry
    • DebtRegistry
    • PolicyManager
    • eMoneyToken Implementation
    • TokenFactory138
    • BridgeVault138
  2. Compliance Contracts

    • ComplianceRegistry (if not already deployed)
    • CompliantUSDT
    • CompliantUSDC
  3. Utility Contracts

    • TokenRegistry
    • FeeCollector
  4. CCIP Contracts (If needed)

    • CCIPReceiver
    • CCIPSender
    • CCIPLogger
  5. Reserve System (If needed)

    • ReserveSystem
    • ReserveTokenIntegration
    • OraclePriceFeed
    • PriceFeedKeeper
  6. Payment Rails (If needed)

    • AccountWalletRegistry
    • ISO20022Router
    • RailEscrowVault
    • RailTriggerRegistry
    • SettlementOrchestrator

Quick Start Deployment

cd /home/intlc/projects/proxmox/smom-dbis-138

# Set environment variables
export PRIVATE_KEY=<your_private_key>
export RPC_URL=http://192.168.11.250:8545

# Run complete deployment and integration
./scripts/deploy-and-integrate-all.sh

Option 2: Manual Step-by-Step

Step 1: Deploy Core eMoney System

forge script script/emoney/DeployChain138.s.sol:DeployChain138 \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY \
  --broadcast \
  --via-ir \
  --legacy \
  --gas-price 20000000000

Step 2: Deploy Compliance Contracts

# ComplianceRegistry
forge script script/DeployComplianceRegistry.s.sol:DeployComplianceRegistry \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY \
  --broadcast \
  --via-ir \
  --legacy \
  --gas-price 20000000000

# CompliantUSDT
forge script script/DeployCompliantUSDT.s.sol:DeployCompliantUSDT \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY \
  --broadcast \
  --via-ir \
  --legacy \
  --gas-price 20000000000

# CompliantUSDC
forge script script/DeployCompliantUSDC.s.sol:DeployCompliantUSDC \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY \
  --broadcast \
  --via-ir \
  --legacy \
  --gas-price 20000000000

Step 3: Deploy Utility Contracts

# TokenRegistry
forge script script/DeployTokenRegistry.s.sol:DeployTokenRegistry \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY \
  --broadcast \
  --via-ir \
  --legacy \
  --gas-price 20000000000

# FeeCollector
forge script script/DeployFeeCollector.s.sol:DeployFeeCollector \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY \
  --broadcast \
  --via-ir \
  --legacy \
  --gas-price 20000000000

Step 4: Verify Deployments

./scripts/verify-deployments.sh

Post-Deployment Steps

1. Register Contracts

# Register CompliantUSDT in ComplianceRegistry
cast send $COMPLIANCE_REGISTRY_ADDRESS \
  "registerContract(address)" \
  $COMPLIANT_USDT_ADDRESS \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY

# Register CompliantUSDC in ComplianceRegistry
cast send $COMPLIANCE_REGISTRY_ADDRESS \
  "registerContract(address)" \
  $COMPLIANT_USDC_ADDRESS \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY

2. Register Tokens in TokenRegistry

# Register CompliantUSDT
cast send $TOKEN_REGISTRY_ADDRESS \
  "registerToken(address,string,string,uint8,bool,address)" \
  $COMPLIANT_USDT_ADDRESS \
  "Tether USD (Compliant)" \
  "cUSDT" \
  6 \
  true \
  0x0000000000000000000000000000000000000000 \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY

# Register CompliantUSDC
cast send $TOKEN_REGISTRY_ADDRESS \
  "registerToken(address,string,string,uint8,bool,address)" \
  $COMPLIANT_USDC_ADDRESS \
  "USD Coin (Compliant)" \
  "cUSDC" \
  6 \
  true \
  0x0000000000000000000000000000000000000000 \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY

3. Configure Fee Recipients (Optional)

# Add fee recipient to FeeCollector
cast send $FEE_COLLECTOR_ADDRESS \
  "addFeeRecipient(address,address,uint256)" \
  0x0000000000000000000000000000000000000000 \
  $RECIPIENT_ADDRESS \
  10000 \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY

4. Verify on Block Explorer


Environment Variables Required

# Required
PRIVATE_KEY=<deployer_private_key>
RPC_URL=http://192.168.11.250:8545  # or RPC_URL_138

# Optional (defaults to deployer if not set)
GOVERNANCE_MULTISIG=<address>
TOKEN_DEPLOYER_MULTISIG=<address>
POLICY_OPERATOR_MULTISIG=<address>
COMPLIANCE_OPERATOR_MULTISIG=<address>
DEBT_AUTHORITY_MULTISIG=<address>
ENFORCEMENT_OPERATOR_MULTISIG=<address>
BRIDGE_OPERATOR_MULTISIG=<address>
COMPLIANCE_ADMIN=<address>
TOKEN_REGISTRY_OWNER=<address>
FEE_COLLECTOR_OWNER=<address>

Verification Commands

Check Contract Deployment

# Check if contract has code
cast code $CONTRACT_ADDRESS --rpc-url $RPC_URL

# Get contract bytecode size
cast code $CONTRACT_ADDRESS --rpc-url $RPC_URL | wc -c

Verify Contract Functions

# Test a view function
cast call $CONTRACT_ADDRESS "functionName()" --rpc-url $RPC_URL

Check Transaction Status

# Get transaction receipt
cast receipt $TX_HASH --rpc-url $RPC_URL

# Check transaction status
cast tx $TX_HASH --rpc-url $RPC_URL

Troubleshooting

Common Issues

  1. "PRIVATE_KEY not found"

    • Solution: Set export PRIVATE_KEY=<your_key> or add to .env
  2. "RPC connection failed"

    • Solution: Verify RPC URL and network connectivity
  3. "Insufficient balance"

    • Solution: Fund deployer address with ETH
  4. "Contract size too large"

    • Solution: Already using --via-ir flag, should be resolved
  5. "Transaction failed"

    • Solution: Check gas price, nonce, and contract requirements

Next Actions

  1. Testing Complete - All 215 tests passing
  2. Deployment - Ready to deploy
  3. Integration - Register and configure contracts
  4. Verification - Verify on-chain and test interactions
  5. Documentation - Update deployment addresses

Support

For issues or questions:

  • Check deployment logs in /tmp/*-deploy.log
  • Review contract verification on block explorer
  • Check Foundry documentation: https://book.getfoundry.sh

Status: READY FOR PRODUCTION DEPLOYMENT