# Contracts to Deploy — Master List **Last Updated:** 2026-02-12 **Status:** Reference **Repos:** smom-dbis-138 (Foundry), alltra-lifi-settlement (Foundry) This document lists all contracts that have deployment scripts, grouped by repo and purpose. Use it for compile, test, and deploy runs. **Chain 138:** Use `--with-gas-price 1000000000` for all `forge script` / `forge create` (chain minimum). [CONTRACT_DEPLOYMENT_RUNBOOK](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md). Env per script and gaps: [DEPLOYMENT_GAPS_COMPLETED](../03-deployment/DEPLOYMENT_GAPS_COMPLETED.md). --- ## 1. smom-dbis-138 (Chain 138 & multichain) **Location:** `smom-dbis-138/` **Build:** `forge build` **Test:** `forge test` ### 1.1 Chain 138 — Immediate (CCIP WETH9 Bridge) ✅ Deployed | Contract | Script | Status | |----------|--------|--------| | **CCIPWETH9Bridge** | `script/DeployCCIPWETH9Bridge.s.sol` | ✅ `0xcacfd227A040002e49e2e01626363071324f820a` | | **WETH9** (optional) | — | Pre-deployed in genesis | **Deploy (if needed):** `GAS_PRICE=1000000000 ./scripts/deploy-and-configure-weth9-bridge-chain138.sh` ### 1.2 Phased core (01 → 02) | Contract | Script | Depends / Env | |----------|--------|----------------| | **UniversalAssetRegistry** | `script/deploy/01_DeployCore.s.sol` | `PRIVATE_KEY` | | **GovernanceController** | `script/deploy/01_DeployCore.s.sol` | `PRIVATE_KEY`, registry address | | **UniversalCCIPBridge** | `script/deploy/02_DeployBridges.s.sol` | `PRIVATE_KEY`, `UNIVERSAL_ASSET_REGISTRY`, `CCIP_ROUTER` | | **BridgeOrchestrator** | `script/deploy/02_DeployBridges.s.sol` | `PRIVATE_KEY`, registry, bridge | **Order:** Run `01_DeployCore.s.sol` first, set `UNIVERSAL_ASSET_REGISTRY` and `GOVERNANCE_CONTROLLER`, then run `02_DeployBridges.s.sol`. ### 1.3 Deterministic (CREATE2) core | Contract | Script | Env | |----------|--------|-----| | **CREATE2Factory** | `script/deploy/DeployDeterministicCore.s.sol` | `PRIVATE_KEY` | | **UniversalAssetRegistry** (CREATE2) | same | `PRIVATE_KEY`, `ADMIN` (optional) | | **UniversalCCIPBridge** (impl + proxy) | same | `PRIVATE_KEY`, `CCIP_ROUTER` (optional; set later) | | **MirrorRegistry** (CREATE2) | same | — | | **AlltraAdapter** (CREATE2) | same | — | ### 1.4 Multichain (DeployAll) **Script:** `script/DeployAll.s.sol` **Chains:** Mainnet (1), Cronos (25), BSC (56), Polygon (137), Gnosis (100), Avalanche (43114), Base (8453), Arbitrum (42161), Optimism (10). **Chain 138 is not in DeployAll** — use `DeployCCIPWETH9Bridge.s.sol` + shell script above. | Contract | When | |----------|------| | **WETH9** | If not set in env for chain | | **WETH10** | If not set in env for chain | | **CCIPWETH9Bridge** | All non-mainnet chains | | **CCIPWETH10Bridge** | All non-mainnet chains | | **CCIPLogger** | Optional; not implemented in Foundry script. **Decision:** Omit from deploy list unless CCIP monitoring is required; deploy via Hardhat per [TASK12_CCIP_LOGGER_STATUS.md](../../smom-dbis-138/docs/deployment/TASK12_CCIP_LOGGER_STATUS.md) if needed. | Chain-specific env vars: e.g. `CCIP_ETH_ROUTER`, `CCIP_ETH_LINK_TOKEN`, `ETH_MAINNET_SELECTOR` for mainnet; `WETH9_POLYGON`, `WETH10_POLYGON`, etc. ### 1.5 Other deploy scripts (by feature) - **Bridge:** `script/deploy/bridge/DeployWETHBridges.s.sol`, `DeployEtherlinkRelayReceiver.s.sol`; `script/bridge/trustless/DeployTrustlessBridge.s.sol`, `DeployCompleteSystem.s.sol`, etc. - **Vault:** `script/deploy/vault/DeployVaultSystem.s.sol`, `script/vault/DeployVaultSystem.s.sol` - **Reserve:** `script/reserve/DeployReserveSystem.s.sol`, `DeployStablecoinReserveVault.s.sol`, `DeployKeeper.s.sol` - **Tokens:** `script/DeployCompliantUSDC.s.sol`, `DeployCompliantUSDT.s.sol`, `script/deploy/DeployCompliantFiatTokens.s.sol`; `script/DeployTokenRegistry.s.sol`; `script/iso4217w/DeployWTokenSystem.s.sol`; `scripts/tokenization/DeployTokenizedEUR.s.sol`, `DeployTokenRegistry.s.sol` - **CCIP:** `script/DeployCCIPReceiver.s.sol`, `script/DeployCCIPSender.s.sol`, `script/DeployCCIPRelay.s.sol`, `script/DeployTwoWayBridge.s.sol` - **Governance / multisig:** `script/DeployVoting.s.sol`, `script/DeployMultiSig.s.sol`, `script/DeployFeeCollector.s.sol`, `script/DeployComplianceRegistry.s.sol` - **eMoney:** `script/emoney/Deploy.s.sol`, `script/emoney/DeployChain138.s.sol` - **Smart accounts:** `script/smart-accounts/DeploySmartAccountsKit.s.sol`, `DeployAccountWalletRegistryExtended.s.sol` - **Channels / mirror:** `script/DeployPaymentChannelManager.s.sol`, `script/DeployGenericStateChannelManager.s.sol` (Mainnet and/or Chain-138). **AddressMapper** and **MirrorManager** deployed on Chain 138 (2026-02-12) at `0x439Fcb2d2ab2f890DCcAE50461Fa7d978F9Ffe1A` and `0x6eD905A30c552a6e003061A38FD52A5A427beE56`. **TransactionMirror:** deploy script can hit Forge constructor-args decode bug; use `forge create` with encoded constructor and `--with-gas-price 1000000000` when needed. See smom-dbis-138 `docs/channels/` and `docs/deployment/PAYMENT_CHANNELS_DEPLOYMENT.md`. - **Migration:** `script/deploy/05_MigrateExistingAssets.s.sol` (requires `UNIVERSAL_ASSET_REGISTRY`, `TOKENLIST_GOVERNANCE_SYNC`) --- ## 2. alltra-lifi-settlement **Location:** `alltra-lifi-settlement/` **Build:** `forge build` **Test:** `forge test` (Solidity); `npm test` / Jest for TS tests ### 2.1 Settlement (Chain 138) ✅ Deployed | Contract | Script | Status | |----------|--------|--------| | **MerchantSettlementRegistry** | `scripts/deploy/deploy-merchant-settlement-registry.s.sol` | ✅ `0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800` | | **WithdrawalEscrow** | `scripts/deploy/deploy-withdrawal-escrow.s.sol` | ✅ `0xe77cb26eA300e2f5304b461b0EC94c8AD6A7E46D` | **Order:** Deploy MerchantSettlementRegistry first; WithdrawalEscrow depends on CompliantUSDC (from smom-dbis-138). --- ## 3. Quick reference — compile & test ```bash # smom-dbis-138 cd smom-dbis-138 && forge build && forge test # alltra-lifi-settlement cd alltra-lifi-settlement && forge build && forge test ``` --- ## 4. Quick reference — deploy (Chain 138) ```bash # CCIP WETH9 Bridge (recommended; fixes router mismatch) export PRIVATE_KEY=0x... ./scripts/deploy-and-configure-weth9-bridge-chain138.sh # Optional: RPC_URL_138 (Chain 138 Core), MAINNET_WETH9_BRIDGE_ADDRESS # After: export CCIPWETH9_BRIDGE_CHAIN138= # Core + Bridges (phased) cd smom-dbis-138 forge script script/deploy/01_DeployCore.s.sol --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY # Set UNIVERSAL_ASSET_REGISTRY, GOVERNANCE_CONTROLLER forge script script/deploy/02_DeployBridges.s.sol --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY # Requires: UNIVERSAL_ASSET_REGISTRY, CCIP_ROUTER ``` --- ## 5. Build & test status (2026-01-31) | Repo | Build | Tests | Notes | |------|--------|-------|-------| | **alltra-lifi-settlement** | OK | 8/8 passed | Added `remappings` and `solc = "0.8.20"` in foundry.toml; installed `openzeppelin-contracts` and `forge-std` via `forge install`. Fixed etherscan `key` field. | | **smom-dbis-138** | Long-running (435 files) | — | `forge build` can take several minutes. `forge script script/DeployCCIPWETH9Bridge.s.sol` compiles on the fly when deploying. | | **Deploy (Chain 138 bridge)** | — | — | Requires `PRIVATE_KEY`. Run `./scripts/deploy-and-configure-weth9-bridge-chain138.sh` (use `--dry-run` to simulate without keys). | --- ## 6. References - [NEXT_STEPS_MASTER.md](../00-meta/NEXT_STEPS_MASTER.md) — Immediate: CCIP WETH9 Bridge - [CONTRACT_DEPLOYMENT_RUNBOOK.md](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md) — Deploy and verify workflow (Forge Verification Proxy) - [scripts/README.md](../../scripts/README.md) — Bridge deploy script, dry-run - [07-ccip/CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md) — CCIP fleet - [COMPREHENSIVE_STATUS_BRIDGE_READY.md](../../COMPREHENSIVE_STATUS_BRIDGE_READY.md) — Router fix - smom-dbis-138 [PAYMENT_CHANNELS_DEPLOYMENT.md](../../smom-dbis-138/docs/deployment/PAYMENT_CHANNELS_DEPLOYMENT.md) — Payment and state channel managers (Mainnet / Chain-138)