Files
explorer-monorepo/docs/TOKENFACTORY138_COMPILATION_ANALYSIS.md

132 lines
3.2 KiB
Markdown
Raw Permalink Normal View History

# TokenFactory138 Compilation Analysis
**Date**: 2025-12-24
**Status**: Pre-deployment analysis
---
## ✅ Contract Structure
TokenFactory138 is well-structured with:
- ✅ Proper imports
- ✅ Interface compliance
- ✅ Error handling
- ✅ Access control
---
## ⚠️ Potential Issue: Role Permissions
### Problem
TokenFactory138 calls PolicyManager functions that require `POLICY_OPERATOR_ROLE`:
```solidity
// In TokenFactory138.deployToken()
IPolicyManager(policyManager).setLienMode(token, config.defaultLienMode);
IPolicyManager(policyManager).setBridgeOnly(token, config.bridgeOnly);
IPolicyManager(policyManager).setBridge(token, config.bridge);
```
But PolicyManager requires `POLICY_OPERATOR_ROLE`:
```solidity
// In PolicyManager
function setLienMode(...) external override onlyRole(POLICY_OPERATOR_ROLE)
function setBridgeOnly(...) external override onlyRole(POLICY_OPERATOR_ROLE)
function setBridge(...) external override onlyRole(POLICY_OPERATOR_ROLE)
```
### Solution
The deployment script (`DeployChain138.s.sol`) should grant `POLICY_OPERATOR_ROLE` to TokenFactory138:
```solidity
// After deploying TokenFactory138
policyManager.grantRole(policyManager.POLICY_OPERATOR_ROLE(), address(factory));
```
**Check**: Verify this is done in the deployment script.
---
## ✅ Compilation Test Commands
### Test 1: Standard Compilation
```bash
cd /home/intlc/projects/proxmox/smom-dbis-138
forge build --contracts contracts/emoney/TokenFactory138.sol 2>&1 | tee /tmp/tf138-std.log
```
**Expected**: May show "Stack too deep" error
### Test 2: Via-IR Compilation (Recommended)
```bash
cd /home/intlc/projects/proxmox/smom-dbis-138
forge build --via-ir --contracts contracts/emoney/TokenFactory138.sol 2>&1 | tee /tmp/tf138-viair.log
```
**Expected**: ✅ Compilation successful
### Test 3: Full Project Build
```bash
cd /home/intlc/projects/proxmox/smom-dbis-138
forge build --via-ir 2>&1 | grep -i "error\|TokenFactory138" | head -20
```
---
## ✅ Dependency Check
All dependencies should exist:
1.`contracts/emoney/interfaces/ITokenFactory138.sol`
2.`contracts/emoney/interfaces/IeMoneyToken.sol`
3.`contracts/emoney/interfaces/IPolicyManager.sol`
4.`contracts/emoney/eMoneyToken.sol`
5.`contracts/emoney/errors/FactoryErrors.sol`
6.`contracts/emoney/errors/RegistryErrors.sol`
7. ✅ OpenZeppelin contracts (via lib/)
---
## ✅ Pre-Deployment Checklist
- [ ] Run compilation test: `./scripts/compile-and-test-tokenfactory.sh`
- [ ] Verify no "Stack too deep" errors (use --via-ir)
- [ ] Check all dependencies compile
- [ ] Verify deployment script grants POLICY_OPERATOR_ROLE to TokenFactory138
- [ ] Ensure all required contracts are deployed first:
- [ ] ComplianceRegistry ✅
- [ ] DebtRegistry
- [ ] PolicyManager
- [ ] eMoneyToken (implementation)
---
## 🚀 Deployment Command
Once compilation passes:
```bash
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, including TokenFactory138.
---
**Last Updated**: 2025-12-24