Files
explorer-monorepo/docs/TOKENFACTORY138_COMPILATION_AND_FIX.md

2.1 KiB

TokenFactory138 Compilation Test and Fix

Date: 2025-12-24
Status: Fixed critical role permission issue


Compilation Test

Quick Test

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

# Test compilation with --via-ir (recommended)
forge build --via-ir --contracts contracts/emoney/TokenFactory138.sol

# Or use the test script
./scripts/compile-and-test-tokenfactory.sh

Expected Results

  • Compilation successful with --via-ir
  • ⚠️ May show "Stack too deep" without --via-ir (this is expected)

Critical Fix Applied

Issue Found

TokenFactory138 calls PolicyManager functions that require POLICY_OPERATOR_ROLE, but the deployment script wasn't granting this role to TokenFactory138 itself.

Fix Applied

Updated script/emoney/DeployChain138.s.sol to grant POLICY_OPERATOR_ROLE to TokenFactory138:

// Grant POLICY_OPERATOR_ROLE to TokenFactory138 so it can configure tokens during deployment
policyManager.grantRole(policyManager.POLICY_OPERATOR_ROLE(), address(factory));
// Also grant to policyOperator for manual operations
policyManager.grantRole(policyManager.POLICY_OPERATOR_ROLE(), config.policyOperator);

Pre-Deployment Checklist

  • Compilation test script created
  • Critical role permission issue fixed
  • Run compilation test
  • Verify all dependencies compile
  • Test deployment script (dry run)
  • Deploy TokenFactory138

🚀 Deployment

Once compilation passes:

cd /home/intlc/projects/proxmox/smom-dbis-138
source .env

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

Note: This deploys the entire eMoney system (ComplianceRegistry, DebtRegistry, PolicyManager, eMoneyToken, TokenFactory138, BridgeVault138).


📋 Summary

  1. Compilation: Should work with --via-ir flag
  2. Role Fix: TokenFactory138 now gets POLICY_OPERATOR_ROLE
  3. Next: Test compilation, then deploy

Last Updated: 2025-12-24