# Completion Master Plan — All Incomplete & Missing Items **Last Updated:** 2026-02-16 **Purpose:** Single actionable checklist to complete all remaining deployments, config-ready items, routing gaps, and missing components. Ordered by dependency and priority. **Related:** [OPTIONAL_DEPLOYMENTS_START_HERE](../07-ccip/OPTIONAL_DEPLOYMENTS_START_HERE.md) | [CHAIN138_COMPLETE_ROUTING_TABLE](../07-ccip/CHAIN138_COMPLETE_ROUTING_TABLE.md) | [NEXT_STEPS_AND_REMAINING_TODOS](NEXT_STEPS_AND_REMAINING_TODOS.md) --- ## Phase 0 — Unblock Stuck Transaction (Prerequisite) **Status:** ✅ Done. Block production resumed; stuck tx cleared. Nonce advanced from 13274/13275 to 13286. Phase 6 (Lockbox138) and Phase 8 (eMoney) completed. | # | Action | Command / notes | Owner | |---|--------|-----------------|-------| | 0.1 | **Option A:** Deploy with nonce skip | `cd smom-dbis-138 && source .env && forge create contracts/bridge/trustless/Lockbox138.sol:Lockbox138 --rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY" --nonce 13275 --gas-price 20000000000 --broadcast` | Operator | | 0.2 | **Option B:** MetaMask 0-ETH self-transfer | Send 0 ETH from deployer to self at nonce 13274 with gas price > 1M gwei to replace, then retry deploy | Operator | | 0.3 | **Option C:** Flush from RPC host | SSH to r630-01, run `bash /path/to/flush-stuck-tx-rpc-and-validators.sh --full` from a host that can reach 192.168.11.11, then deploy from LAN within 60s | Operator | | 0.4 | **Option D:** Fresh deployer wallet | Use new wallet (nonce 0) for Lockbox138 deploy | Operator | **Verify nonce:** Use curl (cast nonce may not support pending): ```bash source smom-dbis-138/.env; RPC="${RPC_URL_138}"; D="$DEPLOYER" L=$(curl -s -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getTransactionCount\",\"params\":[\"$D\",\"latest\"],\"id\":1}" "$RPC" | jq -r '.result') P=$(curl -s -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getTransactionCount\",\"params\":[\"$D\",\"pending\"],\"id\":1}" "$RPC" | jq -r '.result') printf "Latest: %d | Pending: %d\n" $((L)) $((P)) ``` --- ## Phase 1 — Deployments (Chain 138) | # | Item | Status | Command / env | Ref | |---|------|--------|---------------|-----| | 1.1 | **Lockbox138 (Phase 6)** | ✅ Done | `0x9E51fAAE511024161b99838Af0dbA38Ff354F72c` | OPTIONAL_DEPLOYMENTS §2C | | 1.2 | **eMoney 138 (Phase 8)** | ✅ Done | ComplianceRegistry, DebtRegistry, PolicyManager, TokenFactory138, BridgeVault138 | OPTIONAL_DEPLOYMENTS §2 | | 1.3 | **Trustless Mainnet** | ⏳ RPC 403 | Set `ETHEREUM_MAINNET_RPC` to RPC that accepts your key (e.g. Infura/Alchemy project URL); run DeployTrustlessBridge with `--rpc-url $ETHEREUM_MAINNET_RPC --broadcast --via-ir` | OPTIONAL_DEPLOYMENTS §2C | **Post-deploy:** Add `LOCKBOX_138=0x...` (and INBOX_ETH for Mainnet) to .env; update config/smart-contracts-master.json. --- ## Phase 2 — Config-Ready Chains (CCIP) Complete Gnosis (100), Celo (42220), Wemix (1111) — deploy bridges, add destinations on 138, fund LINK. | # | Chain | Steps | Ref | |---|-------|-------|-----| | 2.1 | **Gnosis** | Deploy CCIPWETH9/WETH10 on Gnosis; add 138→100 and 100→138 destinations; fund LINK | [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) | | 2.2 | **Celo** | Same for Celo (42220) | Same | | 2.3 | **Wemix** | Same for Wemix (1111); verify token addresses on [scan.wemix.com/tokens](https://scan.wemix.com/tokens) | Same, [WEMIX_TOKEN_VERIFICATION](../07-ccip/WEMIX_TOKEN_VERIFICATION.md) | | 2.4 | **Run completion script** | `smom-dbis-138/scripts/deployment/complete-config-ready-chains.sh` (requires bridge addresses, CHAIN138_SELECTOR) | CONFIG_READY_CHAINS | --- ## Phase 3 — DODO PMM & Liquidity Pools (Chain 138) | # | Item | Status | Env required | Command | |---|------|--------|--------------|---------| | 3.1 | **DODO PMM Integration** | ❌ Not deployed | `DODO_VENDING_MACHINE_ADDRESS`, `COMPLIANT_USDT_ADDRESS`, `COMPLIANT_USDC_ADDRESS`, `OFFICIAL_USDT_ADDRESS`, `OFFICIAL_USDC_ADDRESS`, `DODO_APPROVE_ADDRESS` | `forge script script/dex/DeployDODOPMMIntegration.s.sol --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY` | | 3.2 | **Create pools** | — | After 3.1 | createCUSDTUSDTPool, createCUSDCUSDCPool, createCUSDTCUSDCPool via DODO | | 3.3 | **Set env** | — | `CHAIN_138_DODO_POOL_MANAGER`, `CHAIN_138_DODO_VENDING_MACHINE` | .env | | 3.4 | **Update docs** | — | LIQUIDITY_POOLS_MASTER_MAP, routing table | LIQUIDITY_POOL_CONTROLS_RUNBOOK | --- ## Phase 4 — Reserve Keeper & Paymaster (Optional) | # | Item | Status | Env | Notes | |---|------|--------|-----|-------| | 4.1 | **Reserve Keeper (Phase 4)** | Skips when unset | `ORACLE_PRICE_FEED` or `RESERVE_KEEPER` | Set to deploy; or set RESERVE_KEEPER to existing address to skip | | 4.2 | **Paymaster (Phase 9)** | Informational | `ENTRY_POINT`, `SMART_ACCOUNT_FACTORY`, `PAYMASTER` | Deploy from ERC-4337 / Smart Accounts kit, then set env | --- ## Phase 5 — Routing Table Gaps (from CHAIN138_COMPLETE_ROUTING_TABLE) | # | Gap | Action | Status | |---|-----|--------|--------| | 5.1 | **Trustless (Lockbox138)** | Deploy (Phase 1.1) | ✅ Done | | 5.2 | **CCIP Gnosis/Celo/Wemix** | Phase 2 | ⚠️ Config ready | | 5.3 | **DODO PMM on-chain swaps** | Phase 3 | ❌ Not deployed | | 5.4 | **LINK 138→Mainnet relay** | Extend CCIPRelayBridge or add LINK receiver; set relaySupported in token-mapping.json | [RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK](../07-ccip/RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md) | | 5.5 | **Tether Chain 138** | No bridge mapping — document only or add Bridge Vault route if needed | — | --- ## Phase 6 — Operator / LAN Tasks | # | Task | Command / doc | Owner | |---|------|---------------|-------| | 6.1 | **Blockscout verification** | `source smom-dbis-138/.env 2>/dev/null; ./scripts/verify/run-contract-verification-with-proxy.sh` | Operator | | 6.2 | **Fix E2E 502s** | `./scripts/maintenance/run-all-maintenance-via-proxmox-ssh.sh --e2e` or `address-all-remaining-502s.sh` | Operator | | 6.3 | **RPC 2101 approve & sync** | `./scripts/verify/verify-rpc-2101-approve-and-sync.sh` | Operator | | 6.4 | **Run operator script** | `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms]` | Operator | --- ## Phase 7 — External & Third-Party | # | Task | Owner | Ref | |---|------|-------|-----| | 7.1 | **Ledger** | Await Tally response; sign agreement | ADD_CHAIN138_TO_LEDGER_LIVE | | 7.2 | **Trust Wallet** | PR to trustwallet/wallet-core | ADD_CHAIN138_TO_TRUST_WALLET | | 7.3 | **Consensys** | Outreach for Swaps/Bridge | CONSENSYS_OUTREACH_PACKAGE | | 7.4 | **CoinGecko/CMC** | Submit Chain 138 + tokens | COINGECKO_SUBMISSION_GUIDE | --- ## Phase 8 — Missing Items (from REMAINING_COMPONENTS) | # | Item | Action | |---|------|--------| | 8.1 | **AddressMapper other chains** | Cronos ✅; for others: DeployAddressMapperOtherChain.s.sol, set mapper in smart-contracts-master.json | | 8.2 | **Code placeholders** | AlltraAdapter fee (setBridgeFee), smart accounts kit, quote service Fabric chainId, EnhancedSwapRouter | REQUIRED_FIXES_UPDATES_GAPS | | 8.3 | **API keys** | Add Coingecko, CMC keys to .env | reports/API_KEYS_REQUIRED.md | | 8.4 | **cancel-pending-transactions.sh RPC** | Script defaults to RPC_ALLTRA_1 (250) for Chain 138; ensure RPC_URL_138 is set in .env or fix fallback to 192.168.11.211 | | 8.5 | **cast nonce pending** | cancel-pending-transactions.sh uses `cast nonce --pending`; some cast versions don't support it — may need curl-based nonce check (see Phase 0) | --- ## Execution Order (Recommended) 1. **Phase 0** — Unblock stuck tx (choose one option) 2. **Phase 1** — Lockbox138, eMoney, Trustless Mainnet 3. **Phase 2** — Gnosis, Celo, Wemix CCIP 4. **Phase 3** — DODO PMM (requires DODO env) 5. **Phase 4** — Reserve Keeper, Paymaster (if needed) 6. **Phase 6** — Operator tasks (Blockscout, 502s, RPC) 7. **Phase 5** — Update routing table as each completes 8. **Phase 7** — External (async) 9. **Phase 8** — Code/config hygiene --- ## Quick Commands Reference ```bash # Check stuck tx source smom-dbis-138/.env; RPC="$RPC_URL_138"; D="$DEPLOYER" printf "Latest: %d | Pending: %d\n" $((0x$(curl -s -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getTransactionCount\",\"params\":[\"$D\",\"latest\"],\"id\":1}" "$RPC" | jq -r '.result'))) $((0x$(curl -s -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getTransactionCount\",\"params\":[\"$D\",\"pending\"],\"id\":1}" "$RPC" | jq -r '.result'))) # Deploy Lockbox138 with nonce skip cd smom-dbis-138 && source .env && forge create contracts/bridge/trustless/Lockbox138.sol:Lockbox138 \ --rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY" --nonce 13275 --gas-price 20000000000 --broadcast # Run phases 6,8 after unblock ./scripts/run-optional-deployments.sh --execute --phases 6,8 # Flush mempool (from host with SSH to r630-01) bash scripts/flush-stuck-tx-rpc-and-validators.sh --full ``` --- ## References - [OPTIONAL_DEPLOYMENTS_START_HERE](../07-ccip/OPTIONAL_DEPLOYMENTS_START_HERE.md) - [CHAIN138_COMPLETE_ROUTING_TABLE](../07-ccip/CHAIN138_COMPLETE_ROUTING_TABLE.md) - [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) - [NEXT_STEPS_AND_REMAINING_TODOS](NEXT_STEPS_AND_REMAINING_TODOS.md) - [REMAINING_COMPONENTS_TASKS_AND_RECOMMENDATIONS](REMAINING_COMPONENTS_TASKS_AND_RECOMMENDATIONS.md) - [STEPS_FROM_PROXMOX_OR_LAN_WITH_SECRETS](STEPS_FROM_PROXMOX_OR_LAN_WITH_SECRETS.md)