132 lines
3.2 KiB
Markdown
132 lines
3.2 KiB
Markdown
|
|
# 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
|
||
|
|
|