docs: update master documentation and push to Gitea (2026-03-06)
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled

- MASTER_INDEX: Last Updated 2026-03-06; status 59/59 contracts; add NEXT_STEPS_LIST, CONTRACT_NEXT_STEPS_LIST
- docs/README, NEXT_STEPS_INDEX, 06-besu/MASTER_INDEX: Last Updated 2026-03-06
- Contract check script: 59 addresses (PMM, vault/reserve, CompliantFiatTokens); canonical CCIP/router
- New docs: EXECUTION_CHECKLIST, NEXT_STEPS_LIST, DOTENV_AUDIT, ADDITIONAL_PATHS, deployer gas runbook, WEMIX_ACQUISITION_TABLED, etc.
- Config: deployer-gas-routes, cro-wemix-swap-routes, routing-registry, token-mapping
- Scripts: check-contracts-on-chain-138, check-pmm-pool-balances-chain138, deployer-gas-auto-route, acquire-cro-and-wemix-gas
- Operator rule: operator-lan-access-check.mdc

Made-with: Cursor
This commit is contained in:
defiQUG
2026-03-06 19:11:25 -08:00
parent d38174dc25
commit 3f76bc9507
63 changed files with 3439 additions and 107 deletions

View File

@@ -13,3 +13,5 @@ alwaysApply: true
- **Continue and complete:** (1) `./scripts/run-completable-tasks-from-anywhere.sh` then (2) `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if NPM_PASSWORD not set; add `--deploy` or `--create-vms` as needed). - **Continue and complete:** (1) `./scripts/run-completable-tasks-from-anywhere.sh` then (2) `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if NPM_PASSWORD not set; add `--deploy` or `--create-vms` as needed).
When suggesting or running operator/LAN tasks (e.g. `run-all-operator-tasks-from-lan.sh`, contract verification, NPMplus backup, nginx/VMID 5000, token-aggregation DB, E2E checks), assume this host can reach Proxmox hosts (192.168.11.1012), Chain 138 RPC, NPMplus, and Blockscout. Credentials in `.env` or `smom-dbis-138/.env` (e.g. `NPM_PASSWORD`, `PRIVATE_KEY`) are used automatically when the operator script runs. When suggesting or running operator/LAN tasks (e.g. `run-all-operator-tasks-from-lan.sh`, contract verification, NPMplus backup, nginx/VMID 5000, token-aggregation DB, E2E checks), assume this host can reach Proxmox hosts (192.168.11.1012), Chain 138 RPC, NPMplus, and Blockscout. Credentials in `.env` or `smom-dbis-138/.env` (e.g. `NPM_PASSWORD`, `PRIVATE_KEY`) are used automatically when the operator script runs.
**Optional:** Before running operator scripts, run the **Operator/LAN access check** (curl RPC, env files) per rule `operator-lan-access-check.mdc`; if unreachable, suggest `run-completable-tasks-from-anywhere.sh` and document that operator tasks need LAN.

View File

@@ -0,0 +1,45 @@
---
description: Check for Operator/LAN access before running operator scripts; then run or recommend accordingly
alwaysApply: false
globs:
- "scripts/run-all-operator-tasks-from-lan.sh"
- "scripts/run-operator-tasks-from-lan.sh"
- "docs/00-meta/OPERATOR*.md"
- "docs/00-meta/STEPS_FROM_PROXMOX*.md"
---
# Operator/LAN access check
When the user asks to run **operator tasks**, **LAN tasks**, or scripts that require 192.168.11.x (NPMplus, Chain 138 RPC, Blockscout, Proxmox), **check for Operator/LAN access first**, then run or recommend accordingly.
## 1. Check (before running operator scripts)
Run from **repo root**:
```bash
# RPC reachable?
curl -s -o /dev/null -w "%{http_code}" --connect-timeout 3 http://192.168.11.211:8545
# Env files present (operator scripts load these automatically)
test -f .env && test -f smom-dbis-138/.env && echo "env OK" || echo "env missing"
```
- **RPC 200/201 or 400** and **env OK** → treat as **Operator/LAN available**; operator scripts can be run.
- **Timeout / unreachable** or **env missing** → treat as **no Operator/LAN**; do not run `run-all-operator-tasks-from-lan.sh`; suggest `./scripts/run-completable-tasks-from-anywhere.sh` and note that operator tasks require a host on 192.168.11.x with `.env` and optional `NPM_PASSWORD` (see OPERATOR_CREDENTIALS_CHECKLIST).
## 2. When access is available
- Run operator scripts from repo root. They **load dotenv automatically** via `scripts/lib/load-project-env.sh` (no need to `source .env`).
- **Primary:** `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` not set; add `--deploy` or `--create-vms` if needed).
- **Completable first (optional):** `./scripts/run-completable-tasks-from-anywhere.sh` then operator script.
## 3. When access is not available
- Suggest: `./scripts/run-completable-tasks-from-anywhere.sh` (config validation, on-chain check, reconcile output).
- Tell the user that NPMplus backup, Blockscout verify, RPC proxy updates, and deploy require a host on **LAN (192.168.11.x)** with root `.env` and `smom-dbis-138/.env`; see **docs/00-meta/OPERATOR_CREDENTIALS_CHECKLIST.md** and **OPERATOR_READY_CHECKLIST.md**.
## 4. References
- **Operator context (always):** `.cursor/rules/operator-context-lan-proxmox.mdc` — this machine is assumed LAN/operator when that rule applies.
- **Credentials:** `docs/00-meta/OPERATOR_CREDENTIALS_CHECKLIST.md` — per-task LAN, PRIVATE_KEY, NPM_PASSWORD, RPC_URL_138.
- **Commands:** `docs/00-meta/OPERATOR_READY_CHECKLIST.md` — copy-paste operator commands.

View File

@@ -11,8 +11,8 @@ ADDR_CCIP_RECEIVER="0xC12236C03b28e675d376774FCE2C2C052488430F"
ADDR_VOTING="0x022267b26400114aF01BaCcb92456Fe36cfccD93" ADDR_VOTING="0x022267b26400114aF01BaCcb92456Fe36cfccD93"
ADDR_CCIP_SENDER="0x105F8A15b819948a89153505762444Ee9f324684" ADDR_CCIP_SENDER="0x105F8A15b819948a89153505762444Ee9f324684"
ADDR_CCIPWETH10_BRIDGE="0xe0E93247376aa097dB308B92e6Ba36bA015535D0" ADDR_CCIPWETH10_BRIDGE="0xF5a87528cEb72312979DB0C51509489caF940721"
ADDR_CCIPWETH9_BRIDGE="${CCIPWETH9_BRIDGE_CHAIN138:-0x971cD9D156f193df8051E48043C476e53ECd4693}" ADDR_CCIPWETH9_BRIDGE="${CCIPWETH9_BRIDGE_CHAIN138:-0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5}"
# alltra-lifi-settlement # alltra-lifi-settlement
ADDR_MERCHANT_SETTLEMENT="0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800" ADDR_MERCHANT_SETTLEMENT="0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800"

View File

@@ -0,0 +1,143 @@
{
"description": "Multiple swap routes to acquire Cronos (CRO) and Wemix (WEMIX) native gas for deployer. Used by scripts/deployment/acquire-cro-and-wemix-gas.sh and deployer-gas-auto-route. No in-repo execution: use aggregator UIs or future LiFi/Jumper API.",
"deployerAddress": "0x4A666F96fC8764181194447A7dFdb7d471b301C8",
"chains": {
"25": {
"name": "Cronos",
"nativeSymbol": "CRO",
"chainId": 25,
"requiredNative": "15",
"requiredUnit": "CRO",
"recipientNote": "Send CRO to deployer on Cronos mainnet (chain 25).",
"swapRoutes": [
{
"id": "swapspace-eth-cro",
"name": "SwapSpace",
"type": "aggregator",
"fromAssets": ["ETH"],
"toAsset": "CRO",
"url": "https://swapspace.co/exchange-pairs/cro-eth",
"description": "Swap ETH → CRO"
},
{
"id": "swapspace-bnb-cro",
"name": "SwapSpace",
"type": "aggregator",
"fromAssets": ["BNB"],
"toAsset": "CRO",
"url": "https://swapspace.co/exchange-pairs/cro-bnb",
"description": "Swap BNB → CRO"
},
{
"id": "swapspace-usdt-cro",
"name": "SwapSpace",
"type": "aggregator",
"fromAssets": ["USDT"],
"toAsset": "CRO",
"url": "https://swapspace.co/exchange-pairs/cro-usdt",
"description": "Swap USDT → CRO"
},
{
"id": "swapspace-usdc-cro",
"name": "SwapSpace",
"type": "aggregator",
"fromAssets": ["USDC"],
"toAsset": "CRO",
"url": "https://swapspace.co/exchange-pairs/cro-usdc",
"description": "Swap USDC → CRO"
},
{
"id": "changenow-cro",
"name": "ChangeNOW",
"type": "aggregator",
"fromAssets": ["ETH", "BNB", "USDT", "USDC", "BTC"],
"toAsset": "CRO",
"url": "https://changenow.io/currencies/cronos-cro",
"description": "Swap multiple assets → Cronos CRO"
},
{
"id": "simpleswap-cro",
"name": "SimpleSwap",
"type": "aggregator",
"fromAssets": ["ETH", "BTC", "USDT", "USDC", "BNB"],
"toAsset": "CRO",
"url": "https://simpleswap.io/coins/cronos",
"description": "Swap to Cronos (CRO)"
},
{
"id": "stealthex-cro",
"name": "StealthEX",
"type": "aggregator",
"fromAssets": ["ETH", "BTC", "USDT"],
"toAsset": "CRO",
"url": "https://stealthex.io/coin/cro",
"description": "Swap to CRO (Cronos)"
}
]
},
"1111": {
"name": "Wemix",
"nativeSymbol": "WEMIX",
"chainId": 1111,
"requiredNative": "0.4",
"requiredUnit": "WEMIX",
"recipientNote": "Send WEMIX to deployer on Wemix mainnet (chain 1111).",
"swapRoutes": [
{
"id": "swapspace-bnb-wemix",
"name": "SwapSpace",
"type": "aggregator",
"fromAssets": ["BNB"],
"toAsset": "WEMIX",
"url": "https://swapspace.co/exchange-pairs/wemix-bnb",
"description": "Swap BNB → WEMIX"
},
{
"id": "swapspace-eth-wemix",
"name": "SwapSpace",
"type": "aggregator",
"fromAssets": ["ETH"],
"toAsset": "WEMIX",
"url": "https://swapspace.co/exchange-pairs/wemix-eth",
"description": "Swap ETH → WEMIX"
},
{
"id": "changenow-wemix-polygon",
"name": "ChangeNOW",
"type": "aggregator",
"fromAssets": ["POL", "MATIC"],
"toAsset": "WEMIX",
"url": "https://changenow.io/currencies/wemix-main/polygon-matic",
"description": "Swap Polygon (POL/MATIC) → WEMIX"
},
{
"id": "changenow-wemix",
"name": "ChangeNOW",
"type": "aggregator",
"fromAssets": ["ETH", "BNB", "USDT", "USDC"],
"toAsset": "WEMIX",
"url": "https://changenow.io/currencies/wemix-main",
"description": "Swap multiple assets → WEMIX"
},
{
"id": "simpleswap-wemix",
"name": "SimpleSwap",
"type": "aggregator",
"fromAssets": ["ETH", "BTC", "USDT", "BNB"],
"toAsset": "WEMIX",
"url": "https://simpleswap.io/coins/wemix",
"description": "Swap to WEMIX"
},
{
"id": "stealthex-wemix",
"name": "StealthEX",
"type": "aggregator",
"fromAssets": ["ETH", "BTC", "USDT"],
"toAsset": "WEMIX",
"url": "https://stealthex.io/coin/wemix",
"description": "Swap to WEMIX"
}
]
}
}
}

View File

@@ -0,0 +1,156 @@
{
"description": "Chain-to-method mapping for deployer gas auto-route: swap/bridge ERC-20 to native gas per chain. Used by scripts/deployment/deployer-gas-auto-route.sh.",
"deployerAddress": "0x4A666F96fC8764181194447A7dFdb7d471b301C8",
"chains": [
{
"chainId": 138,
"name": "DeFi Oracle Meta Mainnet",
"nativeSymbol": "ETH",
"thresholdEther": "0.006",
"method": "internal",
"tokenAggregationBaseUrl": "https://dbis-api.d-bis.org/api/v1",
"tokenAggregationFallbackUrl": "http://192.168.11.140:3001",
"dodoPmmIntegration": "0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D",
"poolCusdtCusdc": "0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8",
"cusdt": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"cusdc": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"weth9": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"note": "No cUSDT/cUSDC→WETH pool on 138; use genesis/validator for gas. Internal path for future c*→WETH pool if added."
},
{
"chainId": 1,
"name": "Ethereum Mainnet",
"nativeSymbol": "ETH",
"thresholdEther": "0.02",
"method": "protocolink",
"protocolinkChainKey": "mainnet",
"supportedInputTokens": ["USDT", "USDC", "LINK", "DAI"]
},
{
"chainId": 56,
"name": "BSC",
"nativeSymbol": "BNB",
"thresholdEther": "0.06",
"method": "protocolink",
"protocolinkChainKey": "bsc",
"supportedInputTokens": ["USDT", "USDC", "BUSD", "LINK"]
},
{
"chainId": 137,
"name": "Polygon",
"nativeSymbol": "MATIC",
"thresholdEther": "1.0",
"method": "protocolink",
"protocolinkChainKey": "polygon",
"supportedInputTokens": ["USDT", "USDC", "LINK", "DAI"]
},
{
"chainId": 100,
"name": "Gnosis",
"nativeSymbol": "xDAI",
"thresholdEther": "0.05",
"method": "protocolink",
"protocolinkChainKey": "gnosis",
"supportedInputTokens": ["USDT", "USDC", "LINK", "WXDAI"]
},
{
"chainId": 10,
"name": "Optimism",
"nativeSymbol": "ETH",
"thresholdEther": "0.005",
"method": "protocolink",
"protocolinkChainKey": "optimism",
"supportedInputTokens": ["USDT", "USDC", "LINK", "DAI"]
},
{
"chainId": 42161,
"name": "Arbitrum",
"nativeSymbol": "ETH",
"thresholdEther": "0.005",
"method": "protocolink",
"protocolinkChainKey": "arbitrum",
"supportedInputTokens": ["USDT", "USDC", "LINK", "DAI"]
},
{
"chainId": 8453,
"name": "Base",
"nativeSymbol": "ETH",
"thresholdEther": "0.005",
"method": "protocolink",
"protocolinkChainKey": "base",
"supportedInputTokens": ["USDT", "USDC", "LINK", "DAI"]
},
{
"chainId": 43114,
"name": "Avalanche",
"nativeSymbol": "AVAX",
"thresholdEther": "0.1",
"method": "protocolink",
"protocolinkChainKey": "avalanche",
"supportedInputTokens": ["USDT", "USDC", "LINK", "DAI"]
},
{
"chainId": 25,
"name": "Cronos",
"nativeSymbol": "CRO",
"thresholdEther": "15",
"method": "manual",
"manualInstructions": "Swap ETH/BNB/USDT/USDC to CRO via any listed aggregator; send to deployer on Cronos (chain 25). Required ~15 CRO. Multiple routes: config/cro-wemix-swap-routes.json.",
"manualLinks": [
"https://swapspace.co/exchange-pairs/cro-eth",
"https://swapspace.co/exchange-pairs/cro-bnb",
"https://changenow.io/currencies/cronos-cro",
"https://simpleswap.io/coins/cronos",
"https://stealthex.io/coin/cro"
],
"swapRoutesConfig": "config/cro-wemix-swap-routes.json",
"note": "Protocolink does not support Cronos (400 unsupported); use manual aggregator. Run ./scripts/deployment/acquire-cro-and-wemix-gas.sh for all routes."
},
{
"chainId": 42220,
"name": "Celo",
"nativeSymbol": "CELO",
"thresholdEther": "0.1",
"method": "protocolink",
"protocolinkChainKey": "celo",
"supportedInputTokens": ["USDT", "USDC", "cUSD", "cEUR"],
"note": "Protocolink Celo support TBD; may need manual if not supported."
},
{
"chainId": 1111,
"name": "Wemix",
"nativeSymbol": "WEMIX",
"thresholdEther": "0.4",
"method": "manual",
"manualInstructions": "Swap ETH/BNB/POL to WEMIX via any listed aggregator; send to deployer on chain 1111. Required ~0.4 WEMIX. Multiple routes: config/cro-wemix-swap-routes.json.",
"manualLinks": [
"https://swapspace.co/exchange-pairs/wemix-bnb",
"https://swapspace.co/exchange-pairs/wemix-eth",
"https://changenow.io/currencies/wemix-main/polygon-matic",
"https://simpleswap.io/coins/wemix",
"https://stealthex.io/coin/wemix"
],
"swapRoutesConfig": "config/cro-wemix-swap-routes.json",
"inRepoOption": "LiFi or Jumper API if 1111 supported; implement scripts/deployment/wemix-acquire-via-lifi.js when available."
},
{
"chainId": 651940,
"name": "ALL Mainnet",
"nativeSymbol": "ALL",
"thresholdEther": "0.1",
"method": "manual",
"note": "Alltra chain; use existing funding or alltra-lifi-settlement flows."
},
{
"chainId": 42793,
"name": "Etherlink",
"nativeSymbol": "XTZ",
"thresholdEther": "1",
"method": "manual",
"manualInstructions": "Acquire XTZ/tez for Etherlink gas via exchange or aggregator; send to deployer. Bridge/CCIP support TBD.",
"note": "Optional; token-mapping 138↔42793 added 2026-03-06. Add to routing-registry when bridge available."
}
],
"slippageBpsMax": 150,
"maxAmountPerRunEther": "10"
}

View File

@@ -1,5 +1,7 @@
{ {
"description": "Routing registry: (fromChain, toChain, asset) -> pathType, bridgeAddress. Used by UI and indexer. See docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md.", "description": "Routing registry: (fromChain, toChain, asset) -> pathType, bridgeAddress. Used by UI and indexer. Includes inbound (dest->138), WETH10, and LINK placeholder. See docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md.",
"version": "1.1.0",
"updated": "2026-03-06",
"routes": [ "routes": [
{ {
"fromChain": 138, "fromChain": 138,
@@ -24,99 +26,324 @@
"toChain": 1, "toChain": 1,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 1,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 1,
"label": "CCIPWETH9Bridge",
"note": "Set to MAINNET_CCIP_WETH9_BRIDGE from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 56, "toChain": 56,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 56,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 56,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_BSC from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 137, "toChain": 137,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 137,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 137,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_POLYGON from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 10, "toChain": 10,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 10,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 10,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_OPTIMISM from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 42161, "toChain": 42161,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 42161,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 42161,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_ARBITRUM from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 43114, "toChain": 43114,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 43114,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 43114,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_AVALANCHE from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 8453, "toChain": 8453,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 8453,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 8453,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_BASE from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 100, "toChain": 100,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 100,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 100,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_GNOSIS from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 25, "toChain": 25,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 25,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 25,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_CRONOS from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 42220, "toChain": 42220,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
}, },
{
"fromChain": 42220,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 42220,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_CELO from .env"
},
{ {
"fromChain": 138, "fromChain": 138,
"toChain": 1111, "toChain": 1111,
"asset": "WETH", "asset": "WETH",
"pathType": "CCIP", "pathType": "CCIP",
"bridgeAddress": "0x971cD9D156f193df8051E48043C476e53ECd4693", "bridgeAddress": "0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5",
"bridgeChainId": 138, "bridgeChainId": 138,
"label": "CCIPWETH9Bridge" "label": "CCIPWETH9Bridge"
},
{
"fromChain": 1111,
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 1111,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_WEMIX from .env when deployed"
},
{
"fromChain": 138,
"toChain": 1,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 56,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 137,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 10,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 42161,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 43114,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 8453,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 100,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 25,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 42220,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 1111,
"asset": "WETH10",
"pathType": "CCIP",
"bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0",
"bridgeChainId": 138,
"label": "CCIPWETH10Bridge"
},
{
"fromChain": 138,
"toChain": 1,
"asset": "LINK",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeChainId": 138,
"label": "CCIPRelayLINK",
"note": "When LINK relay supported per RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK"
} }
] ],
"pathTypes": {
"ALT": "AlltraAdapter 138 <-> 651940",
"CCIP": "Chainlink CCIP WETH9/WETH10",
"LIFI": "LiFi aggregator (add when integrated)",
"JUMPER": "Jumper aggregator (add when integrated)"
}
} }

View File

@@ -26,6 +26,7 @@
"137": "Polygon", "137": "Polygon",
"138": "SMOM-DBIS-138 (DeFi Oracle Meta)", "138": "SMOM-DBIS-138 (DeFi Oracle Meta)",
"1111": "Wemix", "1111": "Wemix",
"42793": "Etherlink",
"8453": "Base", "8453": "Base",
"42161": "Arbitrum One", "42161": "Arbitrum One",
"42220": "Celo", "42220": "Celo",
@@ -1376,6 +1377,41 @@
"notes": "Wemix USDC https://scan.wemix.com/address/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D (scan shows USD Coin; verify official Circle/bridged)" "notes": "Wemix USDC https://scan.wemix.com/address/0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D (scan shows USD Coin; verify official Circle/bridged)"
} }
] ]
},
{
"fromChainId": 138,
"toChainId": 42793,
"notes": "Chain 138 ↔ Etherlink (42793). Custom relay or CCIP when supported; verify WETH/LINK addresses on Etherlink.",
"tokens": [
{
"key": "WETH9",
"name": "Wrapped Ether",
"addressFrom": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"addressTo": "0x0000000000000000000000000000000000000000",
"notes": "Set addressTo when Etherlink WETH canonical known"
},
{
"key": "Compliant_USDT",
"name": "cUSDT",
"addressFrom": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"addressTo": "0x0000000000000000000000000000000000000000",
"notes": "Set when bridge/relay supports 138→42793"
},
{
"key": "Compliant_USDC",
"name": "cUSDC",
"addressFrom": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"addressTo": "0x0000000000000000000000000000000000000000",
"notes": "Set when bridge/relay supports 138→42793"
},
{
"key": "LINK",
"name": "Chainlink",
"addressFrom": "0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03",
"addressTo": "0x0000000000000000000000000000000000000000",
"notes": "Set when LINK relay supports 138→42793"
}
]
} }
] ]
} }

View File

@@ -21,7 +21,7 @@ This runs in order: (0) make RPC VMIDs 2101, 25002505 writable (e2fsck); (1)
| dbis-admin.d-bis.org, secure.d-bis.org | 192.168.11.130:80 | 10130 | r630-01 (192.168.11.11) | nginx | | dbis-admin.d-bis.org, secure.d-bis.org | 192.168.11.130:80 | 10130 | r630-01 (192.168.11.11) | nginx |
| dbis-api.d-bis.org, dbis-api-2.d-bis.org | 192.168.11.155:3000, .156:3000 | 10150, 10151 | r630-01 | node | | dbis-api.d-bis.org, dbis-api-2.d-bis.org | 192.168.11.155:3000, .156:3000 | 10150, 10151 | r630-01 | node |
| rpc-http-prv.d-bis.org, rpc-ws-prv.d-bis.org | 192.168.11.211:8545/8546 | 2101 | r630-01 | besu | | rpc-http-prv.d-bis.org, rpc-ws-prv.d-bis.org | 192.168.11.211:8545/8546 | 2101 | r630-01 | besu |
| www.mim4u.org | 192.168.11.37:80 | 7810 | r630-02 (192.168.11.12) | nginx | | mim4u.org, www.mim4u.org, secure.mim4u.org, training.mim4u.org | 192.168.11.37:80 | 7810 | r630-02 (192.168.11.12) | nginx (or python stub in fix-all-502s-comprehensive.sh) |
| rpc-alltra*.d-bis.org (3) | 192.168.11.172/173/174:8545 | 2500, 2501, 2502 | r630-01 | besu | | rpc-alltra*.d-bis.org (3) | 192.168.11.172/173/174:8545 | 2500, 2501, 2502 | r630-01 | besu |
| rpc-hybx*.d-bis.org (3) | 192.168.11.246/247/248:8545 | 2503, 2504, 2505 | r630-01 or ml110 | besu | | rpc-hybx*.d-bis.org (3) | 192.168.11.246/247/248:8545 | 2503, 2504, 2505 | r630-01 or ml110 | besu |
| cacti-1 (if proxied) | 192.168.11.80:80 | 5200 | r630-02 | nginx/apache2 | | cacti-1 (if proxied) | 192.168.11.80:80 | 5200 | r630-02 | nginx/apache2 |
@@ -79,6 +79,7 @@ The comprehensive fix script will:
| rpc-http-prv | Container 2101 stopped or Besu not listening on 8545 | `pct start 2101`; inside CT: `systemctl start besu` (allow 3060s) | | rpc-http-prv | Container 2101 stopped or Besu not listening on 8545 | `pct start 2101`; inside CT: `systemctl start besu` (allow 3060s) |
| rpc-alltra*, rpc-hybx* | Containers 25002505 stopped or Besu not running | Same: `pct start <vmid>`; inside CT: `systemctl start besu` | | rpc-alltra*, rpc-hybx* | Containers 25002505 stopped or Besu not running | Same: `pct start <vmid>`; inside CT: `systemctl start besu` |
| cacti-alltra, cacti-hybx, cacti-1 | 5200/5201/5202 stopped or web server not running | On r630-02: `pct start 5200/5201/5202`; inside CT: `systemctl start nginx` or `apache2` | | cacti-alltra, cacti-hybx, cacti-1 | 5200/5201/5202 stopped or web server not running | On r630-02: `pct start 5200/5201/5202`; inside CT: `systemctl start nginx` or `apache2` |
| mim4u.org, www/secure/training.mim4u.org | Container 7810 stopped or nothing on port 80 | On r630-02: `pct start 7810`; inside CT: `systemctl start nginx` or run python stub on 80 (see fix-all-502s-comprehensive.sh) |
### VMID 2400 (ThirdWeb RPC primary, 192.168.11.240) ### VMID 2400 (ThirdWeb RPC primary, 192.168.11.240)

View File

@@ -0,0 +1,253 @@
# All Additional Recommendations — Consolidated Table
**Purpose:** Single reference for every additional recommendation (tasks, fixes, optional work, and improvements) across the repo.
**Sources:** [TODOS_CONSOLIDATED.md](TODOS_CONSOLIDATED.md), [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md](REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md), [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md), [ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md](ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md), [COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md](COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md).
---
## 1. Immediate / blocking (verified remaining)
| # | Recommendation | Description | Command / doc |
|---|----------------|-------------|---------------|
| V2 | Add liquidity (Chain 138 PMM) | Fund deployer with WETH/cUSDT/cUSDC (or mint); then run AddLiquidityPMMPoolsChain138. | [TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER](../11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md), [ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK](../03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md) |
| V3 | RPC 2101 read-only | If host I/O errors: make RPC writable, then health-check. | `./scripts/maintenance/make-rpc-vmids-writable-via-ssh.sh` then `./scripts/maintenance/health-check-rpc-2101.sh` |
| V4 | Wemix / Celo CCIP bridges | Celo done; Wemix needs 0.4 WEMIX. Cronos: set CRONOS_RPC + CCIP_ROUTER_CRONOS, run deploy-bridges. | [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) |
| V5 | LINK relay, E2E 502s, operator run | **E2E 502s** ✅ Fixed 2026-03-06. **Operator run** ✅ Run 2026-03-06. **LINK support** ⏳ Pending — [RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK](../07-ccip/RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md). | `./scripts/run-all-operator-tasks-from-lan.sh` |
| V6 | External (Ledger, Trust, CoinGecko/CMC, on-ramps) | Third-party submissions and outreach. | §5 below; [ADD_CHAIN138_TO_LEDGER_LIVE](../04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md), etc. |
---
## 2. Pre-deploy / first (before any Chain 138 deploy)
| # | Recommendation | Description | Command / doc |
|---|----------------|-------------|---------------|
| 0a | Deployer gas check | Use Core RPC only for balance/gas. | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` |
| 0a2 | Deployer gas auto-route | Swap/bridge deployer ERC-20 to native gas where below threshold (138, Protocolink chains, Wemix). | `./scripts/deployment/deployer-gas-auto-route.sh`; [DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK](../03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md) |
| 0b | Core RPC = IP:port | In smom-dbis-138/.env use `RPC_URL_138=http://192.168.11.211:8545`, not FQDN. | [RPC_ENDPOINTS_MASTER](../04-configuration/RPC_ENDPOINTS_MASTER.md) |
| 0c | Test all contracts | Run full or unit-only test suite before deploy. | `./scripts/deployment/test-all-contracts-before-deploy.sh` (optionally `--no-match "Fork|Mainnet|Integration|e2e"`) |
| 0 | Preflight | RPC, dotenv, nonce, optional cost. | `./scripts/deployment/preflight-chain138-deploy.sh [--cost]` |
---
## 3. High priority
| # | Recommendation | Description | Command / doc |
|---|----------------|-------------|---------------|
| 1 | Wemix token addresses | Confirm WETH, USDT, USDC on scan.wemix.com; update token-mapping and WEMIX_TOKEN_VERIFICATION.md. | `./scripts/validation/validate-config-files.sh` |
| 2 | Gnosis, Celo, Wemix CCIP bridges | Per chain: RPC, CCIP Router, LINK, WETH9/WETH10; DeployWETHBridges; add 138↔chain; fund LINK. | [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) |
---
## 4. Medium priority
| # | Recommendation | Description | Command / doc |
|---|----------------|-------------|---------------|
| 3 | LINK support on Mainnet relay | Option A or B per runbook; implement, deploy, fund LINK; set relaySupported for LINK in token-mapping. | [RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK](../07-ccip/RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md) |
| 4 | Run "from anywhere" checks | Run completable tasks periodically. | `./scripts/run-completable-tasks-from-anywhere.sh` |
| 5 | Placeholders (code) | Canonical addresses, AlltraAdapter setBridgeFee, smart accounts kit, quote FABRIC_CHAIN_ID, .bak — doc in REQUIRED_FIXES_UPDATES_GAPS. | [REQUIRED_FIXES_UPDATES_GAPS](../REQUIRED_FIXES_UPDATES_GAPS.md) |
| 6 | API keys | Sign up per reports/API_KEYS_REQUIRED.md; add to .env. | reports/API_KEYS_REQUIRED.md |
---
## 5. When you have LAN / Proxmox + secrets
| # | Recommendation | Description | Command / doc |
|---|----------------|-------------|---------------|
| 7 | Blockscout verification | Verify contracts on Blockscout after deploy. | `./scripts/run-all-operator-tasks-from-lan.sh` or `./scripts/verify/run-contract-verification-with-proxy.sh` |
| 8 | Fix E2E 502s | ✅ Fixed 2026-03-06 (MIM4U 7810 + address-all-remaining-502s + NPM; E2E 37/37). Re-run if 502s recur. | `./scripts/maintenance/address-all-remaining-502s.sh [--e2e]` |
| 9 | Operator tasks script | Backup, verify, optional deploy/create-vms. | `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms]` |
| 10 | sendCrossChain (real) | When PRIVATE_KEY and LINK ready. | `bash scripts/bridge/run-send-cross-chain.sh 0.01 [recipient]` |
| 11 | NPMplus backup | Requires NPM_PASSWORD in .env. | `bash scripts/verify/backup-npmplus.sh` |
| 12 | Mint tokens to deployer | For liquidity/bridges per TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER. | [TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER](../11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md) |
| — | NPMplus API unreachable | Restart Docker in NPMplus LXCs (10233, 10235). | `./scripts/maintenance/fix-npmplus-services-via-proxmox-ssh.sh` |
| — | E2E from LAN (no DNS) | Use /etc/hosts + system resolver for E2E. | [E2E_DNS_FROM_LAN_RUNBOOK](../04-configuration/E2E_DNS_FROM_LAN_RUNBOOK.md); `E2E_USE_SYSTEM_RESOLVER=1 ./scripts/verify/verify-end-to-end-routing.sh` |
---
## 6. Token deployments (remaining)
| # | Recommendation | Description | Ref |
|---|----------------|-------------|-----|
| T2 | Optional cCADT | Uncomment in DeployCompliantFiatTokens.s.sol when needed. | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §1.2 |
| T3 | cAUSDT | Deploy or env when Alltra compliant USD defined. | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §1.3 |
| T4 | ACADT (651940) | When Alltra adds CAD token. | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §2 |
| T5 | cW* on public chains | Deploy/bridge cW* per chain; PMM edge pools per pool-matrix. | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §3 |
| T6 | D-WIN W on 138/651940 | Optional; extend DeployISO4217WSystem. | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §4 |
| T7 | Vault ac*/vdc*/sdc* | After new base tokens; extend DeployAcVdcSdcVaults. | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §5 |
---
## 7. Low priority / planned
| # | Recommendation | Description | Ref |
|---|----------------|-------------|-----|
| 12 | AddressMapper on other chains | Deploy via DeployAddressMapperOtherChain; set mapper in smart-contracts-master. | OPTIONAL_DEPLOYMENTS_START_HERE §A |
| 13 | DODO PMM liquidity on 138 | Pools deployed; add liquidity and document. | ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK, LIQUIDITY_POOLS_MASTER_MAP |
| 14 | Mainnet trustless stack | Lockbox138 + InboxETH, BondManager, LiquidityPoolETH; fund liquidity. | OPTIONAL_DEPLOYMENTS_START_HERE §C |
---
## 8. External / third-party
| # | Recommendation | Description | Doc |
|---|----------------|-------------|-----|
| 15 | Ledger | Tally form submitted; await response; sign and integrate. | [ADD_CHAIN138_TO_LEDGER_LIVE](../04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md) |
| 16 | Trust Wallet | PR to trustwallet/wallet-core with Chain 138. | [ADD_CHAIN138_TO_TRUST_WALLET](../04-configuration/ADD_CHAIN138_TO_TRUST_WALLET.md) |
| 17 | Consensys | Outreach for Swaps/Bridge. | [CONSENSYS_OUTREACH_PACKAGE](../../metamask-integration/docs/CONSENSYS_OUTREACH_PACKAGE.md) |
| 18 | CoinGecko/CMC | Submit chain and tokens. | [COINGECKO_SUBMISSION_GUIDE](../04-configuration/coingecko/CMC_COINGECKO_SUBMISSION_RUNBOOK.md) |
| — | Chainlist / on-ramps | PR-ready and off-ramp docs. | [pr-ready/README](../04-configuration/pr-ready/README.md), [REPOSITORIES_AND_PRS_CHAIN138](REPOSITORIES_AND_PRS_CHAIN138.md) |
---
## 9. Operator checklist (R1R24)
| # | Recommendation | When |
|---|----------------|------|
| R1 | Verify every deployed contract on Blockscout | After each deployment |
| R2 | Keep CONTRACT_ADDRESSES_REFERENCE and ADDRESS_MATRIX_AND_STATUS updated | When new contracts deployed/deprecated |
| R3 | Run check-contracts-on-chain-138.sh; fix MISSING/EMPTY | Periodically or after deploy |
| R4 | Use canonical CCIPWETH9Bridge (0x971c...); do not use deprecated | Always |
| R5 | Never commit .env or private keys; rotate if exposed | Always |
| R6R7 | API keys in .env; restrict deployer and RPC admin | Access review |
| R8R9 | Set RPC_URL_138; use GAS_PRICE on Chain 138 | Before deploy / every forge script |
| R10R11 | Phased core deploy order; manage nonce if tx stuck | Deploy order / troubleshooting |
| R12R15 | Keep runbooks in sync; document addresses; consider single deploy→verify script | After script/URL changes; per-chain |
| R16R19 | Env per environment; monitor bridge/oracle; Blockscout up; run forge test before deploy | Config / health / pre-deploy |
| R20R24 | NatSpec on public functions; The Order NPMplus; document blocks #2#6; progress/dry-run/validation; token-mapping single source | Code quality; go-live; scripts; tokens |
**Full list:** [RECOMMENDATIONS_OPERATOR_CHECKLIST.md](RECOMMENDATIONS_OPERATOR_CHECKLIST.md).
---
## 10. Proxmox / validated set (best practices)
| # | Recommendation | Priority | Notes |
|---|----------------|----------|--------|
| 111 | .env permissions, validator keys, SSH key-only, firewall 8006, VLANs, metrics, health/alerting, backup, runbooks | High | [10-best-practices/RECOMMENDATIONS_AND_SUGGESTIONS](../10-best-practices/RECOMMENDATIONS_AND_SUGGESTIONS.md) |
| 1220 | Retry/timeout, structured logging, log collection, resource/network/DB tuning, CI/CD, CLI | Medium | Same |
| 2135 | Auto-scale, progress indicators, --dry-run, config validation, FAQ, script comments | Low / quick wins | Same |
---
## 11. Code quality & scripts
| # | Recommendation | Priority |
|---|----------------|----------|
| 3638 | Shebang, set -euo pipefail + traps, script header template | High/Medium |
| 3943 | Linting (shellcheck, shfmt), script consolidation, shared lib, performance, auto-docs | Medium/Low |
---
## 12. Documentation
| # | Recommendation | Priority |
|---|----------------|----------|
| 4447 | Consolidation, accuracy review, inline/API docs | Medium |
| 6874 | Quick reference cards, decision trees, config templates, examples, glossary, diagrams, TOC | High/Medium/Low |
---
## 13. Security
| # | Recommendation | Priority |
|---|----------------|----------|
| 4852 | Secret audit, input validation, security scanning, RBAC, config validation | High/Medium |
---
## 14. Configuration, testing, monitoring & DX
| # | Recommendation | Priority |
|---|----------------|----------|
| 5367 | Config templates, env standardization, test coverage, CI tests, logging, metrics, health, dev setup, dependency/process docs, backup review | Medium/High |
---
## 15. Infrastructure & deployment phases
| # | Recommendation | Notes |
|---|----------------|------|
| 7578 | VLAN, observability (Prometheus/Grafana/Loki), CCIP fleet, sovereign tenants | Phase 14 |
| 7981 | Besu RPC containers, Hyperledger containers, Blockscout container | High |
---
## 16. Codebase & placeholders
| # | Recommendation | Priority |
|---|----------------|----------|
| 8291 | Security audits (VLT, ISO, BRG), CCIP AMB, dbis_core TS, IRU, canonical env, AlltraAdapter, smart accounts, .bak | Critical/High/Medium/Low |
---
## 17. MetaMask & explorer
| # | Recommendation | Effort |
|---|----------------|--------|
| 92105 | Token-aggregation deploy, API keys, Snap features, CoinGecko, Paymaster, Explorer Wallet link/sync/selector/dark mode, monitoring | 15 min 12 h |
---
## 18. Tezos / Etherlink / CCIP
| # | Recommendation | Category |
|---|----------------|----------|
| 106121 | Etherlink/Jumper/LiFi verification; InitializeRegistry, adapters, relay, DON, metrics, tests | External / contracts / off-chain |
---
## 19. Besu / blockchain
| # | Recommendation | Notes |
|---|----------------|------|
| 122126 | RPC config location, tx pool clearing, tuning, automated monitoring, logging | Phase 23 |
---
## 20. Maintenance (ongoing)
| # | Task | Frequency |
|---|------|-----------|
| 135139 | Explorer sync, RPC health, config API uptime, explorer logs, token list | Daily / weekly / as needed |
Cron: `schedule-daily-weekly-cron.sh --install`; NPMplus: `schedule-npmplus-backup-cron.sh --install`.
---
## 21. E2E flow waves (full parallel)
| Wave | Tasks | Run |
|------|--------|-----|
| E0 | RPC writable, TransactionMirror, deployer funded, Core RPC | Operator |
| E1 | PMM pools create, register, add liquidity (138) | run-pmm-full-parity Phase 1 |
| E2 | CCIP config and fund bridges | complete-config, fund-ccip-bridges-with-link |
| E3 | Token-aggregation env, bridge routes, token mapping, quote API | Code/Op |
| E4 | Blockscout verify, E2E routing, explorer E2E, token-aggregation health | Op/LAN |
| E5 | cUSDT/cUSDC and PMM on L2s; token-aggregation new chains | run-pmm-full-parity Phase 2 |
| E6 | Bridge UI, test bridge, destination DEX, quote UI, E2E test | Code/Op |
| E7 | Update PMM_DEX_ROUTING_STATUS; runbooks | Doc |
Script: `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run]`. Ref: [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md).
---
## 22. Operator quick reference (run before deploy)
| Step | Command |
|------|--------|
| 1 | `./scripts/deployment/preflight-chain138-deploy.sh [--cost]` |
| 2 | `./scripts/deployment/test-all-contracts-before-deploy.sh` (or `--no-match "Fork|Mainnet|Integration|e2e"`) |
| 3 | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` |
| 4 | If stuck nonce: `./scripts/clear-all-transaction-pools.sh` then wait 60s |
| 5 | If RPC read-only: `./scripts/maintenance/make-rpc-vmids-writable-via-ssh.sh` then `./scripts/maintenance/health-check-rpc-2101.sh` |
---
## References
- **Single task list:** [TODOS_CONSOLIDATED.md](TODOS_CONSOLIDATED.md)
- **Copy-paste commands:** [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md)
- **Required fixes & gaps:** [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md](REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md)
- **139+ recommendations (full):** [ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md](ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md)
- **Execution plan:** [COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md](COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md)
- **Remaining deployments:** [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md)

View File

@@ -0,0 +1,335 @@
# All Tasks to Complete (Including Optional)
**Last Updated:** 2026-03-06
**Purpose:** Single list of every task (required and optional) from TODOS_CONSOLIDATED, REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST, ADDITIONAL_RECOMMENDATIONS_TABLE, REMAINING_DEPLOYMENTS, and E2E flow docs.
**Quick run (from anywhere):** `./scripts/run-completable-tasks-from-anywhere.sh`
**Operator (LAN):** `./scripts/run-all-operator-tasks-from-lan.sh [--deploy]`
---
## 1. Verified remaining (blocking / high impact)
| # | Task | Status | Notes |
|---|------|--------|--------|
| V1 | Token-aggregation build | ✅ Done | Re-verified 2026-03-06. |
| V2 | **Add liquidity (Chain 138 PMM)** | ⏳ Blocked | Deployer WETH/cUSDT/cUSDC = 0. Mint/fund per TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER, then AddLiquidityPMMPoolsChain138. |
| V3 | RPC 2101 read-only | ⚠️ If needed | Run make-rpc-vmids-writable + health-check only when host I/O errors occur. |
| V4 | Wemix / Gnosis / Celo / Cronos CCIP | 🔄 Partial | Celo + Gnosis done. Wemix tabled (need 0.4 WEMIX). Cronos: set CRONOS_RPC, run deploy-bridges cronos. |
| V5 | LINK relay, E2E 502s, operator run | 🔄 Partial | E2E 502s ✅; Operator run ✅. LINK support runbook ⏳ Pending. |
| V6 | External (Ledger, Trust, CoinGecko/CMC, on-ramps) | ⏳ Pending | Third-party submissions. |
---
## 2. Pre-deploy (before any Chain 138 deploy)
| # | Task | Command / doc |
|---|------|----------------|
| 0a | Check deployer gas (Chain 138) | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` |
| 0a2 | Deployer gas auto-route (optional) | `./scripts/deployment/deployer-gas-auto-route.sh`; acquire CRO/WEMIX: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` |
| 0b | Core RPC = IP:port in smom-dbis-138/.env | `RPC_URL_138=http://192.168.11.211:8545` (not FQDN). |
| 0c | Test all contracts before deploy | `./scripts/deployment/test-all-contracts-before-deploy.sh` (or `--no-match "Fork|Mainnet|Integration|e2e"`) |
| 0 | Preflight (RPC, dotenv, nonce) | `./scripts/deployment/preflight-chain138-deploy.sh [--cost]` |
---
## 3. High priority
| # | Task | Ref |
|---|------|-----|
| 1 | Wemix (1111) token addresses: confirm WETH, USDT, USDC on scan.wemix.com; update token-mapping and WEMIX_TOKEN_VERIFICATION.md | validate-config-files.sh |
| 2 | Gnosis, Cronos, Celo, Wemix CCIP bridges: per chain set RPC, CCIP Router, LINK, WETH9/WETH10; DeployWETHBridges; add 138↔chain; fund LINK | CONFIG_READY_CHAINS_COMPLETION_RUNBOOK |
---
## 4. Medium priority
| # | Task | Ref |
|---|------|-----|
| 3 | LINK support on Mainnet relay (Option A or B); implement, deploy, fund LINK; set relaySupported for LINK | RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK |
| 4 | Run "from anywhere" checks periodically | `./scripts/run-completable-tasks-from-anywhere.sh` |
| 5 | Placeholders (code): canonical addresses, AlltraAdapter setBridgeFee, smart accounts kit, quote FABRIC_CHAIN_ID, .bak | REQUIRED_FIXES_UPDATES_GAPS |
| 6 | API keys: sign up per reports/API_KEYS_REQUIRED.md; add to .env | reports/API_KEYS_REQUIRED.md |
---
## 5. When you have LAN / Proxmox + secrets
| # | Task | Command / doc |
|---|------|----------------|
| 7 | Blockscout verification | `./scripts/run-all-operator-tasks-from-lan.sh` or `./scripts/verify/run-contract-verification-with-proxy.sh` |
| 8 | Fix E2E 502s (if recur) | `./scripts/maintenance/address-all-remaining-502s.sh [--e2e]` |
| 9 | Operator tasks script (backup, verify, deploy) | `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms]` |
| 10 | sendCrossChain (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` (PRIVATE_KEY + LINK ready) |
| 11 | NPMplus backup | `bash scripts/verify/backup-npmplus.sh` (NPM_PASSWORD in .env) |
| 12 | Mint tokens to deployer for liquidity/bridges | TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER |
| — | NPMplus API unreachable | `./scripts/maintenance/fix-npmplus-services-via-proxmox-ssh.sh` |
| — | E2E from LAN (no DNS) | E2E_DNS_FROM_LAN_RUNBOOK; `E2E_USE_SYSTEM_RESOLVER=1 ./scripts/verify/verify-end-to-end-routing.sh` |
---
## 6. Phase A — Hub liquidity (Chain 138)
| Step | Task | Ref |
|------|------|-----|
| A.1 | Mint cUSDT and cUSDC to deployer | `cd smom-dbis-138 && ./scripts/mint-for-liquidity.sh` |
| A.2 | Add liquidity to PMM pools (cUSDT/cUSDC first) | ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK; `mint-for-liquidity.sh --add-liquidity` |
| A.3 | **(Optional)** Mint other c* (cEURC, cEURT, cGBP*, etc.) for future pools | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §1 |
---
## 7. Phase B — Bridge coverage (all 13 chains)
| Step | Task | Ref |
|------|------|-----|
| B.1 | Celo (42220): CCIP bridges deployed ✅; ensure destinations + LINK funded | complete-config-ready-chains.sh |
| B.2a | **Cronos (25):** Fund deployer ~15 CRO; set CRONOS_RPC, CCIP_ROUTER_CRONOS; deploy bridges; complete-config | acquire-cro-and-wemix-gas.sh; deploy-bridges-config-ready-chains.sh cronos |
| B.2b | **Wemix (1111):** Fund deployer ~0.4 WEMIX (manual/aggregator); deploy bridges; complete-config | WEMIX_ACQUISITION_TABLED; deploy-bridges-config-ready-chains.sh wemix |
| B.3 | Fund all CCIP bridges with LINK | `./scripts/deployment/fund-ccip-bridges-with-link.sh` |
| B.4 | **(Optional)** LINK support on Mainnet relay | RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK |
---
## 8. Phase C — Public-chain cW* and edge pools
| Step | Task | Ref |
|------|------|-----|
| C.1 | Deploy or bridge cW* tokens per chain (1, 56, 137, 10, 42161, 8453, 43114, 100, 25, 42220, 1111) | PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK |
| C.2 | Create and fund PMM edge pools (cW*/USDC, cW*/USDT) per pool-matrix | PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK |
| C.3 | **(Optional)** Stabilization bot / peg bands for cW* | cross-chain-pmm-lps |
---
## 9. Phase D — Optional (extended coverage)
| Step | Task | Ref |
|------|------|-----|
| D.1 | XAU token + XAU-anchored pools (138) | PHASE_D_OPTIONAL_CHECKLIST |
| D.2 | Vault ac* / vdc* / sdc* for new base tokens | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §5 |
| D.3 | ALL Mainnet: ACADT/ACADC when Alltra adds CAD; D-WIN W on 138/651940 | PHASE_D_OPTIONAL_CHECKLIST |
| D.4 | Mainnet trustless stack: LiquidityPoolETH, InboxETH, BondManager | OPTIONAL_DEPLOYMENTS_START_HERE §C |
---
## 10. Token deployments (remaining)
| # | Task | Ref |
|---|------|-----|
| T1 | DeployCompliantFiatTokens (cEURC, cEURT, cGBP*, etc.) | ✅ Done 2026-02-27 |
| T2 | **(Optional)** cCADT: uncomment in DeployCompliantFiatTokens.s.sol | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §1.2 |
| T3 | cAUSDT: deploy or env when Alltra compliant USD defined | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §1.3 |
| T4 | ACADT (651940) when Alltra adds CAD token | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §2 |
| T5 | cW* on public chains + PMM edge pools per pool-matrix | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §3 |
| T6 | **(Optional)** D-WIN W on 138/651940 | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §4 |
| T7 | Vault ac*/vdc*/sdc* for new base tokens (after DeployCompliantFiatTokens) | TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §5 |
---
## 11. Low priority / planned
| # | Task | Ref |
|---|------|-----|
| 12 | AddressMapper on other chains (DeployAddressMapperOtherChain; set mapper in smart-contracts-master) | OPTIONAL_DEPLOYMENTS_START_HERE §A |
| 13 | DODO PMM liquidity on 138: add liquidity and document (pools already deployed) | ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK |
| 14 | Mainnet trustless stack: Lockbox138 + InboxETH, BondManager, LiquidityPoolETH; fund liquidity | OPTIONAL_DEPLOYMENTS_START_HERE §C |
---
## 12. External / third-party
| # | Task | Doc |
|---|------|-----|
| 15 | Ledger: await Tally response; sign agreement and integrate | ADD_CHAIN138_TO_LEDGER_LIVE |
| 16 | Trust Wallet: open PR to trustwallet/wallet-core with Chain 138 | ADD_CHAIN138_TO_TRUST_WALLET |
| 17 | Consensys: outreach for Swaps/Bridge | CONSENSYS_OUTREACH_PACKAGE |
| 18 | CoinGecko/CMC: submit Chain 138 and tokens | CMC_COINGECKO_SUBMISSION_RUNBOOK |
| — | Chainlist / on-ramps | pr-ready/README; REPOSITORIES_AND_PRS_CHAIN138 |
---
## 13. Tezos / Etherlink (when scoped)
| # | Task | Ref |
|---|------|-----|
| 19 | Verify Etherlink (42793) on CCIP; record selector/Router/fee or "custom relay only" | TEZOS_CCIP_REMAINING_ITEMS |
| 20 | Verify Jumper and LiFi for 138, 651940, 42793, Tezos; update support matrix | TEZOS_CCIP_REMAINING_ITEMS |
| 21 | InitializeRegistry, DeployAllAdapters; Etherlink receiver; Tezos L1 and Etherlink relay services | TEZOS_CCIP_REMAINING_ITEMS |
---
## 14. Deployment / infrastructure phases (optional)
| Phase | Tasks | Status |
|-------|--------|--------|
| Phase 1 — VLAN | UDM Pro VLAN; VLAN-aware bridge; migrate services to VLANs | ⏳ Pending |
| Phase 2 — Observability | Monitoring stack; Grafana via Cloudflare Access; alerts | ⏳ Pending |
| Phase 3 — CCIP fleet | CCIP Ops/Admin; commit/execute/RMN nodes; NAT pools | ⏳ Pending |
| Phase 4 — Sovereign tenants | Sovereign VLANs; tenant isolation; access control | ⏳ Pending |
---
## 15. Security & codebase
| # | Task | Ref |
|---|------|-----|
| 22 | Security audits: smom VLT-024, ISO-024; bridge BRG-VLT, BRG-ISO | TODO_TASK_LIST_MASTER §5 |
| 23 | dbis_core: ~1186 TS errors (deferred) | TODO_TASK_LIST_MASTER §8 |
| 24 | **(Optional)** Paymaster when sources ready | SMART_ACCOUNTS_DEPLOYMENT_NOTE |
---
## 16. E2E flow waves (TASKS_TO_INCREASE_ALL_E2E_FLOWS)
| Wave | Tasks | Run |
|------|--------|-----|
| E0 | X1, X6, X7, A1 — RPC writable, TransactionMirror, deployer funded, Core RPC | Op |
| E1 | A2, A3, A4 — PMM pools create, register, add liquidity (138) | run-pmm-full-parity Phase 1 |
| E2 | B1, B2 — CCIP config and fund bridges | complete-config-ready-chains.sh; fund-ccip-bridges-with-link.sh |
| E3 | A5, B4, B5, C3, X8 — token-aggregation env, bridge routes, token mapping, quote API, token list | Code/Op |
| E4 | X2, X3, X4, X5 — Blockscout verify, E2E routing, explorer E2E, token-aggregation health | Op/LAN |
| E5 | X10, X11, X12 — cUSDT/cUSDC and PMM on L2s; token-aggregation new chains | run-pmm-full-parity Phase 2 |
| E6 | B6, B7, C5, C6, C7 — Bridge UI, test bridge, destination DEX, full path quote UI, E2E test | Code/Op |
| E7 | X13, X14 — Update PMM_DEX_ROUTING_STATUS; runbooks | Doc |
Script: `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run]`
---
## 17. Flow A (swap on 138) — individual tasks
| # | Task | Type |
|---|------|------|
| A1 | Core RPC writable and reachable | Op |
| A2 | Verify or create three PMM pools on 138 | Op/Auto |
| A3 | Register pools with DODOPMMProvider | Op |
| A4 | Add liquidity to all three PMM pools | Op |
| A5 | Token-aggregation indexes DODO on 138 | Op/Code |
| A6 | Expose token-aggregation API for dApps/Snap | Op |
| A7 | **(Optional)** Deploy EnhancedSwapRouter on 138 | Op |
| A8 | **(Optional)** N-hop quote/pathfinding in token-aggregation | Code |
---
## 18. Flow B (bridge) — individual tasks
| # | Task | Type |
|---|------|------|
| B1 | CCIP bridges on 138 configured and funded | Op |
| B2 | Bridge destination config (138 ↔ Gnosis/Cronos/Celo/Wemix) | Op |
| B3 | Relay (138→Mainnet) operational if using relay path | Op |
| B4 | Token-aggregation GET /api/v1/bridge/routes returns Chain 138 bridges | Code/Op |
| B5 | Token mapping API for 138↔destination | Code/Op |
| B6 | Frontend: wire Bridge UI to routes + token mapping | Code |
| B7 | Test 138→dest and dest→138 with small amounts | Op |
---
## 19. Flow C (swapbridgeswap) — individual tasks
| # | Task | Type |
|---|------|------|
| C1 | Complete Flow A (liquidity and quote on 138) | — |
| C2 | Complete Flow B (bridge configured and funded) | — |
| C3 | POST /api/bridge/quote returns sourceSwapQuote and destinationSwapQuote | Code/Op |
| C4 | **(Optional)** Deploy SwapBridgeSwapCoordinator on-chain | Op |
| C5 | Destination-chain DEX/aggregator for destinationSwapQuote | Code/Op |
| C6 | Frontend: "Get full path quote" and execute | Code |
| C7 | E2E test: swap 138 → bridge → swap destination | Op/Auto |
---
## 20. Cross-cutting (X1X14)
| # | Task | Type |
|---|------|------|
| X1 | RPC 2101 writable and healthy | Op |
| X2 | On-chain contract verification (Blockscout) | Op |
| X3 | E2E routing (DNS + HTTPS + RPC) | Auto |
| X4 | Explorer E2E (homepage, API, SPA) | Auto |
| X5 | Token-aggregation health and DB | Op |
| X6 | TransactionMirror deployed and funded | Op |
| X7 | Deployer funded (138 and dest chains) | Op |
| X8 | Token list updated and validated | Code/Op |
| X10X14 | L2 pools, bridge UI, runbooks | Op/Code/Doc |
---
## 21. Operator checklist (R1R24)
- R1: Verify every deployed contract on Blockscout after each deployment
- R2: Keep CONTRACT_ADDRESSES_REFERENCE and ADDRESS_MATRIX_AND_STATUS updated
- R3: Run check-contracts-on-chain-138.sh; fix MISSING/EMPTY
- R4: Use canonical CCIPWETH9Bridge; do not use deprecated
- R5: Never commit .env or private keys; rotate if exposed
- R6R7: API keys in .env; restrict deployer and RPC admin
- R8R9: Set RPC_URL_138; use GAS_PRICE on Chain 138
- R10R11: Phased core deploy order; manage nonce if tx stuck
- R12R15: Keep runbooks in sync; document addresses; single deploy→verify script
- R16R19: Env per environment; monitor bridge/oracle; Blockscout up; run forge test before deploy
- R20R24: NatSpec on public functions; NPMplus order; document blocks; progress/dry-run/validation; token-mapping single source
**Full list:** RECOMMENDATIONS_OPERATOR_CHECKLIST.md
---
## 22. Proxmox / code quality / doc (recommendations 191)
- **Proxmox 135:** .env permissions, validator keys, SSH key-only, firewall 8006, VLANs, metrics, backup, runbooks, retry/timeout, logging, CI/CD, progress indicators, config validation, etc.
- **Code 3643:** Shebang, set -euo pipefail, script header, shellcheck, shfmt, shared lib.
- **Doc 4447, 6874:** Consolidation, accuracy, quick reference, decision trees, glossary.
- **Security 4852:** Secret audit, input validation, RBAC.
- **Config/testing 5367:** Config templates, env standardization, test coverage, CI tests, health.
- **Infrastructure 7581:** VLAN, observability, CCIP fleet, sovereign tenants, Besu containers.
- **Codebase 8291:** Security audits, dbis_core TS, canonical env, AlltraAdapter, smart accounts, .bak.
**Ref:** ADDITIONAL_RECOMMENDATIONS_TABLE §1016; 10-best-practices/RECOMMENDATIONS_AND_SUGGESTIONS.
---
## 23. Maintenance (ongoing)
| Task | Frequency |
|------|-----------|
| Monitor explorer sync / RPC health (e.g. VMID 2201) | Daily |
| Check config API uptime | Weekly |
| Review explorer logs | Weekly |
| Update token list | As needed |
| Fix E2E 502s when domains 502 | As needed — address-all-remaining-502s.sh |
Cron: `schedule-daily-weekly-cron.sh --install`; NPMplus: `schedule-npmplus-backup-cron.sh --install`.
---
## 24. Required fixes (if blocking)
| Item | Action |
|------|--------|
| RPC 2101 read-only | make-rpc-vmids-writable-via-ssh.sh then health-check-rpc-2101.sh |
| Stuck transactions / nonce | clear-all-transaction-pools.sh; wait ~60s; use GAS_PRICE_138 if needed |
| Token-aggregation build | ✅ Fixed 2026-03-03 |
---
## 25. Gaps (config / env / ops)
- Core RPC = IP:port in smom-dbis-138/.env
- Deployer gas (138): ≥ ~0.006 ETH (recommended 12 ETH)
- Env: PRIVATE_KEY, RPC_URL_138; for PMM: DODO_PMM_INTEGRATION_ADDRESS, pool addresses
- POOL_MANAGER_ROLE on DODOPMMIntegration
- TRANSACTION_MIRROR_ADDRESS after deploy
- Wemix token addresses; canonical CUSDC/CUSDT in env; CCIPWETH9Bridge canonical only
- Token-aggregation DB: create DB, migrations, DATABASE_URL, restart
- Nginx proxy order (VMID 5000): location /api/v1/ before /api/
**Ref:** REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST §2.
---
## References
- [TODOS_CONSOLIDATED.md](TODOS_CONSOLIDATED.md) — main checklist
- [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) — copy-paste commands
- [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md](REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) — fixes and gaps
- [ADDITIONAL_RECOMMENDATIONS_TABLE.md](ADDITIONAL_RECOMMENDATIONS_TABLE.md) — full recommendations
- [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) — Phases AD
- [TASKS_TO_INCREASE_ALL_E2E_FLOWS.md](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md) — E2E waves and flows A/B/C

View File

@@ -0,0 +1,162 @@
# Dotenv & Markdown Audit — Required Info, Gaps, and Recommendations
**Last Updated:** 2026-03-06
**Purpose:** Single audit of (1) required information in dotenv and markdown files, (2) next steps completed in this run, (3) gaps found, (4) additional recommendations.
**Sources:** DOTENV_FILES_REFERENCE.md, ENV_EXAMPLE_CONTENT.md, REMAINING_ITEMS_DOTENV_AND_ACTIONS.md, OPERATOR_CREDENTIALS_CHECKLIST.md, PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md, NEXT_STEPS_LIST.md, EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md, .env.master.example, smom-dbis-138/env.additions.example.
---
## 1. Required information — dotenv
### 1.1 Repo root `.env` (from .env.master.example / DOTENV_FILES_REFERENCE)
| Variable / group | Required for | Notes |
|------------------|--------------|--------|
| **NPM_*** (NPM_URL, NPM_EMAIL, NPM_PASSWORD) | NPMplus backup, 502 fix, operator scripts | Operator scripts load via load-project-env.sh |
| **PROXMOX_*** | Proxmox API, VM/CT creation | ML110, R630-01, R630-02 hosts |
| **RPC_URL_138** | Chain 138 scripts when run from root | Prefer `http://192.168.11.211:8545` for deploy |
| **CLOUDFLARE_*** | Tunnels, DNS | Optional for many flows |
| **GITEA_TOKEN** | push-to-gitea, gitea-create-orgs-and-repos | When using Gitea automation |
| **COINGECKO_API_KEY**, **ETHERSCAN_API_KEY** | Token aggregation, verification | Optional; improves price/verify |
### 1.2 smom-dbis-138 `.env` (single source for deploy, relay, token-aggregation, frontend)
| Variable / group | Required for | Notes |
|------------------|--------------|--------|
| **PRIVATE_KEY** | Deploy, bridge send, forge script | 64-char hex; same wallet holds LINK for CCIP fees |
| **RPC_URL_138** | Deploy, verify, on-chain checks | Use IP:port for deploy: `http://192.168.11.211:8545` |
| **ETH_MAINNET_RPC_URL** / **ETHEREUM_MAINNET_RPC** | Mainnet verify, CCIP, relay | Infura/Alchemy |
| **CCIPWETH9_BRIDGE_CHAIN138**, **CCIPWETH10_BRIDGE_CHAIN138** | Bridge scripts, token-aggregation, routing | Canonical: WETH9 `0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5`; WETH10 see §3 gap |
| **CHAIN_138_DODO_PMM_INTEGRATION** | Token-aggregation indexer, quotes | `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` |
| **CUSDT_ADDRESS_138**, **CUSDC_ADDRESS_138** | Scripts, token-aggregation | Canonical in EXPLORER_TOKEN_LIST_CROSSCHECK §5 |
| **DATABASE_URL** | Token-aggregation DB, migrations | When using PostgreSQL (e.g. VMID 5000) |
| **CRONOS_RPC**, **CELO_RPC**, **WEMIX_RPC**, **GNOSIS_RPC** | complete-config-ready-chains, deployer-gas | Celo: CELO_RPC; Wemix: WEMIX_RPC; etc. |
| **CCIPWETH9_BRIDGE_CELO**, **CCIPWETH10_BRIDGE_CELO**, etc. | complete-config-ready-chains (inbound) | Set after deploying bridges on each chain |
| **BRIDGE_REGISTRY_ADDRESS** | QuoteService, POST /api/bridge/quote | Deploy BridgeRegistry then set |
| **LINK_TOKEN** / **CCIP_FEE_TOKEN** | CCIP fees | Deployer must hold LINK and approve bridge |
### 1.3 Markdown docs that specify required env
| Doc | Key requirement |
|-----|------------------|
| OPERATOR_CREDENTIALS_CHECKLIST | PRIVATE_KEY, RPC_URL_138, NPM_PASSWORD, LAN; per-task table |
| REMAINING_ITEMS_DOTENV_AND_ACTIONS | GITEA_TOKEN; PRIVATE_KEY + RPC + CCIP/LINK in smom-dbis-138/.env |
| CONFIG_READY_CHAINS_COMPLETION_RUNBOOK | CCIPWETH9/10 per chain; CHAIN138_SELECTOR; PRIVATE_KEY |
| DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK | deployer-gas-routes.json; Protocolink/manual per chain |
| ENV_EXAMPLE_CONTENT | Full list RPCs, API keys, C* addresses, bridge addresses |
---
## 2. Required information — markdown (next steps, checklists)
### 2.1 Next-step docs and their “required info”
| Doc | Required info / gates |
|-----|------------------------|
| **NEXT_STEPS_LIST** | B.1/B.2: CRO, WEMIX; B.3: LINK/gas; A2: CHAIN_138_DODO_PMM_INTEGRATION; C3: BRIDGE_REGISTRY_ADDRESS |
| **EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY** | Prereqs 1.11.4; Phase AC; SBS.1: BRIDGE_REGISTRY_ADDRESS; Phase B: per-chain RPC + gas |
| **TODOS_CONSOLIDATED** | 0a/0b/0c: RPC_URL_138, PRIVATE_KEY; V4: Wemix/Cronos/Celo bridge env; V5: LINK |
| **OPERATOR_READY_CHECKLIST** | NPM_PASSWORD (backup); RPC_URL_138 (verify); PRIVATE_KEY (deploy); per-chain RPC for config-ready |
| **STILL_NOT_DONE_EXECUTION_CHECKLIST** | Same as above; external/third-party items (Ledger, CMC, etc.) |
### 2.2 Docs that reference .env but do not list every variable
- MASTER_INDEX, ADDITIONAL_PATHS_AND_EXTENSIONS, PHASE_C runbook, FUNDING_AND_DEPLOYMENT_CHECKLIST — refer to DOTENV_FILES_REFERENCE or env.additions.example for full lists.
---
## 3. Run completed (2026-03-06)
| Task | Result |
|------|--------|
| **validate-config-files.sh** | ✅ Passed |
| **run-completable-tasks-from-anywhere.sh** | ✅ Passed (config, on-chain 59/59, validation --skip-genesis, reconcile output printed) |
| **check-pmm-pool-balances-chain138.sh** | ✅ Pool 1: 2M cUSDT / 2M cUSDC; Pools 23 empty (expected) |
| **deployer-gas-auto-route.sh --dry-run** | ✅ Ran; 6 chains need gas (1, 56, 10, 42161, 8453, 25); Celo/Wemix/651940/42793 “no RPC configured” if RPC not in env |
---
## 4. Gaps found
### 4.1 Address / config consistency
| Gap | Location | Recommendation |
|-----|----------|----------------|
| **CCIPWETH10 on Chain 138** | CONTRACT_ADDRESSES_REFERENCE.md: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`. Reconcile script / some code may output `0xF5a87528cEb72312979DB0C51509489caF940721`. routing-registry.json and cross-chain-bridges use `0xe0E932...`. | Verify on Blockscout which contract is the active CCIP WETH10 bridge; align reconcile script and env.additions.example to that address. |
| **CCIPWETH9 on Chain 138** | Docs mention both `0x971cD9...` and `0x9cba0D04...`. On-chain check and routing-registry use `0x9cba0D04...`. | Treat `0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5` as canonical for “working” WETH9 bridge; document the other in CONTRACT_ADDRESSES_REFERENCE as alternate/deploy if applicable. |
### 4.2 Missing or placeholder env
| Gap | Recommendation |
|-----|----------------|
| **Inbound routing-registry** | Inbound routes (dest→138) use bridge address `0x0` with a note. Populate from .env per chain (e.g. MAINNET_CCIP_WETH9_BRIDGE) when available, or document in DEPLOYMENT_DATA_SOURCES_INDEX. |
| **BRIDGE_REGISTRY_ADDRESS** | Not set; SBS and QuoteService require it. Deploy BridgeRegistry (script/bridge/interop/DeployBridgeRegistry or deploy-bridge-contracts.sh) and set in smom-dbis-138/.env. |
| **Celo/Wemix/651940/42793 RPC** | deployer-gas-auto-route reports “no RPC configured” when CELO_RPC, WEMIX_RPC, etc. are unset. Add to smom-dbis-138/.env or deployer-gas script env when using those chains. |
### 4.3 Documentation
| Gap | Recommendation |
|-----|----------------|
| **REMAINING_ITEMS_DOTENV_AND_ACTIONS** | Dated 2026-02-08; references archived CONTINUE_AND_COMPLETE. Update “Run order” to point to EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY and NEXT_STEPS_LIST. |
| **PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST** | Dated 2026-02-05. Refresh “Required additions — operator / environment” to align with OPERATOR_READY_CHECKLIST and NEXT_STEPS_LIST (e.g. B.1/B.2/B.3, C3). |
| **Single “required secrets” list** | OPERATOR_CREDENTIALS_CHECKLIST, REMAINING_ITEMS_DOTENV_AND_ACTIONS, and DOTENV_FILES_REFERENCE overlap. Add a single “Required secrets for operator” section in OPERATOR_CREDENTIALS_CHECKLIST that links to DOTENV_FILES_REFERENCE for full lists. |
### 4.4 Blocked / external
| Gap | Notes |
|-----|--------|
| **B.1 Cronos** | Needs ~15 CRO; use acquire-cro-and-wemix-gas.sh for aggregator links. |
| **B.2 Wemix** | Needs ~0.4 WEMIX; see WEMIX_ACQUISITION_TABLED. |
| **B.3 Fund CCIP LINK** | fund-ccip-bridges-with-link.sh; blocked by LINK/gas per lane. |
| **SBS.1** | Blocked by BRIDGE_REGISTRY_ADDRESS (deploy BridgeRegistry). |
---
## 5. Additional recommendations
### 5.1 Dotenv and config
1. **Single .env.example for smom-dbis-138:** ENV_EXAMPLE_CONTENT.md is the canonical content; ensure smom-dbis-138 has a single .env.example (or symlink) that matches it and env.additions.example so operators have one place to copy.
2. **ROUTING_REGISTRY_JSON_PATH:** Document in DOTENV_FILES_REFERENCE (token-aggregation) that optional ROUTING_REGISTRY_JSON_PATH overrides path to config/routing-registry.json.
3. **LIFI_* / JUMPER_*:** Already in env.additions.example; add to ENV_EXAMPLE_CONTENT or DOTENV_FILES_REFERENCE if QuoteService is the primary bridge-quote entry point.
### 5.2 Markdown and runbooks
4. **Execution order:** In EXECUTION_CHECKLIST and NEXT_STEPS_LIST, add one-line “Blocked by” for each blocked step (e.g. B.1: “Blocked by: CRO”; SBS.1: “Blocked by: BRIDGE_REGISTRY_ADDRESS”).
5. **Reconcile script output:** Script that prints “canonical Chain 138 addresses” should take CONTRACT_ADDRESSES_REFERENCE (or a single JSON) as source of truth so CCIPWETH9/10 and others stay in sync.
6. **Deployer-gas RPC:** Document in DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK that CELO_RPC, WEMIX_RPC, RPC_URL_651940, and RPC_URL_42793 (or equivalent) are read when present for balance/route display.
### 5.3 Operational
7. **NPMplus backup:** Run when NPM_PASSWORD is set: `./scripts/run-all-operator-tasks-from-lan.sh` (optionally `--skip-backup` if not needed).
8. **Periodic checks:** Schedule validate-config-files.sh and check-pmm-pool-balances-chain138.sh (e.g. weekly) to catch config drift and pool balance changes.
9. **Phase C deployment-status:** When cW* or edge pools are deployed, update cross-chain-pmm-lps/config/deployment-status.json and env so QuoteService and runbooks stay accurate.
### 5.4 Code/configuration
10. **Token-aggregation registry path:** cross-chain-bridges.ts tries several paths for routing-registry.json; document in token-aggregation README that when run from monorepo root, config/ is resolved from cwd.
11. **Inbound bridge addresses:** Add a small table or JSON snippet in DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS or CONTRACT_ADDRESSES_REFERENCE listing “Inbound bridge (source chain)” per chain (1, 56, 137, …) so operators know which env var fills routing-registry inbound.
---
## 6. Quick reference — where to set what
| Goal | Where to set | Doc |
|------|--------------|-----|
| Operator (LAN) tasks | Root .env: NPM_*; smom-dbis-138/.env: PRIVATE_KEY, RPC_URL_138 | OPERATOR_CREDENTIALS_CHECKLIST |
| Deploy / bridge (138) | smom-dbis-138/.env: PRIVATE_KEY, RPC_URL_138, CCIP*, LINK | ENV_EXAMPLE_CONTENT, REMAINING_ITEMS_DOTENV_AND_ACTIONS |
| Token-aggregation | smom-dbis-138/.env: CHAIN_138_DODO_PMM_INTEGRATION, RPC, DATABASE_URL | DOTENV_FILES_REFERENCE |
| Config-ready chains (Celo, Cronos, Wemix, Gnosis) | smom-dbis-138/.env: *_RPC, CCIPWETH9_BRIDGE_*, CCIPWETH10_BRIDGE_* | CONFIG_READY_CHAINS_COMPLETION_RUNBOOK |
| Bridge quote API (SBS) | smom-dbis-138/.env: BRIDGE_REGISTRY_ADDRESS | EXECUTION_CHECKLIST SBS.1, env.additions.example |
| Full env template | .env.master.example (root); smom-dbis-138/env.additions.example | MASTER_SECRETS, DOTENV_FILES_REFERENCE |
---
## 7. Summary
- **Required info:** Concentrated in root `.env` (NPM, Proxmox, RPC_URL_138) and **smom-dbis-138/.env** (PRIVATE_KEY, RPC_URL_138, CCIP bridges, DODO PMM, optional DATABASE_URL, per-chain RPC/bridges). Markdown checklists reference these; DOTENV_FILES_REFERENCE and ENV_EXAMPLE_CONTENT are the most complete.
- **Completed this run:** Config validation ✅, completable tasks ✅, PMM pool check ✅ (Pool 1 at 2M/2M), deployer-gas dry-run ✅.
- **Completed (2026-03-06):** Reconcile script CCIPWETH10 aligned; deployer-gas RPC doc; token-aggregation README registry path; DEPLOYED_TOKENS inbound env table; OPERATOR_CREDENTIALS "Required secrets" link; PLACEHOLDERS refreshed; REMAINING_ITEMS run order; smom-dbis-138 README .env source; Blocked-by in EXECUTION_CHECKLIST.
- **Gaps remaining:** Inbound routing-registry 0x0 placeholders; BRIDGE_REGISTRY_ADDRESS unset; B.1/B.2/B.3/SBS.1 blocked by CRO/WEMIX/LINK/registry.
- **Recommendations done:** reconcile aligned; deployer-gas RPC; token-aggregation path; inbound table; smom-dbis-138 .env ref; PLACEHOLDERS/OPERATOR_CREDENTIALS updated. Pending: schedule periodic validation/pool checks; deployment-status.json when Phase C deploys. (Was: Single .env.example reference, reconcile script sourcing CONTRACT_ADDRESSES_REFERENCE, “Blocked by” in checklists, deployer-gas RPC docs, periodic validation and pool checks, deployment-status.json updates for Phase C.

View File

@@ -0,0 +1,134 @@
# Execution Checklist: Multiple Routes and Sufficient Liquidity
**Last Updated:** 2026-03-06 (completion run: doc/script updates; operator script run with --skip-backup when LAN available)
**Purpose:** Ordered list of all steps and deployments for **multiple routes** and **maintaining sufficient liquidity for larger transfers**, including optional items. Follow the **Suggested order of execution** at the end.
**Refs:** [NEXT_STEPS_LIST.md](NEXT_STEPS_LIST.md), [TASKS_ROUTING_SWAP_CROSSCHAIN.md](TASKS_ROUTING_SWAP_CROSSCHAIN.md), [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md), [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](../03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [PHASE_D_OPTIONAL_CHECKLIST.md](../03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md).
---
## 1. Prerequisites
| # | Step | Command / action | Status |
|---|------|------------------|--------|
| 1.1 | Core RPC (138) | `RPC_URL_138=http://192.168.11.211:8545` in smom-dbis-138/.env; ensure block production advancing | ✅ Verified 2026-03-06 |
| 1.2 | Deployer gas (138) | `RPC_URL_138=... ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` | ✅ Run 2026-03-06 |
| 1.3 | Deployer gas (public chains) | Use `deployer-gas-auto-route.sh` or manual CRO/WEMIX via `acquire-cro-and-wemix-gas.sh` | ⏳ Per-chain as needed |
| 1.4 | Config validation | `./scripts/validation/validate-config-files.sh` | ✅ Passed 2026-03-06 |
---
## 2. Phase A — Hub liquidity (Chain 138)
| # | Step | Command / action | Status |
|---|------|------------------|--------|
| A.1 | Mint cUSDT/cUSDC | `cd smom-dbis-138 && ./scripts/mint-for-liquidity.sh` (optional: `MINT_CUSDT_AMOUNT=2000000` etc.) | ✅ Done (Pool 1 has 2M/2M) |
| A.2 | Add liquidity Pool 1 | `./scripts/mint-for-liquidity.sh --add-liquidity` or Forge AddLiquidityPMMPoolsChain138; set ADD_LIQUIDITY_* in .env | ✅ Done 2026-03-06 |
| A.3 | (Optional) Pools 2 & 3 | Add liquidity to cUSDT/USDT, cUSDC/USDC if official USDT/USDC on 138 | ⏳ Optional |
| A.4 | Token-aggregation DODO index | Set `CHAIN_138_DODO_PMM_INTEGRATION` in token-aggregation env | ✅ Set in smom-dbis-138/.env |
| A.5 | Expose quote API | Proxy `/api/v1/*` to token-aggregation or set GATSBY_SNAP_API_BASE_URL | ⏳ Pending |
---
## 3. Phase B — Bridge coverage (all mainnets)
| # | Step | Command / action | Status |
|---|------|------------------|--------|
| B.1 | Cronos (25) | Fund ~15 CRO; set CRONOS_RPC, CCIP_ROUTER_CRONOS, WETH9_CRONOS, WETH10_CRONOS; `deploy-bridges-config-ready-chains.sh cronos`; `complete-config-ready-chains.sh` | ⏳ Blocked by: CRO |
| B.2 | Wemix (1111) | Fund ~0.4 WEMIX; deploy bridges; complete-config | ⏳ Blocked by: WEMIX |
| B.3 | Add destinations 138↔each chain | `./scripts/deployment/complete-config-ready-chains.sh` (Gnosis, Cronos, Celo done when bridges exist; Wemix skip until bridges deployed) | ✅ Dry-run OK; run without DRY_RUN when gas ready |
| B.4 | Fund CCIP with LINK | From smom-dbis-138: `./scripts/deployment/fund-ccip-bridges-with-link.sh` (default 10 LINK per bridge; use --dry-run first) | ⏳ Blocked by: LINK/gas per lane |
| B.5 | Routing registry + token-mapping | Update config/routing-registry.json, token-mapping-multichain.json when adding Cronos/Wemix; validate-config-files.sh | ✅ validate-config passed |
| B.6 | Wemix token verification | Confirm WETH, USDT, USDC on scan.wemix.com; update token-mapping and WEMIX_TOKEN_VERIFICATION.md | ⏳ Pending |
| B.7 | AlltraAdapter setBridgeFee | Call setBridgeFee(uint256); set ALLTRA_BRIDGE_FEE, ALLTRA_ADAPTER_CHAIN138 in .env | ⏳ Pending |
---
## 4. Swapbridgeswap (full-path routes)
| # | Step | Command / action | Status |
|---|------|------------------|--------|
| SBS.1 | Bridge quote API env | Set `BRIDGE_REGISTRY_ADDRESS` (deployed BridgeRegistry); optional: ENHANCED_SWAP_ROUTER_ADDRESS, DESTINATION_RPC_URL, DESTINATION_SWAP_ROUTER_ADDRESS in smom-dbis-138/.env. See env.additions.example. | ⏳ Blocked by: BRIDGE_REGISTRY_ADDRESS (deploy BridgeRegistry first) |
| SBS.2 | Destination DEX/aggregator per chain | Wire QuoteService to each destination chain DEX or aggregator API for destinationSwapQuote | ⏳ Pending |
| SBS.3 | (Optional) SwapBridgeSwapCoordinator | Deploy and wire for one-tx swap→bridge→swap | ⏳ Optional |
| SBS.4 | Frontend: full-path quote and execute | Call POST /api/bridge/quote; show sourceSwapQuote, destinationSwapQuote; execute button | ⏳ Pending |
| SBS.5 | E2E test | Swap 138 → bridge → swap destination; document tx hashes | ⏳ Pending |
---
## 5. Phase C — cW* and edge pools
| # | Step | Command / action | Status |
|---|------|------------------|--------|
| C.1 | Deploy or bridge cW* per chain | Use cross-chain-pmm-lps config/chains.json, pool-matrix.json; deploy CompliantWrappedToken per chain; record in deployment-status.json and .env | ⏳ Pending (deployment-status.json has no cW* addresses) |
| C.2 | Create PMM edge pools per chain | From pool-matrix poolsFirst create cWUSDT/USDC, cWUSDC/USDC, etc. per chain | ⏳ Pending |
| C.3 | Add initial liquidity to edge pools | Add base/quote to each pool; size for larger transfers | ⏳ Pending |
| C.4 | Record pool addresses | Populate deployment-status.json chains[chainId].pmmPools | ⏳ Pending |
| C.5 | (Optional) Stabilization bot | cross-chain-pmm-lps deviation watcher and peg-band config | ⏳ Optional |
---
## 6. Liquidity maintenance (larger transfers)
| # | Step | Command / action | Status |
|---|------|------------------|--------|
| 6.1 | Hub pool sizing | Increase Pool 1 liquidity (mint more, add-liquidity with higher ADD_LIQUIDITY_*); check with check-pmm-pool-balances-chain138.sh | ✅ Pool 1 at 2M/2M; add more as needed |
| 6.2 | Edge pool throttle | In pool-matrix.json defaults.throttle: maxTradePerActionUnits, maxDailyNotionalUsd; add liquidity so depth supports desired size | ⏳ When Phase C pools exist |
| 6.3 | LINK and gas top-ups | Re-run fund-ccip-bridges-with-link.sh with higher --link or fund bridges manually for heavy volume | ⏳ When LINK available |
| 6.4 | Deployer balance checks | Periodic check-deployer-balance-chain138-and-funding-plan.sh and public-chain balances | ✅ Script run 2026-03-06 |
| 6.5 | PoolManager updatePoolLiquidity | If using PoolManager/LiquidityManager, call updatePoolLiquidity(pool, liquidityUSD) when adding liquidity | ⏳ When applicable |
| 6.6 | Inventory floors | Ensure edge pool liquidity above pool-matrix inventoryFloor | ⏳ When Phase C live |
---
## 7. Optional deployments
| # | Step | Command / action | Status |
|---|------|------------------|--------|
| 7.1 | EnhancedSwapRouter on 138 | Deploy only after Uniswap/Balancer (or other) pools exist on 138 | ⏳ Optional |
| 7.2 | N-hop pathfinding | Add graph-based A→B→C quote in token-aggregation | ⏳ Optional |
| 7.3 | LINK on Mainnet relay | Implement RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK; set relaySupported for LINK in token-mapping | ⏳ Pending |
| 7.4 | Phase D — XAU, vaults, trustless | XAU token + pools; ac*/vdc*/sdc* vaults; optional mainnet trustless stack per PHASE_D_OPTIONAL_CHECKLIST | ⏳ Optional |
---
## 8. Suggested order of execution
1. **Prerequisites** (1.11.4) and **Phase A** (A.1A.5) — hub liquidity and quote API.
2. **Phase B** (B.1B.7) — bridge coverage + LINK; then B.4 top-ups for larger transfer volume.
3. **Swapbridgeswap** (SBS.1SBS.5) — full-path routes and quote API.
4. **Phase C** (C.1C.5) — cW* and edge pools; liquidity sizing (6.16.6) for larger transfers.
5. **Ongoing:** LINK/gas top-ups, pool liquidity top-ups, PoolManager updates, inventory floors (6.36.6).
6. **Optional:** 7.17.4 as needed.
---
## 9. Quick commands (from repo root)
| Task | Command |
|------|---------|
| Validate config | `./scripts/validation/validate-config-files.sh` |
| Preflight 138 | `./scripts/deployment/preflight-chain138-deploy.sh` |
| Deployer balance 138 | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` |
| PMM pool balances | `./scripts/verify/check-pmm-pool-balances-chain138.sh` |
| Mint + add liquidity | `cd smom-dbis-138 && ./scripts/mint-for-liquidity.sh [--add-liquidity]` |
| Preflight config-ready chains | `cd smom-dbis-138 && ./scripts/deployment/preflight-config-ready-chains.sh [gnosis\|cronos\|celo\|wemix\|all]` |
| Complete CCIP destinations | `cd smom-dbis-138 && ./scripts/deployment/complete-config-ready-chains.sh` |
| Fund CCIP LINK | `cd smom-dbis-138 && ./scripts/deployment/fund-ccip-bridges-with-link.sh [--dry-run] [--link <amount>]` |
| Acquire CRO/WEMIX | `./scripts/deployment/acquire-cro-and-wemix-gas.sh` |
| Completable tasks | `./scripts/run-completable-tasks-from-anywhere.sh` |
| Operator (LAN) | `./scripts/run-all-operator-tasks-from-lan.sh [--skip-backup]` |
| E2E routing | `./scripts/verify/verify-end-to-end-routing.sh --profile=public` |
---
## 10. Execution run summary (2026-03-06)
- **Full verification run (incl. optional):** completable ✅, validate-config ✅, check-contracts 59/59 ✅, PMM balances ✅ (Pool 1: 2M/2M), preflight ✅, token-aggregation build ✅, deployer-gas dry-run ✅, fund-ccip dry-run ✅, test-all-contracts (unit) 457 ✅, E2E flow dry-run ✅, E2E routing 37 domains 0 failed ✅, operator script --skip-backup ✅ (NPMplus RPC + Blockscout verify).
- **Prerequisites:** validate-config ✅, preflight ✅, deployer balance script ✅, PMM balances ✅ (Pool 1: 2M/2M).
- **Phase A:** A.1/A.2 done; A.4 set; A.3, A.5 pending/optional.
- **Phase B:** preflight all — Gnosis/Celo OK, Cronos low CRO, Wemix 0 WEMIX; complete-config dry-run OK; B.4 LINK blocked; B.5 validate passed.
- **SBS:** SBS.1 requires BRIDGE_REGISTRY_ADDRESS (deploy BridgeRegistry if needed); SBS.2SBS.5 pending.
- **Phase C:** deployment-status.json empty for cW* and pmmPools; C.1C.5 pending.
- **Liquidity maintenance:** 6.1 verified; 6.36.6 pending or when Phase C live.
- **Optional:** 7.17.4 documented; not executed (optional).

View File

@@ -47,9 +47,9 @@ Steps 12 and the Chain 138 “all in one” run (step 3) are **done** (2026-0
| # | Item | | # | Item |
|---|------| |---|------|
| — | **Documentation consolidation:** [MASTER_INDEX.md](../MASTER_INDEX.md) and [README.md](../README.md) created; [RUNBOOKS_MASTER_INDEX.md](../RUNBOOKS_MASTER_INDEX.md) added (redirect); [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) deprecated (redirect stub). DOCUMENTATION_CONSOLIDATION_PLAN §5 (eliminating deprecated content) and ARCHIVE_CANDIDATES updated. | | — | **Documentation consolidation:** [MASTER_INDEX.md](../MASTER_INDEX.md) and [README.md](../README.md) created; [RUNBOOKS_MASTER_INDEX.md](../RUNBOOKS_MASTER_INDEX.md) added (redirect); [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) deprecated (redirect stub). DOCUMENTATION_CONSOLIDATION_PLAN §5 (eliminating deprecated content) and ARCHIVE_CANDIDATES updated. |
| — | **Completable-from-anywhere run:** `./scripts/run-completable-tasks-from-anywhere.sh` — config validation OK; on-chain 38/38 (Chain 138); run-all-validation --skip-genesis OK; reconcile-env --print. E2E flow tasks dry-run: `./scripts/run-e2e-flow-tasks-full-parallel.sh --dry-run` (waves E0E7 listed). | | — | **Completable-from-anywhere run:** `./scripts/run-completable-tasks-from-anywhere.sh` — config validation OK; on-chain 59/59 (Chain 138); run-all-validation --skip-genesis OK; reconcile-env --print. E2E flow tasks dry-run: `./scripts/run-e2e-flow-tasks-full-parallel.sh --dry-run` (waves E0E7 listed). |
| — | **Preflight:** `./scripts/deployment/preflight-chain138-deploy.sh` — passed (dotenv, RPC Core, nonce consistent). | | — | **Preflight:** `./scripts/deployment/preflight-chain138-deploy.sh` — passed (dotenv, RPC Core, nonce consistent). |
| — | **Chain 138 next steps (full run):** `./scripts/deployment/run-all-next-steps-chain138.sh` — Step 1 preflight OK; Step 2 TransactionMirror already deployed, cUSDT/cUSDC pool already exists (continued); Step 3 Register c* as GRU: all 12 c* already registered (skip); Step 4 on-chain verification 38/38. Exit 0. | | — | **Chain 138 next steps (full run):** `./scripts/deployment/run-all-next-steps-chain138.sh` — Step 1 preflight OK; Step 2 TransactionMirror already deployed, cUSDT/cUSDC pool already exists (continued); Step 3 Register c* as GRU: all 12 c* already registered (skip); Step 4 on-chain verification 59/59. Exit 0. |
--- ---
@@ -61,7 +61,7 @@ Steps 12 and the Chain 138 “all in one” run (step 3) are **done** (2026-0
| — | **Deployment safety (four rules):** Correct RPC (Core only), correct dotenv (`smom-dbis-138/.env` only), Gas API/cost estimate before deploy, do not deploy when transactions stuck. Documented in DEPLOYMENT_ORDER_OF_OPERATIONS, PRE_DEPLOYMENT_CHECKLIST, CONTRACT_DEPLOYMENT_RUNBOOK. | | — | **Deployment safety (four rules):** Correct RPC (Core only), correct dotenv (`smom-dbis-138/.env` only), Gas API/cost estimate before deploy, do not deploy when transactions stuck. Documented in DEPLOYMENT_ORDER_OF_OPERATIONS, PRE_DEPLOYMENT_CHECKLIST, CONTRACT_DEPLOYMENT_RUNBOOK. |
| — | **Preflight script:** `./scripts/deployment/preflight-chain138-deploy.sh [--cost]` — checks dotenv, env keys, RPC (Core, chainId 138), deployer nonce (fails if stuck); optional `--cost` runs cost estimate. Linked from runbook and Phase 0. | | — | **Preflight script:** `./scripts/deployment/preflight-chain138-deploy.sh [--cost]` — checks dotenv, env keys, RPC (Core, chainId 138), deployer nonce (fails if stuck); optional `--cost` runs cost estimate. Linked from runbook and Phase 0. |
| — | **Todo/docs sync:** NEXT_STEPS_AND_REMAINING_TODOS, TODOS_CONSOLIDATED, TODO_TASK_LIST_MASTER updated with 2026-02-27 completion and deployment order/preflight refs. | | — | **Todo/docs sync:** NEXT_STEPS_AND_REMAINING_TODOS, TODOS_CONSOLIDATED, TODO_TASK_LIST_MASTER updated with 2026-02-27 completion and deployment order/preflight refs. |
| — | **Completable run (2026-02-27):** `run-completable-tasks-from-anywhere.sh` — config validation OK; on-chain 38/38 (Chain 138); run-all-validation --skip-genesis OK; reconcile-env --print. | | — | **Completable run (2026-02-27):** `run-completable-tasks-from-anywhere.sh` — config validation OK; on-chain 59/59 (Chain 138); run-all-validation --skip-genesis OK; reconcile-env --print. |
--- ---

View File

@@ -3,15 +3,15 @@
**Last Updated:** 2026-03-02 **Last Updated:** 2026-03-02
**Purpose:** Single list of what **you** need to do next (no infra/automation). Everything else the repo can do has been completed or documented. **Purpose:** Single list of what **you** need to do next (no infra/automation). Everything else the repo can do has been completed or documented.
**Completed (next steps run):** `run-completable-tasks-from-anywhere.sh` — config OK, on-chain 38/38, validation OK, reconcile-env. `preflight-chain138-deploy.sh` — passed. `run-all-next-steps-chain138.sh` — preflight passed; TransactionMirror and cUSDT/cUSDC pool already present; all 12 c* already GRU-registered; verification 38/38. `validate-config-files.sh` — passed. `run-e2e-flow-tasks-full-parallel.sh --dry-run` — waves E0E7 listed. **Completed (next steps run):** `run-completable-tasks-from-anywhere.sh` — config OK, on-chain 59/59, validation OK, reconcile-env. `preflight-chain138-deploy.sh` — passed. `run-all-next-steps-chain138.sh` — preflight passed; TransactionMirror and cUSDT/cUSDC pool already present; all 12 c* already GRU-registered; verification 59/59. `validate-config-files.sh` — passed. `run-e2e-flow-tasks-full-parallel.sh --dry-run` — waves E0E7 listed.
**Continue and complete (2026-02-27):** Re-ran `run-completable-tasks-from-anywhere.sh` — all 4 steps passed (config, on-chain 38/38, validation, reconcile-env). Re-ran `run-all-operator-tasks-from-lan.sh --skip-backup` — dotenv loaded automatically; Blockscout verification completed (W0-1 NPMplus failed off-LAN as expected). Docs: REMAINING_SUMMARY "Continue and complete" section added; TODOS_CONSOLIDATED and NEXT_STEPS_FOR_YOU updated for operator script loading dotenv. **Continue and complete (2026-02-27):** Re-ran `run-completable-tasks-from-anywhere.sh` — all 4 steps passed (config, on-chain 59/59, validation, reconcile-env). Re-ran `run-all-operator-tasks-from-lan.sh --skip-backup` — dotenv loaded automatically; Blockscout verification completed (W0-1 NPMplus failed off-LAN as expected). Docs: REMAINING_SUMMARY "Continue and complete" section added; TODOS_CONSOLIDATED and NEXT_STEPS_FOR_YOU updated for operator script loading dotenv.
**Completed 2026-03-02:** Documentation consolidation: [MASTER_INDEX.md](../MASTER_INDEX.md), [README.md](../README.md), [RUNBOOKS_MASTER_INDEX.md](../RUNBOOKS_MASTER_INDEX.md) created; deprecated content (ALL_IMPROVEMENTS_AND_GAPS_INDEX) marked redirect-only. `run-completable-tasks-from-anywhere.sh` run: config OK, on-chain 38/38, validation OK, reconcile-env. **Preflight** and **run-all-next-steps-chain138.sh** run: preflight passed; mirror/pool already deployed; all 12 c* already registered as GRU; verification 38/38. Next steps index and TODOS_CONSOLIDATED updated. **Completed 2026-03-02:** Documentation consolidation: [MASTER_INDEX.md](../MASTER_INDEX.md), [README.md](../README.md), [RUNBOOKS_MASTER_INDEX.md](../RUNBOOKS_MASTER_INDEX.md) created; deprecated content (ALL_IMPROVEMENTS_AND_GAPS_INDEX) marked redirect-only. `run-completable-tasks-from-anywhere.sh` run: config OK, on-chain 59/59, validation OK, reconcile-env. **Preflight** and **run-all-next-steps-chain138.sh** run: preflight passed; mirror/pool already deployed; all 12 c* already registered as GRU; verification 59/59. Next steps index and TODOS_CONSOLIDATED updated.
**Completed 2026-02-27:** Chain 138 "run all next steps" script added: `./scripts/deployment/run-all-next-steps-chain138.sh` (preflight → mirror+pool → register c* as GRU → verify). Docs updated: NEXT_STEPS_INDEX, DEPLOYMENT_ORDER_OF_OPERATIONS, TODOS_CONSOLIDATED, CONTRACT_NEXT_STEPS_LIST. **Completed 2026-02-27:** Chain 138 "run all next steps" script added: `./scripts/deployment/run-all-next-steps-chain138.sh` (preflight → mirror+pool → register c* as GRU → verify). Docs updated: NEXT_STEPS_INDEX, DEPLOYMENT_ORDER_OF_OPERATIONS, TODOS_CONSOLIDATED, CONTRACT_NEXT_STEPS_LIST.
**Completed 2026-03-01:** Recommended next steps: `run-completable-tasks-from-anywhere.sh` (config OK, on-chain 38/38, validation OK, reconcile-env). Progress indicators added (Step 1/44/4). E2E flow tasks script: `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1]`. CONTRACT_ADDRESSES_REFERENCE and RECOMMENDATIONS_OPERATOR_CHECKLIST updated to use ADDRESS_MATRIX_AND_STATUS for correlated address matrix. **Completed 2026-03-01:** Recommended next steps: `run-completable-tasks-from-anywhere.sh` (config OK, on-chain 59/59, validation OK, reconcile-env). Progress indicators added (Step 1/44/4). E2E flow tasks script: `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1]`. CONTRACT_ADDRESSES_REFERENCE and RECOMMENDATIONS_OPERATOR_CHECKLIST updated to use ADDRESS_MATRIX_AND_STATUS for correlated address matrix.
**Completed 2026-02-23:** Optional and next steps: `run-completable-tasks-from-anywhere.sh` run (config OK, on-chain 36/36, run-all-validation --skip-genesis OK, reconcile-env). Shellcheck with `--optional` now non-fatal (CI and validate pass). Validate via Proxmox SSH: `bash scripts/run-via-proxmox-ssh.sh validate [--host IP]` runs full shellcheck + genesis validation; jq/shellcheck installed on host when missing. TODOS_CONSOLIDATED and OPERATOR_AND_EXTERNAL_COMPLETION_CHECKLIST updated. **Completed 2026-02-23:** Optional and next steps: `run-completable-tasks-from-anywhere.sh` run (config OK, on-chain 36/36, run-all-validation --skip-genesis OK, reconcile-env). Shellcheck with `--optional` now non-fatal (CI and validate pass). Validate via Proxmox SSH: `bash scripts/run-via-proxmox-ssh.sh validate [--host IP]` runs full shellcheck + genesis validation; jq/shellcheck installed on host when missing. TODOS_CONSOLIDATED and OPERATOR_AND_EXTERNAL_COMPLETION_CHECKLIST updated.

View File

@@ -1,6 +1,6 @@
# Next Steps — Index # Next Steps — Index
**Last Updated:** 2026-03-04 **Last Updated:** 2026-03-06
**Purpose:** Single entry point for "what to do next." Pick by audience and granularity. **Purpose:** Single entry point for "what to do next." Pick by audience and granularity.
**Documentation index:** [../MASTER_INDEX.md](../MASTER_INDEX.md) — canonical docs, deprecated list, and navigation. **Documentation index:** [../MASTER_INDEX.md](../MASTER_INDEX.md) — canonical docs, deprecated list, and navigation.

View File

@@ -0,0 +1,93 @@
# Next Steps (ordered)
**Last Updated:** 2026-03-06 (completion run: reconcile CCIPWETH10, runbooks, inbound table, PLACEHOLDERS, OPERATOR_CREDENTIALS, smom-dbis-138 README .env)
**Context:** Phase A mint + add-liquidity completed (Pool 1 cUSDT/cUSDC has 2M/2M). Below are remaining steps in recommended order.
**Refs:** [TODOS_CONSOLIDATED.md](TODOS_CONSOLIDATED.md), [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md), [TASKS_ROUTING_SWAP_CROSSCHAIN.md](TASKS_ROUTING_SWAP_CROSSCHAIN.md). **Full execution (all + optional, suggested order):** [EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md](EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md).
**Completion check (2026-03-06):** Full run including optional: completable ✅, validate-config ✅, PMM pool balances ✅ (Pool 1: 2M/2M), preflight ✅, token-aggregation build ✅, on-chain 59/59 (check-contracts-on-chain-138.sh) ✅, unit tests 457 ✅, deployer-gas dry-run ✅, fund-ccip dry-run ✅, E2E flow dry-run ✅, E2E routing ✅ (37 domains, 0 failed), operator script --skip-backup ✅ (NPMplus RPC + Blockscout verify). **Audit (2026-03-06):** [DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md](DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md) — required dotenv/markdown info, gaps, and recommendations. B.1/B.2 still blocked (need CRO/WEMIX); B.3 blocked (LINK/gas); A2 env set (CHAIN_138_DODO_PMM_INTEGRATION in smom-dbis-138/.env); A3/C3C8, Phase C, LINK relay, B4/B5 remain pending or optional.
---
## 1. Bridge coverage (Phase B)
| # | Step | Action | Blocked by | Status |
|---|------|--------|------------|--------|
| B.1 | **Cronos (25)** | Fund deployer ~15 CRO → set CRONOS_RPC, CCIP_ROUTER_CRONOS, WETH9_CRONOS, WETH10_CRONOS in smom-dbis-138/.env → run `deploy-bridges-config-ready-chains.sh cronos``complete-config-ready-chains.sh` | Need CRO (use `./scripts/deployment/acquire-cro-and-wemix-gas.sh` for aggregator links) | ⏳ Blocked |
| B.2 | **Wemix (1111)** | Fund deployer ~0.4 WEMIX → deploy bridges → complete-config | Need WEMIX (manual/aggregator; see [WEMIX_ACQUISITION_TABLED](../03-deployment/WEMIX_ACQUISITION_TABLED.md)) | ⏳ Blocked |
| B.3 | **Fund CCIP with LINK** | Top up LINK and gas on 138 + each destination → run `./scripts/deployment/fund-ccip-bridges-with-link.sh` (dry-run first) | Insufficient LINK or gas per lane | ⏳ Blocked (dry-run ✅ 2026-03-06) |
---
## 2. Same-chain swap & API (routing A2A3)
| # | Step | Action | Status |
|---|------|--------|--------|
| A2 | Token-aggregation indexes DODO | Ensure CHAIN_138_DODO_PMM_INTEGRATION is set in token-aggregation env; indexer running so `GET /api/v1/quote` returns DODO quotes. | ✅ Config set (smom-dbis-138/.env); build ✅; run service with env for quotes |
| A3 | Expose token-aggregation API | Proxy `/api/v1/*` (e.g. explorer.d-bis.org) to token-aggregation, or set GATSBY_SNAP_API_BASE_URL for Snap. | ⏳ Pending |
---
## 3. Swapbridgeswap (C3C8)
| # | Step | Action | Status |
|---|------|--------|--------|
| C3 | Bridge quote API | Set BRIDGE_REGISTRY_ADDRESS; optional ENHANCED_SWAP_ROUTER_ADDRESS, DESTINATION_RPC_URL so `POST /api/bridge/quote` returns sourceSwapQuote + destinationSwapQuote. | ⏳ Pending |
| C4 | Destination DEX for quotes | Wire QuoteService to destination-chain DEX or aggregator API per chain. | ⏳ Pending |
| C5 | (Optional) SwapBridgeSwapCoordinator | Deploy for one-tx swap → bridge → swap. | ⏳ Optional |
| C6C8 | Bridge UI + full-path quote + E2E test | Wire UI to routes/token-mapping; add “Get full path quote” and run E2E test. | ⏳ Pending |
---
## 4. Phase C — cW* and edge pools
| # | Step | Action | Status |
|---|------|--------|--------|
| C.1 | Deploy or bridge cW* per chain | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](../03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md); record in deployment-status.json and .env. | ⏳ Pending |
| C.2 | Create and fund PMM edge pools | cW*/USDC, cW*/USDT per pool-matrix; populate deployment-status.json. | ⏳ Pending |
| C.3 | (Optional) Stabilization bot | cross-chain-pmm-lps peg bands. | ⏳ Optional |
---
## 5. LINK relay & config
| # | Step | Action | Status |
|---|------|--------|--------|
| V5 | LINK support on Mainnet relay | [RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK](../07-ccip/RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md) — Option A or B; set relaySupported for LINK in token-mapping. | ⏳ Pending |
| B4 | Routing registry + token-mapping | When adding Cronos/Wemix, update config/routing-registry.json and config/token-mapping-multichain.json; run validate-config-files.sh. | ✅ validate-config ✅; update when B.1/B.2 done |
| B5 | Wemix token addresses | Confirm WETH, USDT, USDC on scan.wemix.com; update token-mapping and WEMIX_TOKEN_VERIFICATION.md. | ⏳ Pending |
---
## 6. Optional / when needed
| # | Step | Action | Status |
|---|------|--------|--------|
| E1 | Deployer gas on other chains | `./scripts/deployment/deployer-gas-auto-route.sh` (or --dry-run). | ✅ Script + dry-run verified 2026-03-06 |
| E2 | CRO / WEMIX manual acquisition | `./scripts/deployment/acquire-cro-and-wemix-gas.sh` for aggregator links. | ✅ Script + config (cro-wemix-swap-routes.json) ready |
| A4 | EnhancedSwapRouter on 138 | Only after Uniswap/Balancer pools exist on 138. | ⏳ Optional |
| A5 | N-hop pathfinding | Add to token-aggregation if needed. | ⏳ Optional |
| Phase D | XAU, vaults, trustless stack | [PHASE_D_OPTIONAL_CHECKLIST](../03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md). | ⏳ Optional |
---
## 7. External / third-party
| # | Step | Ref |
|---|------|-----|
| V6 | Ledger, Trust Wallet, CoinGecko/CMC, on-ramps | ADD_CHAIN138_TO_LEDGER_LIVE, ADD_CHAIN138_TO_TRUST_WALLET, CMC_COINGECKO_SUBMISSION_RUNBOOK. |
---
## Quick commands
| Task | Command |
|------|---------|
| Deployer balance (138) | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` |
| PMM pool balances | `./scripts/verify/check-pmm-pool-balances-chain138.sh` |
| Mint + add liquidity (more) | `cd smom-dbis-138 && ./scripts/mint-for-liquidity.sh --add-liquidity` |
| Cronos bridges (after CRO) | `cd smom-dbis-138 && ./scripts/deployment/deploy-bridges-config-ready-chains.sh cronos` then `./scripts/deployment/complete-config-ready-chains.sh` |
| Fund CCIP LINK | `./scripts/deployment/fund-ccip-bridges-with-link.sh` |
| Validate config | `./scripts/validation/validate-config-files.sh` |
| Completable from anywhere | `./scripts/run-completable-tasks-from-anywhere.sh` |
| Operator (LAN) | `./scripts/run-all-operator-tasks-from-lan.sh [--skip-backup]` |

View File

@@ -6,6 +6,8 @@
**Operator scripts load dotenv automatically:** [run-all-operator-tasks-from-lan.sh](../../scripts/run-all-operator-tasks-from-lan.sh) and [run-operator-tasks-from-lan.sh](../../scripts/run-operator-tasks-from-lan.sh) source `scripts/lib/load-project-env.sh`, which loads repo root `.env` and `smom-dbis-138/.env`. No need to `source .env` before running. **Operator scripts load dotenv automatically:** [run-all-operator-tasks-from-lan.sh](../../scripts/run-all-operator-tasks-from-lan.sh) and [run-operator-tasks-from-lan.sh](../../scripts/run-operator-tasks-from-lan.sh) source `scripts/lib/load-project-env.sh`, which loads repo root `.env` and `smom-dbis-138/.env`. No need to `source .env` before running.
**Required secrets for operator (full lists):** For a complete list of all env variables by area (root, smom-dbis-138, services, frontend, config-ready chains, bridge quote), see [DOTENV_FILES_REFERENCE.md](../04-configuration/DOTENV_FILES_REFERENCE.md). For deployment and bridge addresses see [ENV_EXAMPLE_CONTENT.md](../../smom-dbis-138/docs/deployment/ENV_EXAMPLE_CONTENT.md) and [env.additions.example](../../smom-dbis-138/env.additions.example).
--- ---
## Required credentials (summary) ## Required credentials (summary)

View File

@@ -7,15 +7,17 @@
**From anywhere (no LAN):** `./scripts/run-completable-tasks-from-anywhere.sh` **From anywhere (no LAN):** `./scripts/run-completable-tasks-from-anywhere.sh`
**Remaining for full network coverage (13-chain max execution):** [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) — Phase A (mint + add liquidity 138) → B (Celo/Wemix CCIP + LINK) → C (cW* + edge pools). **2026-03-04:** Celo CCIP bridges ✅ deployed; Phase C runbook and Phase D checklist added. Mint (A.1) retry if timeout; Wemix needs 0.4 WEMIX. **If deployer needs gas on public chains or Wemix:** Run `./scripts/deployment/deployer-gas-auto-route.sh` (optional: `--dry-run`, `--chain 138` or `--chain 1111`). See [DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md](../03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md).
**Remaining for full network coverage (13-chain max execution):** [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) — Phase A (mint + add liquidity 138) → B (**Cronos**, Celo, **Wemix** CCIP + LINK) → C (cW* + edge pools). **2026-03-04:** Celo + Gnosis CCIP ✅; Cronos and Wemix need deployer gas (CRO ~15, WEMIX ~0.4) then deploy + complete-config. See `./scripts/deployment/acquire-cro-and-wemix-gas.sh`.
--- ---
## 1. High: Gnosis, Celo, Wemix CCIP bridges ## 1. High: Gnosis, Cronos, Celo, Wemix CCIP bridges
**Ref:** [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) **Ref:** [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md)
**Prereqs:** Confirm [CCIP supports](https://docs.chain.link/ccip/supported-networks) 100, 42220, 1111. Per chain: RPC, CCIP Router, LINK, WETH9/WETH10, deployer with native gas (xDAI, CELO, WEMIX). **Prereqs:** Confirm [CCIP supports](https://docs.chain.link/ccip/supported-networks) 100, **25**, 42220, 1111. Per chain: RPC, CCIP Router, LINK, WETH9/WETH10, deployer with native gas (xDAI, **CRO ~15**, CELO, **WEMIX ~0.4**). To acquire CRO and WEMIX: `./scripts/deployment/acquire-cro-and-wemix-gas.sh`.
```bash ```bash
cd smom-dbis-138 cd smom-dbis-138
@@ -32,6 +34,14 @@ DRY_RUN=1 ./scripts/deployment/complete-config-ready-chains.sh # print command
./scripts/deployment/complete-config-ready-chains.sh # run (requires bridge addresses in .env) ./scripts/deployment/complete-config-ready-chains.sh # run (requires bridge addresses in .env)
``` ```
**Add Cronos and Wemix:** Copy Cronos/Wemix vars from `smom-dbis-138/docs/deployment/ENV_CONFIG_READY_CHAINS.example` into `smom-dbis-138/.env`; fund deployer with CRO and WEMIX (see `acquire-cro-and-wemix-gas.sh`); then:
```bash
cd smom-dbis-138
./scripts/deployment/deploy-bridges-config-ready-chains.sh cronos
./scripts/deployment/deploy-bridges-config-ready-chains.sh wemix
# Set CCIPWETH9_BRIDGE_CRONOS, CCIPWETH10_BRIDGE_CRONOS, CCIPWETH9_BRIDGE_WEMIX, CCIPWETH10_BRIDGE_WEMIX in .env from output
./scripts/deployment/complete-config-ready-chains.sh
```
**Full steps:** See runbook § Step 14. **Full steps:** See runbook § Step 14.
--- ---
@@ -159,6 +169,14 @@ bash scripts/verify/backup-npmplus.sh
**NPMplus RPC fix (405):** From LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh`. Verify: `bash scripts/verify/verify-end-to-end-routing.sh`. **NPMplus RPC fix (405):** From LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh`. Verify: `bash scripts/verify/verify-end-to-end-routing.sh`.
**NPMplus API unreachable (167/169):** Restart Docker inside NPMplus LXC: `./scripts/maintenance/fix-npmplus-services-via-proxmox-ssh.sh` (SSH to r630-01, restarts npmplus in 10233 and 10235).
**E2E from LAN (no public DNS):** If E2E fails at DNS (`Could not resolve host`), use [E2E_DNS_FROM_LAN_RUNBOOK.md](../04-configuration/E2E_DNS_FROM_LAN_RUNBOOK.md): append `config/e2e-hosts-append.txt` to `/etc/hosts`, then run `E2E_USE_SYSTEM_RESOLVER=1 ./scripts/verify/verify-end-to-end-routing.sh --profile=public`. Revert with `sudo ./scripts/verify/remove-e2e-hosts-from-etc-hosts.sh`.
**E2E profiles:** Use `--profile=public` for public endpoints (default) or `--profile=private` for private/admin RPC only. Run sequentially to avoid timestamp collision in evidence dirs. **Known E2E warnings** (502/404 and WS): [E2E_ENDPOINTS_LIST.md](../04-configuration/E2E_ENDPOINTS_LIST.md) § Known E2E warnings and Remediation. MIM4U web 502s and WS test-format warnings are **non-blocking** for contract/pool completion.
**Pre-PR validation:** Before opening PRs (Chainlist, token list, Trust Wallet), run `./scripts/run-before-pr-validations.sh` from repo root.
--- ---
## 9. Wemix token verification (High) ## 9. Wemix token verification (High)

View File

@@ -1,8 +1,8 @@
# Placeholders and Required Additions — Master List # Placeholders and Required Additions — Master List
**Last Updated:** 2026-02-05 **Last Updated:** 2026-03-06
**Purpose:** Single reference for all placeholders (code/config) and required additions (operator, env, phases, API keys). **Purpose:** Single reference for all placeholders (code/config) and required additions (operator, env, phases, API keys).
**Sources:** [PLACEHOLDERS_AND_TBD.md](../PLACEHOLDERS_AND_TBD.md), [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md), [11-references/PLACEHOLDER_IMPLEMENTATIONS.md](../11-references/PLACEHOLDER_IMPLEMENTATIONS.md), [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md), [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md), [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md), [IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md). **Sources:** [PLACEHOLDERS_AND_TBD.md](../PLACEHOLDERS_AND_TBD.md), [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md), [11-references/PLACEHOLDER_IMPLEMENTATIONS.md](../11-references/PLACEHOLDER_IMPLEMENTATIONS.md), [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md), [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md), [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md), [IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md). **Aligned with:** [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md), [NEXT_STEPS_LIST.md](NEXT_STEPS_LIST.md), [EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md](EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md).
--- ---
@@ -54,6 +54,8 @@
## 2. Required additions — operator / environment ## 2. Required additions — operator / environment
**Cross-reference:** [OPERATOR_READY_CHECKLIST](OPERATOR_READY_CHECKLIST.md) (copy-paste commands), [NEXT_STEPS_LIST](NEXT_STEPS_LIST.md) (B.1B.3, A2A3, C3C8), [EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY](EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md) (Phase AC, SBS). Blocked steps: B.1 (CRO), B.2 (WEMIX), B.3/B.4 (LINK/gas), SBS.1 (BRIDGE_REGISTRY_ADDRESS — deploy BridgeRegistry first).
### Wave 0 (gates) ### Wave 0 (gates)
| Task | Requirement | Command / note | | Task | Requirement | Command / note |

View File

@@ -0,0 +1,154 @@
# Project and Submodules — Full Review
**Last Updated:** 2026-03-05
**Purpose:** Single-document review of the **proxmox** workspace and all submodules (content, roles, and relationships).
---
## 1. Root Project Summary
**Repository:** proxmox (Gitea: `d-bis/proxmox`)
**Type:** Monorepo (pnpm workspaces) + 16 git submodules
**Scope:** Proxmox/infrastructure automation, Chain 138 blockchain network and services, multi-chain DeFi (CCIP, PMM, bridges), business systems (DBIS, OMNIS, The Order), and supporting tooling.
### Root Capabilities
| Area | Description |
|------|--------------|
| **Proxmox / MCP** | MCP server for Proxmox (mcp-proxmox), ProxmoxVE helper scripts + Next.js frontend |
| **Operator automation** | `scripts/` (381+ scripts): verify-all, list, fix-all, configure; deployment, bridge, CCIP, monitoring, NPMplus, OMNL, validation |
| **Documentation** | `docs/` with MASTER_INDEX, 00-meta (next steps, TODOs), 0212 (architecture, deployment, config, Besu, CCIP, references) |
| **Config** | `config/`: contract addresses, routing registry, token mapping, besu-node-lists, address-registry |
| **Chain 138** | Canonical RPC: `http://192.168.11.211:8545`; deployer `0x4A666F96fC8764181194447A7dFdb7d471b301C8`; DODO PMM, cUSDT/cUSDC, Explorer at explorer.d-bis.org |
### Key Entry Points
- **Docs:** [docs/MASTER_INDEX.md](../MASTER_INDEX.md)
- **Next steps:** [docs/00-meta/NEXT_STEPS_INDEX.md](NEXT_STEPS_INDEX.md)
- **Operator commands:** [docs/00-meta/OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md)
- **Submodule map:** [docs/11-references/SUBMODULE_RELATIONSHIP_MAP.md](../11-references/SUBMODULE_RELATIONSHIP_MAP.md)
- **Deployment phases:** [docs/03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) (Phases AD)
---
## 2. Submodules (16 Root-Level)
### 2.1 Core Infrastructure
| Submodule | Path | Repo | Purpose |
|-----------|------|------|---------|
| **mcp-proxmox** | `mcp-proxmox/` | gilby125/mcp-proxmox | Node.js MCP server for Proxmox: 55+ tools, token auth, basic vs elevated permissions, VM/container/storage/snapshot/backup management |
| **ProxmoxVE** | `ProxmoxVE/` | community-scripts/ProxmoxVE (Gitea: d-bis/ProxmoxVE) | Community Proxmox VE helper scripts + Next.js frontend; legacy of tteck |
### 2.2 Blockchain & Chain 138
| Submodule | Path | Repo | Purpose |
|-----------|------|------|---------|
| **smom-dbis-138** | `smom-dbis-138/` | Order-of-Hospitallers/smom-dbis-138 | Production Besu QBFT network (ChainID 138): validators, RPC, CCIP, WETH9/10, DODO PMM, relay, token-aggregation, watchtower, real-robinhood, metamask, runbooks |
| **explorer-monorepo** | `explorer-monorepo/` | Order-of-Hospitallers/chain-138-explorer | Blockscout-style explorer: tiered API (public RPC gateway → indexed → analytics → operator), backend libs, SPA at explorer.d-bis.org (VMID 5000) |
| **metamask-integration** | `metamask-integration/` | Defi-Oracle-Meta-Blockchain/metamask-integration | Chain 138 MetaMask: network config, token lists, price feed, chain138-snap, Smart Accounts Kit, examples |
| **fireblocks-integration** | `fireblocks-integration/` | Gitea d-bis/fireblocks-integration | Fireblocks Web3 for Chain 138: RPC/WS endpoints, docs, env examples |
| **alltra-lifi-settlement** | `alltra-lifi-settlement/` | bis-innovations/LiFi_Pay_Alltra_Integration_Submodule | Li.Fi Pay + Alltra: payments on public chains, vaults, settlement on 138 (CompliantUSDC), merchant withdrawals via CCIP; ALL Mainnet 651940 |
| **cross-chain-pmm-lps** | `cross-chain-pmm-lps/` | Gitea d-bis/cross-chain-pmm-lps | cW* M1 PMM mesh: token map, pool topology, peg bands, bot logic, simulation, deployment-status, routing controls |
| **ai-mcp-pmm-controller** | `ai-mcp-pmm-controller/` | Gitea d-bis/ai-mcp-pmm-controller | MCP hub for DODO PMM (VMID 5701): read-only pool state, risk scoring, policy-gated simulation; allowlist, execution gates (ALLOW_WRITE + EXECUTION_ARMED) |
| **OMNIS** | `OMNIS/` | Defi-Oracle-Tooling/OMNIS | Family office platform: entities, filings, treasury, projects, compliance; React 19 + Express + PostgreSQL |
### 2.3 Business & Sovereign
| Submodule | Path | Repo | Purpose |
|-----------|------|------|---------|
| **dbis_core** | `dbis_core/` | Order-of-Hospitallers/dbis_core | DBIS core banking: Neural Consensus Engine, Global Quantum Ledger, sovereign layer (33 SCBs), ledger, payments, FX, CBDC, compliance, settlement |
| **the-order** | `the-order/` | Order-of-Hospitallers/the-order-monorepo | Sovereign cloud: digital identity (eIDAS/DID), verifiable credentials (Entra VerifiedID), legal DMS, VDRs, payments, e-Residency; TypeScript monorepo |
| **miracles_in_motion** | `miracles_in_motion/` | Order-of-Hospitallers/miracles_in_motion | 501(c)3 nonprofit platform: portals, AI matching, i18n, PWA, Azure Static Web Apps + Functions |
| **metaverseDubai** | `metaverseDubai/` | Order-of-Hospitallers/metaverseDubai | UE 5.4 Dubai metaverse slice: photogrammetry, MetaHuman NPCs, weather/day-night, 8K cinematics |
### 2.4 Documentation & Tooling
| Submodule | Path | Repo | Purpose |
|-----------|------|------|---------|
| **gru-docs** | `gru-docs/` | Defi-Oracle-Tooling/GRU-Official-Docs-Monetary-Policies | GRU monetary policy docs: M00/M0/M1, Diamond contracts, parity, Li99, governance, DBIS integration |
### 2.5 ARROMIS
| Submodule | Path | Repo | Purpose |
|-----------|------|------|---------|
| **arromis-monorepo** | `arromis-monorepo/` | ARROMIS/arromis-monorepo | ARROMIS org monorepo; contains 5 nested submodules: documentation, coordination-hub, sovereign-body-registry, deployment-orchestrator, integration-templates |
| **omada-api** | `omada-api/` | ARROMIS/omada-api | Omada API client; workspace package, may be tracked as submodule |
### 2.6 PR / Chain Data
| Submodule | Path | Repo | Purpose |
|-----------|------|------|---------|
| **pr-workspace/app-ethereum** | `pr-workspace/app-ethereum/` | defiQUG/app-ethereum | Ethereum app (e.g. chainlist/Trust PRs) |
| **pr-workspace/chains** | `pr-workspace/chains/` | defiQUG/chains | Chain list data for PR submissions |
---
## 3. Non-Submodule Components (Root or Sibling)
- **scripts/** — Root automation: deployment, bridge, CCIP, verify, monitoring, omnl, dbis, health, validation, etc.; unified frameworks (verify-all, list, fix-all, configure). Uses `scripts/lib/load-project-env.sh` for dotenv.
- **config/** — smart-contracts-master, contract-addresses.conf, routing-registry.json, token-mapping, address-registry, besu-node-lists.
- **docs/** — All project documentation; 00-meta through 12-quick-reference, archive.
- **phoenix-deploy-api** — Deploy API (referenced in README).
- **x402-api** — HTTP 402 payment API.
- **forge-verification-proxy** — Contract verification proxy (e.g. Blockscout).
- **rpc-translator-138** — RPC translation for Chain 138.
- **mcp-omada**, **mcp-site-manager**, **mcp-unifi** — MCP servers (Omada, site manager, UniFi).
- **unifi-api** — UniFi API client.
- **omnl-fineract** — OMNL/Fineract integration.
- **token-lists/** — Explorer tagging, publication packs, submissions.
- **reports/** — Status, inventories, analyses, deployer funding/bridge reports.
- **backups/** — NPMplus backups (e.g. npmplus/).
- **smom-dbis-138-proxmox** — Referenced in README for deployment; git submodule is `smom-dbis-138` (same codebase).
---
## 4. Dependency Overview
- **explorer-monorepo**, **metamask-integration**, **fireblocks-integration** depend on Chain 138 (smom-dbis-138 RPC/config).
- **the-order** optionally depends on **dbis_core**.
- **cross-chain-pmm-lps** and **ai-mcp-pmm-controller** reference parent token/config (e.g. token-mapping, allowlist).
- **arromis-monorepo** nests 5 submodules; **omada-api** is a workspace package possibly used by root or other packages.
---
## 5. Operator and Execution Context
- **LAN/Proxmox:** Hosts 192.168.11.10 (ML110), .11, .12; Chain 138 RPC 192.168.11.211:8545; NPMplus 192.168.11.167:81 or .166:81.
- **Dotenv:** Root `.env` and `smom-dbis-138/.env` loaded by `scripts/lib/load-project-env.sh`; no need to `source .env` before operator scripts.
- **Flows:** (1) `./scripts/run-completable-tasks-from-anywhere.sh` then (2) `./scripts/run-all-operator-tasks-from-lan.sh` (optional `--deploy`, `--create-vms`, `--skip-backup`).
---
## 6. Deployment Phases (High Level)
| Phase | Focus | Status (2026-03-04) |
|-------|--------|----------------------|
| A | Mint cUSDT/cUSDC (138) + add PMM liquidity | A.1A.2 done |
| B | CCIP bridges (Celo, Wemix, Gnosis, etc.) + LINK funding | Celo + Gnosis done; Wemix blocked (0.4 WEMIX); LINK funding partial |
| C | cW* + edge pools | Runbook: PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md |
| D | Optional XAU/vaults/trustless | Checklist: PHASE_D_OPTIONAL_CHECKLIST.md |
---
## 7. Canonical References (Token / Contracts)
- **Canonical tokens (138):** cUSDT, cUSDC per [docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §5 and §8.
- **DODOPMMIntegration:** `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` (on-chain verified 2026-03-04).
- **PMM pools:** cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC addresses in CONTRACT_ADDRESSES_REFERENCE and ADDRESS_MATRIX_AND_STATUS.
- **Contract source of truth:** `config/smart-contracts-master.json`; overrides via `.env`.
---
## 8. Submodule Update Commands
```bash
git submodule update --init --recursive
git submodule update --remote
# Nested (arromis-monorepo):
cd arromis-monorepo && git submodule update --init --recursive && cd ..
```
---
**Related:** [SUBMODULE_RELATIONSHIP_MAP.md](../11-references/SUBMODULE_RELATIONSHIP_MAP.md), [MASTER_INDEX.md](../MASTER_INDEX.md), [NEXT_STEPS_INDEX.md](NEXT_STEPS_INDEX.md), root [README.md](../../README.md), [PROJECT_STRUCTURE.md](../../PROJECT_STRUCTURE.md).

View File

@@ -11,7 +11,7 @@ To complete all automatable steps from this repo:
1. **From anywhere (no LAN):** 1. **From anywhere (no LAN):**
`./scripts/run-completable-tasks-from-anywhere.sh` `./scripts/run-completable-tasks-from-anywhere.sh`
— Config validation, on-chain 38/38 check, run-all-validation --skip-genesis, reconcile-env. — Config validation, on-chain 59/59 check, run-all-validation --skip-genesis, reconcile-env.
2. **From LAN (with dotenv):** 2. **From LAN (with dotenv):**
`./scripts/run-all-operator-tasks-from-lan.sh` `./scripts/run-all-operator-tasks-from-lan.sh`
@@ -26,10 +26,10 @@ Optional: `--skip-backup` if NPM_PASSWORD not set; `--dry-run` to print steps on
| Item | Status | | Item | Status |
|------|--------| |------|--------|
| Config validation | ✅ `validate-config-files.sh` passed | | Config validation | ✅ `validate-config-files.sh` passed |
| On-chain check (Chain 138) | ✅ 38/38 contracts present | | On-chain check (Chain 138) | ✅ 59/59 contracts present |
| run-all-validation (--skip-genesis) | ✅ Passed | | run-all-validation (--skip-genesis) | ✅ Passed |
| Preflight (dotenv, RPC, nonce) | ✅ Passed | | Preflight (dotenv, RPC, nonce) | ✅ Passed |
| run-all-next-steps-chain138 | ✅ Preflight; mirror/pool present; 12 c* GRU-registered; 38/38 verify | | run-all-next-steps-chain138 | ✅ Preflight; mirror/pool present; 12 c* GRU-registered; 59/59 verify |
| run-completable-tasks-from-anywhere | ✅ All 4 steps passed | | run-completable-tasks-from-anywhere | ✅ All 4 steps passed |
| MCP plan upgrades (8 items) | ✅ Implemented (multi-chain, Uniswap, bot_state, webhook, merge script, limits, audit, router stub) | | MCP plan upgrades (8 items) | ✅ Implemented (multi-chain, Uniswap, bot_state, webhook, merge script, limits, audit, router stub) |
| Optional docs/runbooks | ✅ Explorer Wallet link runbook; optional tasks checklist; merge allowlist script | | Optional docs/runbooks | ✅ Explorer Wallet link runbook; optional tasks checklist; merge allowlist script |

View File

@@ -1,7 +1,7 @@
# Remaining Tasks # Remaining Tasks
**Last Updated:** 2026-02-27 **Last Updated:** 2026-02-27
**Purpose:** Single-page list of what is left to do. **In-repo: complete** (completable tasks, preflight, run-all-next-steps-chain138: 38/38 on-chain, 12 c* GRU-registered; MCP plan upgrades; optional runbooks). **Purpose:** Single-page list of what is left to do. **In-repo: complete** (completable tasks, preflight, run-all-next-steps-chain138: 59/59 on-chain, 12 c* GRU-registered; MCP plan upgrades; optional runbooks).
**Summary of all remaining (operator + external):** [REMAINING_SUMMARY.md](00-meta/REMAINING_SUMMARY.md). **Detail:** [NEXT_STEPS_AND_REMAINING_TODOS.md](00-meta/NEXT_STEPS_AND_REMAINING_TODOS.md) § Remaining tasks · **Operator commands:** [OPERATOR_READY_CHECKLIST.md](00-meta/OPERATOR_READY_CHECKLIST.md). **Summary of all remaining (operator + external):** [REMAINING_SUMMARY.md](00-meta/REMAINING_SUMMARY.md). **Detail:** [NEXT_STEPS_AND_REMAINING_TODOS.md](00-meta/NEXT_STEPS_AND_REMAINING_TODOS.md) § Remaining tasks · **Operator commands:** [OPERATOR_READY_CHECKLIST.md](00-meta/OPERATOR_READY_CHECKLIST.md).
**Task check (2026-03-02):** Each task below was verified before completion. See **[TASK_CHECK_REPORT.md](TASK_CHECK_REPORT.md)** for per-task status, what is already done (e.g. Phase 03, DODOPMMProvider, pools), and what still requires Operator/LAN or external submission. Completable + preflight both passed. **Task check (2026-03-02):** Each task below was verified before completion. See **[TASK_CHECK_REPORT.md](TASK_CHECK_REPORT.md)** for per-task status, what is already done (e.g. Phase 03, DODOPMMProvider, pools), and what still requires Operator/LAN or external submission. Completable + preflight both passed.

View File

@@ -14,7 +14,7 @@ Commands run from repo root on operator/LAN host. Use as baseline; re-run when e
| Preflight | `./scripts/deployment/preflight-chain138-deploy.sh` | **PASSED** — dotenv, RPC_URL_138, PRIVATE_KEY, nonce consistent, Core RPC chainId 138. | | Preflight | `./scripts/deployment/preflight-chain138-deploy.sh` | **PASSED** — dotenv, RPC_URL_138, PRIVATE_KEY, nonce consistent, Core RPC chainId 138. |
| Core RPC (2101) | `curl -s -o /dev/null -w "%{http_code}" http://192.168.11.211:8545` | **200/201** — reachable. | | Core RPC (2101) | `curl -s -o /dev/null -w "%{http_code}" http://192.168.11.211:8545` | **200/201** — reachable. |
| Deployer balance | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` | **OK** — native ETH sufficient; WETH/cUSDT/cUSDC = 0 (add liquidity blocked until tokens funded). | | Deployer balance | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` | **OK** — native ETH sufficient; WETH/cUSDT/cUSDC = 0 (add liquidity blocked until tokens funded). |
| On-chain contracts | `./scripts/verify/check-contracts-on-chain-138.sh http://192.168.11.211:8545` | **38 present, 0 missing.** | | On-chain contracts | `./scripts/verify/check-contracts-on-chain-138.sh http://192.168.11.211:8545` | **59 present, 0 missing** (script list expanded 2026-03-06; run check-contracts-on-chain-138.sh). |
| Clear tx pool script | `test -f scripts/clear-all-transaction-pools.sh` | **exists** | | Clear tx pool script | `test -f scripts/clear-all-transaction-pools.sh` | **exists** |
| Maintenance scripts | `make-rpc-vmids-writable-via-ssh.sh`, `health-check-rpc-2101.sh` | **exist** | | Maintenance scripts | `make-rpc-vmids-writable-via-ssh.sh`, `health-check-rpc-2101.sh` | **exist** |
| Test-all-contracts script | `test -f scripts/deployment/test-all-contracts-before-deploy.sh` | **exists** | | Test-all-contracts script | `test -f scripts/deployment/test-all-contracts-before-deploy.sh` | **exists** |
@@ -22,7 +22,7 @@ Commands run from repo root on operator/LAN host. Use as baseline; re-run when e
| Token-aggregation /health | `curl -s -o /dev/null -w "%{http_code}" http://192.168.11.140:3001/health` (or localhost:3001) | **200** — service running and healthy at tested endpoint. | | Token-aggregation /health | `curl -s -o /dev/null -w "%{http_code}" http://192.168.11.140:3001/health` (or localhost:3001) | **200** — service running and healthy at tested endpoint. |
| DODOPMMIntegration token addresses (2026-03-04) | `eth_call` to `compliantUSDT()` / `compliantUSDC()` at `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` | **PASSED** — returns canonical cUSDT/cUSDC; Explorer, mint script, and PMM aligned. See [EXPLORER_TOKEN_LIST_CROSSCHECK](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8. | | DODOPMMIntegration token addresses (2026-03-04) | `eth_call` to `compliantUSDT()` / `compliantUSDC()` at `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` | **PASSED** — returns canonical cUSDT/cUSDC; Explorer, mint script, and PMM aligned. See [EXPLORER_TOKEN_LIST_CROSSCHECK](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8. |
**Remaining to complete (verified):** Add liquidity to PMM pools once deployer has cUSDT/cUSDC (or mint); Celo/Wemix CCIP bridges; LINK relay; operator run Blockscout verify (run-all-operator-tasks-from-lan.sh); E2E 502 fix; external (Ledger, Trust, CoinGecko/CMC, on-ramps). See §45 and [TODOS_CONSOLIDATED](TODOS_CONSOLIDATED.md). **Remaining to complete (verified 2026-03-06):** Add liquidity to PMM pools once deployer has cUSDT/cUSDC (or mint); Celo/Wemix CCIP bridges; LINK relay runbook. **Done:** E2E 502s fixed 2026-03-06; operator run + Blockscout verify run 2026-03-06. **Pending:** external (Ledger, Trust, CoinGecko/CMC, on-ramps). See §45 and [TODOS_CONSOLIDATED](TODOS_CONSOLIDATED.md).
--- ---
@@ -89,7 +89,7 @@ Commands run from repo root on operator/LAN host. Use as baseline; re-run when e
### 3.1 Chain 138 — already done (for reference) ### 3.1 Chain 138 — already done (for reference)
- TransactionMirror, DODOPMMIntegration, three PMM pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC), DODOPMMProvider, CompliantFiatTokens (10 tokens). On-chain verification: 38/38. See [REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS](../03-deployment/REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md). - TransactionMirror, DODOPMMIntegration, three PMM pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC), DODOPMMProvider, CompliantFiatTokens (10 tokens). On-chain verification: 59/59 (check-contracts-on-chain-138.sh). See [REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS](../03-deployment/REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md).
### 3.2 Chain 138 — remaining (optional / follow-on) ### 3.2 Chain 138 — remaining (optional / follow-on)

View File

@@ -0,0 +1,161 @@
# Tasks: Routing, Swapping, and Cross-Chain Ops
**Last Updated:** 2026-03-06
**Purpose:** Single list of tasks that affect **routing**, **swapping**, and **cross-chain operations** only. For the full task list see [ALL_TASKS_INCLUDING_OPTIONAL.md](ALL_TASKS_INCLUDING_OPTIONAL.md).
**Key docs:** [DEX_AND_AGGREGATORS_CHAIN138_EXPLAINER](../04-configuration/DEX_AND_AGGREGATORS_CHAIN138_EXPLAINER.md), [PMM_DEX_ROUTING_STATUS](../11-references/PMM_DEX_ROUTING_STATUS.md), [DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS](../11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md), [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md).
---
## 1. Current state (whats live)
| Area | Status | Notes |
|------|--------|--------|
| **Same-chain swap (138)** | ✅ Pools + API | DODO PMM: cUSDT↔cUSDC pool live; DODOPMMProvider deployed. Add liquidity blocked (deployer 0 c*/WETH). `GET /api/v1/quote` single-hop. |
| **Bridge 138 → dest** | ✅ CCIP + Alltra | WETH9/WETH10 to 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, 42220 (Celo ✅); Wemix ⏳ (need 0.4 WEMIX). Alltra 138↔651940. |
| **Routing registry** | ✅ | `config/routing-registry.json` — WETH routes 138↔dest; ALT for 138↔651940. |
| **Token mapping API** | ✅ | `GET /api/v1/token-mapping`, `/resolve`; source: `config/token-mapping-multichain.json`. |
| **Bridge quote API** | Partial | `POST /api/bridge/quote` — sourceSwapQuote / destinationSwapQuote when configured. |
| **Swapbridgeswap** | Partial | QuoteService exists; SwapBridgeSwapCoordinator deployable; destination DEX/aggregator not wired per chain. |
| **cW* edge pools** | ❌ | pool-matrix design only; deployment-status.json empty; no cW* pools on public chains. |
| **N-hop / multi-provider** | ❌ | Single-hop only; EnhancedSwapRouter not deployed. |
---
## 2. Same-chain routing & swap (Chain 138)
### 2.1 Prerequisites for swap execution
| # | Task | Command / doc |
|---|------|----------------|
| A1 | Add liquidity to PMM pools (cUSDT/cUSDC first) | Fund deployer with cUSDT/cUSDC/WETH (or mint); [ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK](../03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md); `mint-for-liquidity.sh --add-liquidity` |
| A2 | Ensure token-aggregation indexes DODO on 138 | Set `CHAIN_138_DODO_PMM_INTEGRATION` in env; indexer running so `GET /api/v1/quote` returns DODO quotes. |
| A3 | Expose token-aggregation API for dApps/Snap | Proxy `/api/v1/*` (e.g. explorer.d-bis.org) to token-aggregation; or `GATSBY_SNAP_API_BASE_URL`. |
### 2.2 Optional (same-chain)
| # | Task | Notes |
|---|------|--------|
| A4 | Deploy EnhancedSwapRouter on 138 | Only after Uniswap/Balancer pools exist on 138; configure quoter/poolId. |
| A5 | N-hop quote/pathfinding in token-aggregation | Today single-hop only; add graph A→B→C if needed. |
---
## 3. Cross-chain: bridges & routing
### 3.1 Bridge coverage (138 ↔ all 13 chains)
| # | Task | Command / doc |
|---|------|----------------|
| B1 | Cronos (25): deploy CCIP bridges + complete-config | Fund deployer ~15 CRO ([acquire-cro-and-wemix-gas.sh](../../scripts/deployment/acquire-cro-and-wemix-gas.sh)); set CRONOS_RPC, CCIP_ROUTER_CRONOS; `deploy-bridges-config-ready-chains.sh cronos`; `complete-config-ready-chains.sh`. |
| B2 | Wemix (1111): deploy CCIP bridges + complete-config | Fund deployer ~0.4 WEMIX (manual/aggregator); [WEMIX_ACQUISITION_TABLED](../03-deployment/WEMIX_ACQUISITION_TABLED.md); `deploy-bridges-config-ready-chains.sh wemix`; complete-config. |
| B3 | Fund all CCIP bridges with LINK | `./scripts/deployment/fund-ccip-bridges-with-link.sh` (dry-run first). |
| B4 | Ensure routing registry and token-mapping include new chains | Update `config/routing-registry.json` and `config/token-mapping-multichain.json` when adding Cronos/Wemix; run `validate-config-files.sh`. |
### 3.2 Token mapping & route config
| # | Task | Notes |
|---|------|--------|
| B5 | Wemix (1111) token addresses | Confirm WETH, USDT, USDC on scan.wemix.com; update token-mapping and WEMIX_TOKEN_VERIFICATION.md; validate-config-files.sh. |
| B6 | Token-aggregation: GET /api/v1/bridge/routes returns Chain 138 bridges | Set BRIDGE_LIST_JSON_URL or built-in routes; verify response has chain138Bridges. |
| B7 | Token mapping API for 138↔destination | Ensure token-mapping-multichain.json (or loader) includes 138 and all target chains for bridge UIs. |
### 3.3 Alltra (138 ↔ 651940)
| # | Task | Notes |
|---|------|--------|
| B8 | AlltraAdapter setBridgeFee | Call `setBridgeFee(uint256)` after deploy; set ALLTRA_BRIDGE_FEE, ALLTRA_ADAPTER_CHAIN138 in .env. |
---
## 4. Swapbridgeswap (full path)
### 4.1 Orchestration & quote
| # | Task | Command / doc |
|---|------|----------------|
| C1 | Complete Flow A (liquidity + quote on 138) | Prerequisite: §2.1. |
| C2 | Complete Flow B (bridge configured + LINK funded) | Prerequisite: §3.13.2. |
| C3 | POST /api/bridge/quote returns sourceSwapQuote and destinationSwapQuote | Set BRIDGE_REGISTRY_ADDRESS; optional ENHANCED_SWAP_ROUTER_ADDRESS (source), DESTINATION_RPC_URL, DESTINATION_SWAP_ROUTER_ADDRESS. [QuoteService already supports optional swap quotes.] |
| C4 | Destination-chain DEX/aggregator for destinationSwapQuote | Wire QuoteService to destination DEX or aggregator API per chain for destinationSwapQuote. |
| C5 | (Optional) Deploy SwapBridgeSwapCoordinator on-chain | One tx: swap (source) → bridge → swap (destination). [DODO_PMM_NEXT_STEPS](../../smom-dbis-138/docs/bridge/DODO_PMM_NEXT_STEPS.md). |
### 4.2 Frontend & E2E
| # | Task | Notes |
|---|------|--------|
| C6 | Frontend: wire Bridge UI to routes + token mapping | Use GET /api/v1/bridge/routes and /api/v1/token-mapping/resolve. |
| C7 | Frontend: “Get full path quote” and execute | Call POST /api/bridge/quote; show sourceSwapQuote, destinationSwapQuote; execute steps or coordinator. |
| C8 | E2E test: swap 138 → bridge → swap destination | Automated or manual; document tx hashes. |
---
## 5. Public-chain cW* and edge pools (Phase C)
Enables swapbridgeswap and arbitrage on **destination** chains via cW* tokens and PMM edge pools.
| # | Task | Command / doc |
|---|------|----------------|
| D1 | Deploy or bridge cW* tokens per chain (1, 56, 137, 10, 42161, 8453, 43114, 100, 25, 42220, 1111) | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](../03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md); cross-chain-pmm-lps token-map and deployment recipe; record in deployment-status.json and .env. |
| D2 | Create and fund PMM edge pools (cW*/USDC, cW*/USDT) per pool-matrix | Same runbook; [pool-matrix.json](../../cross-chain-pmm-lps/config/pool-matrix.json); populate deployment-status.json with pool addresses. |
| D3 | (Optional) Stabilization bot / peg bands for cW* | cross-chain-pmm-lps. |
---
## 6. Deployer gas routing (ops)
Relevant only for **funding deployer** with native gas on each chain so bridge/deploy ops can run.
| # | Task | Command / doc |
|---|------|----------------|
| E1 | Deployer gas auto-route (Protocolink + 138 + manual) | `./scripts/deployment/deployer-gas-auto-route.sh` (optional `--dry-run`). [DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK](../03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md). |
| E2 | Acquire CRO and WEMIX (manual routes) | `./scripts/deployment/acquire-cro-and-wemix-gas.sh` (lists aggregator links); config: `config/cro-wemix-swap-routes.json`. |
---
## 7. Config and code references
| Config / code | Purpose |
|---------------|---------|
| `config/routing-registry.json` | (fromChain, toChain, asset) → pathType, bridgeAddress; used by UI/indexer. |
| `config/token-mapping-multichain.json` | Token pairs 138↔651940 (and other chains); addressFrom, addressTo for bridge UIs. |
| `config/deployer-gas-routes.json` | Deployer gas strategy per chain (protocolink, chain138, manual). |
| `config/cro-wemix-swap-routes.json` | Manual swap routes for CRO/WEMIX (aggregator links). |
| `smom-dbis-138/services/token-aggregation/src/config/cross-chain-bridges.ts` | CHAIN_138_BRIDGES, getRouteFromRegistry(). |
| `smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json` | 13×13 chain matrix (B/SBS, ALT, via 138). |
---
## 8. Quick command reference (routing / swap / cross-chain)
| Task | Command |
|------|---------|
| Validate config (routing, token-mapping) | `./scripts/validation/validate-config-files.sh` |
| Preflight config-ready chains | `cd smom-dbis-138 && ./scripts/deployment/preflight-config-ready-chains.sh [celo\|wemix\|cronos\|all]` |
| Deploy bridges (Cronos/Wemix) | `./scripts/deployment/deploy-bridges-config-ready-chains.sh [cronos\|wemix]` |
| Complete CCIP destinations (138↔chain) | `./scripts/deployment/complete-config-ready-chains.sh` |
| Fund CCIP with LINK | `./scripts/deployment/fund-ccip-bridges-with-link.sh` |
| Deployer gas report (dry-run) | `./scripts/deployment/deployer-gas-auto-route.sh --dry-run` |
| List CRO/WEMIX swap routes | `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list` / `--json` |
---
## 9. Summary: routing/swap/cross-chain task order
1. **Same-chain swap:** Add liquidity (A1) → token-aggregation DODO index (A2) → expose API (A3). Optional: EnhancedSwapRouter (A4), N-hop (A5).
2. **Cross-chain:** Cronos/Wemix bridges (B1B2) → fund LINK (B3) → registry/token-mapping (B4B7) → Alltra setBridgeFee (B8).
3. **Swapbridgeswap:** Complete A + B → quote API (C3) → destination DEX wiring (C4) → optional coordinator (C5) → frontend (C6C7) → E2E test (C8).
4. **cW* mesh (Phase C):** Deploy cW* (D1) → edge pools (D2) → optional bot (D3).
5. **Ops:** Deployer gas auto-route (E1); CRO/WEMIX via acquire script (E2) when needed.
---
## References
- [DEX_AND_AGGREGATORS_CHAIN138_EXPLAINER](../04-configuration/DEX_AND_AGGREGATORS_CHAIN138_EXPLAINER.md) — flows A/B/C, API, routing
- [PMM_DEX_ROUTING_STATUS](../11-references/PMM_DEX_ROUTING_STATUS.md) — DODO/EnhancedSwapRouter status
- [DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS](../11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md) — §5 full routing map
- [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) — CCIP bridge deploy + complete-config
- [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](../03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md) — cW* and edge pools
- [DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK](../03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md) — deployer gas routing
- [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md) — Flow A/B/C task list

View File

@@ -9,7 +9,7 @@
| Check | Result | | Check | Result |
|-------|--------| |-------|--------|
| **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 38/38 on-chain (Chain 138), validation OK, reconcile-env printed | | **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 59/59 on-chain (Chain 138), validation OK, reconcile-env printed |
| **preflight-chain138-deploy.sh** | Passed — dotenv exists, RPC Core (chainId 138), nonce consistent, no stuck txs | | **preflight-chain138-deploy.sh** | Passed — dotenv exists, RPC Core (chainId 138), nonce consistent, no stuck txs |
--- ---
@@ -21,7 +21,7 @@
| Item | Status | Notes | | Item | Status | Notes |
|------|--------|-------| |------|--------|-------|
| Phase 0 (prereqs) | Satisfied | Preflight passed; .env and RPC OK | | Phase 0 (prereqs) | Satisfied | Preflight passed; .env and RPC OK |
| Phase 1 (Chain 138 core) | Done | 38/38 contracts present | | Phase 1 (Chain 138 core) | Done | 59/59 contracts present |
| Phase 2 (TransactionMirror + PMM pools) | Done | Mirror deployed; all three pools created (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) | | Phase 2 (TransactionMirror + PMM pools) | Done | Mirror deployed; all three pools created (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) |
| Phase 3 (Liquidity + DODOPMMProvider) | Partially done | DODOPMMProvider deployed at `0x8EF6657D2a86c569F6ffc337EE6b4260Bd2e59d0`; pools registered. **Remaining:** add liquidity (optional per doc) via `AddLiquidityPMMPoolsChain138.s.sol` or cast | | Phase 3 (Liquidity + DODOPMMProvider) | Partially done | DODOPMMProvider deployed at `0x8EF6657D2a86c569F6ffc337EE6b4260Bd2e59d0`; pools registered. **Remaining:** add liquidity (optional per doc) via `AddLiquidityPMMPoolsChain138.s.sol` or cast |
| Phase 46 | Not run | Optional / other chains; Operator | | Phase 46 | Not run | Optional / other chains; Operator |

View File

@@ -1,40 +1,43 @@
# TODOs — Consolidated Task List # TODOs — Consolidated Task List
**Last Updated:** 2026-03-04 **Last Updated:** 2026-03-06
**Purpose:** Single checklist of all next steps and remaining tasks. Source of truth for the full list: [NEXT_STEPS_AND_REMAINING_TODOS.md](NEXT_STEPS_AND_REMAINING_TODOS.md). **Token deployments remaining:** [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md). **Verified list (LAN/Operator):** [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md](REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) — run bash/curl to confirm; doc updated 2026-03-03. **Last verification run:** 2026-03-06 (full + optional) — completable ✅, validate-config ✅, check-contracts 59/59 ✅, PMM pool balances ✅ (Pool 1: 2M/2M), preflight ✅, token-aggregation build ✅, deployer-gas dry-run ✅, fund-ccip dry-run ✅, test-all-contracts (unit) 457 passed ✅, E2E flow dry-run ✅, E2E routing ✅ (37 domains, 0 failed), operator script --skip-backup ✅ (NPMplus RPC fix + Blockscout verify). **Mint + add-liquidity** run 2026-03-06: 1M each minted, 500k each added; V2 done. **Next-steps check:** See [NEXT_STEPS_LIST.md](NEXT_STEPS_LIST.md) completion check; B.1/B.2/B.3 blocked (CRO/WEMIX/LINK).
**Purpose:** Single checklist of all next steps and remaining tasks. **Full execution order (multiple routes + liquidity):** [EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md](EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md). **Additional paths (registry, LiFi/Jumper, Etherlink, 13×13):** [ADDITIONAL_PATHS_AND_EXTENSIONS.md](../04-configuration/ADDITIONAL_PATHS_AND_EXTENSIONS.md). **Dotenv/markdown audit (required info, gaps, recommendations):** [DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md](DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md). Source of truth for the full list: [NEXT_STEPS_AND_REMAINING_TODOS.md](NEXT_STEPS_AND_REMAINING_TODOS.md). **Token deployments remaining:** [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md). **Routing / swap / cross-chain:** [TASKS_ROUTING_SWAP_CROSSCHAIN.md](TASKS_ROUTING_SWAP_CROSSCHAIN.md) (A1A5, B1B8, C1C8, D1D3, E1E2). **Verified list (LAN/Operator):** [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md](REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) — run bash/curl to confirm; doc updated 2026-03-03.
**Quick run:** From anywhere (no LAN): `./scripts/run-completable-tasks-from-anywhere.sh`. Before Chain 138 deploy: `./scripts/deployment/preflight-chain138-deploy.sh [--cost]`. **Chain 138 next steps (all in one):** `./scripts/deployment/run-all-next-steps-chain138.sh [--dry-run] [--skip-mirror] [--skip-register-gru] [--skip-verify]` — preflight → mirror+pool → register c* as GRU → verify. From LAN with secrets: `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms]`. **E2E flows (full parallel):** `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run]` — [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md). **Quick run:** From anywhere (no LAN): `./scripts/run-completable-tasks-from-anywhere.sh`. Before Chain 138 deploy: `./scripts/deployment/preflight-chain138-deploy.sh [--cost]`. **Chain 138 next steps (all in one):** `./scripts/deployment/run-all-next-steps-chain138.sh [--dry-run] [--skip-mirror] [--skip-register-gru] [--skip-verify]` — preflight → mirror+pool → register c* as GRU → verify. From LAN with secrets: `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms]`. **E2E flows (full parallel):** `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run]` — [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md).
**Full deployment order:** [DEPLOYMENT_ORDER_OF_OPERATIONS.md](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) — Phase 06. **Remaining for full network coverage:** [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) — A: mint + add liquidity (138) → BD. **Status to continue (before Phase A mint):** [REMAINING_DEPLOYMENTS § Status to continue](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) and [CORE_RPC_2101_2102_TXPOOL_ADMIN_STATUS §7](../04-configuration/CORE_RPC_2101_2102_TXPOOL_ADMIN_STATUS.md) — restart validator 1004, clear tx pool, then mint. **Phase execution 2026-03-04:** A.1 attempted (tx timeout); A.2 pending; B.1 Celo ✅; B.2 Wemix blocked; B.3 fund-ccip ready; Phase C/D runbooks. **Full plan:** [COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md](COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md). **Full deployment order:** [DEPLOYMENT_ORDER_OF_OPERATIONS.md](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) — Phase 06. **Remaining for full network coverage:** [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) — A: mint + add liquidity (138) → BD. **Status to continue (before Phase A mint):** [REMAINING_DEPLOYMENTS § Status to continue](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) and [CORE_RPC_2101_2102_TXPOOL_ADMIN_STATUS §7](../04-configuration/CORE_RPC_2101_2102_TXPOOL_ADMIN_STATUS.md) — restart validator 1004, clear tx pool, then mint. **Phase execution 2026-03-04:** A.1 attempted (tx timeout); A.2 pending; B.1 Celo ✅; B.2 Wemix blocked; B.3 fund-ccip ready; Phase C/D runbooks. **Full plan:** [COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md](COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md).
**Last completable run (2026-03-02):** Config validation OK; on-chain 38/38; run-all-validation --skip-genesis OK; reconcile-env. **Preflight** and **run-all-next-steps-chain138.sh** run: preflight passed; mirror/pool present; 12 c* already GRU-registered; verification 38/38. Documentation: MASTER_INDEX, README, RUNBOOKS_MASTER_INDEX created; deprecated list and consolidation plan updated. Progress indicators (Step 1/44/4) in run-completable-tasks-from-anywhere.sh. E2E flow tasks script and doc updates (ADDRESS_MATRIX_AND_STATUS, RECOMMENDATIONS R2, NEXT_STEPS_FOR_YOU) completed. **Optional completed (2026-02-27 / 2026-03-01):** DeployCompliantFiatTokens (10 tokens); Blockscout verification; MCP allowlist-138; add-liquidity runbook; token-aggregation fallbacks + ENV_EXAMPLE_CONTENT; E2E routing verification; PMM_DEX_ROUTING_STATUS + REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS updated; cCADT line (commented) in DeployCompliantFiatTokens.s.sol. **Within-scope list (2026-02-27):** CompliantWrappedToken.sol; DeployCompliantFiatTokensForChain.s.sol (c* any chain); DeployCWTokens.s.sol (cWUSDT/cWUSDC); deploy-tokens-and-weth-all-chains-skip-canonical.sh extended with --deploy-c, --deploy-cw, 651940 env validation; TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS §6 implemented; ENV_EXAMPLE_CONTENT c*/cW*/651940 vars. **2026-02-27:** Deployment order doc, preflight script, deployment safety added; todos synced. **Last completable run (2026-03-02):** Config validation OK; on-chain 59/59; run-all-validation --skip-genesis OK; reconcile-env. **Preflight** and **run-all-next-steps-chain138.sh** run: preflight passed; mirror/pool present; 12 c* already GRU-registered; verification 59/59. Documentation: MASTER_INDEX, README, RUNBOOKS_MASTER_INDEX created; deprecated list and consolidation plan updated. Progress indicators (Step 1/44/4) in run-completable-tasks-from-anywhere.sh. E2E flow tasks script and doc updates (ADDRESS_MATRIX_AND_STATUS, RECOMMENDATIONS R2, NEXT_STEPS_FOR_YOU) completed. **Optional completed (2026-02-27 / 2026-03-01):** DeployCompliantFiatTokens (10 tokens); Blockscout verification; MCP allowlist-138; add-liquidity runbook; token-aggregation fallbacks + ENV_EXAMPLE_CONTENT; E2E routing verification; PMM_DEX_ROUTING_STATUS + REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS updated; cCADT line (commented) in DeployCompliantFiatTokens.s.sol. **Within-scope list (2026-02-27):** CompliantWrappedToken.sol; DeployCompliantFiatTokensForChain.s.sol (c* any chain); DeployCWTokens.s.sol (cWUSDT/cWUSDC); deploy-tokens-and-weth-all-chains-skip-canonical.sh extended with --deploy-c, --deploy-cw, 651940 env validation; TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS §6 implemented; ENV_EXAMPLE_CONTENT c*/cW*/651940 vars. **2026-02-27:** Deployment order doc, preflight script, deployment safety added; todos synced.
**Verified (LAN/Operator) 2026-03-03:** Preflight ✅; Core RPC 192.168.11.211:8545 ✅; deployer balance script ✅ (native ETH OK; WETH/cUSDT/cUSDC = 0 → add liquidity blocked until funded); on-chain contracts 38/38 ✅; clear-tx-pool + maintenance + test-all-contracts scripts exist ✅; token-aggregation **build** ✅ (fixed 2026-03-03); token-aggregation /health 200 at tested endpoint. **real-robinhood:** Changes committed and pushed to Gitea (dashboard, data, docs). **Next steps run:** run-completable-tasks-from-anywhere.sh ✅; run-all-operator-tasks-from-lan.sh (Wave 0 NPMplus RPC fix running); run-all-next-steps-chain138.sh (preflight + verify) run on 2026-03-04. **On-chain verification 2026-03-04:** DODOPMMIntegration at `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` returns canonical cUSDT/cUSDC; Explorer, mint script, and PMM aligned — [EXPLORER_TOKEN_LIST_CROSSCHECK](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8. **Verified (LAN/Operator) 2026-03-06:** Preflight ✅; Core RPC 192.168.11.211:8545 ✅; deployer balance script ✅ (native ETH OK; WETH/cUSDT/cUSDC = 0 → add liquidity blocked); on-chain 59/59 ✅; config validation ✅; token-aggregation build ✅; E2E 502s fixed (address-all-remaining-502s + NPM; E2E 37 domains 0 failed); operator script run ✅ (NPMplus RPC fix, Blockscout verify). **Earlier:** 2026-03-0304 deployer balance, on-chain, DODOPMMIntegration canonical cUSDT/cUSDC — [EXPLORER_TOKEN_LIST_CROSSCHECK](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8.
**Operator copy-paste commands:** [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) — one page with exact commands for every pending todo. **Operator copy-paste commands:** [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) — one page with exact commands for every pending todo.
--- ---
## Remaining to complete (verified 2026-03-03) ## Remaining to complete (verified 2026-03-06)
| # | Task | Verified | Notes | | # | Task | Verified | Notes |
|---|------|----------|--------| |---|------|----------|--------|
| V1 | **Token-aggregation build** | ✅ Fixed | Fixed 2026-03-03: token-mapping (createRequire + process.cwd), bridge route stub, cross-chain-bridges config, cross-chain-indexer types. `npm run build` passes. | | V1 | **Token-aggregation build** | ✅ Done | Fixed 2026-03-03; re-verified 2026-03-06: `npm run build` passes. |
| V2 | **Add liquidity (Chain 138 PMM)** | ⏳ Blocked | Deployer WETH/cUSDT/cUSDC = 0. Mint/fund per [TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER](../11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md), then run AddLiquidityPMMPoolsChain138. | | V2 | **Add liquidity (Chain 138 PMM)** | ✅ Done (2026-03-06) | Mint + add-liquidity run: 1M cUSDT/cUSDC minted, 500k each added to Pool 1. Pool 1 now 2M/2M. To add more: `cd smom-dbis-138 && ./scripts/mint-for-liquidity.sh --add-liquidity`. |
| V3 | **RPC 2101 read-only** | ⚠️ If needed | Run `make-rpc-vmids-writable-via-ssh.sh` + `health-check-rpc-2101.sh` only when host I/O errors occur. | | V3 | **RPC 2101 read-only** | ⚠️ If needed | Run `make-rpc-vmids-writable-via-ssh.sh` + `health-check-rpc-2101.sh` only when host I/O errors occur. Not required when preflight passes. |
| V4 | **Wemix / Gnosis / Celo CCIP bridges** | 🔄 Partial | Celo + **Gnosis** CCIP bridges deployed (2026-03-04). Gnosis: 0x4ab39b5B… (WETH9), 0xC15ACdBA… (WETH10); .env updated. Wemix blocked (need 0.4 WEMIX). Cronos: set CRONOS_RPC and CCIP_ROUTER_CRONOS in .env then run deploy-bridges-config-ready-chains.sh cronos. complete-config (138→chains) fails while Chain 138 RPC tx confirmation times out. | | V4 | **Wemix / Gnosis / Celo CCIP bridges** | 🔄 Partial | Celo + **Gnosis** CCIP bridges deployed (2026-03-04). Gnosis: 0x4ab39b5B… (WETH9), 0xC15ACdBA… (WETH10); .env updated. **Wemix tabled** (no in-repo route ETH/BNB/POLY→WEMIX; see [WEMIX_ACQUISITION_TABLED](../03-deployment/WEMIX_ACQUISITION_TABLED.md)). Cronos: set CRONOS_RPC and CCIP_ROUTER_CRONOS in .env then run deploy-bridges-config-ready-chains.sh cronos. |
| V5 | **LINK relay, E2E 502s, operator run** | Pending | LINK support runbook; `run-all-maintenance-via-proxmox-ssh.sh --e2e`; `run-all-operator-tasks-from-lan.sh`. | | V5 | **LINK relay, E2E 502s, operator run** | 🔄 Partial | **E2E 502s** ✅ Fixed 2026-03-06 (address-all-remaining-502s.sh + NPM update; E2E 37 domains 0 failed). **Operator run** ✅ Run 2026-03-06 (NPMplus RPC fix, Blockscout verify). **LINK support runbook** ⏳ Pending — implement per [RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK](../07-ccip/RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md). |
| V6 | **External (Ledger, Trust, CoinGecko/CMC, on-ramps)** | ⏳ Pending | Per REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST §45. | | V6 | **External (Ledger, Trust, CoinGecko/CMC, on-ramps)** | ⏳ Pending | Per REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST §45. |
--- ---
## First (before any Chain 138 deploy) ## First (before any Chain 138 deploy)
Verified 2026-03-06: preflight ✅, 0a balance check ✅ (script runs; WETH/cUSDT/cUSDC = 0), config validation ✅, on-chain 59/59 ✅. Re-run 0a/0/0c before each deploy.
| # | Task | Owner | Ref | | # | Task | Owner | Ref |
|---|------|--------|-----| |---|------|--------|-----|
| 0a | **Check deployer gas (Chain 138):** Run balance/gas check using **Core RPC only**. | Operator/LAN | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` or `cd smom-dbis-138 && ./scripts/deployment/check-balances-gas-and-deploy.sh` | | 0a | **Check deployer gas (Chain 138):** Run balance/gas check using **Core RPC only**. | Operator/LAN | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` or `cd smom-dbis-138 && ./scripts/deployment/check-balances-gas-and-deploy.sh` |
| 0b | **Core Besu RPC (VMID 2101) use IP:port, not FQDN:** Set `RPC_URL_138=http://192.168.11.211:8545` in `smom-dbis-138/.env` for admin/deploy. Do not use `https://rpc-core.d-bis.org` for deployment (DNS/tunnel can fail; IP is direct to node). | Operator | [RPC_ENDPOINTS_MASTER](../04-configuration/RPC_ENDPOINTS_MASTER.md), [VMID_IP_FIXED_REFERENCE](../11-references/VMID_IP_FIXED_REFERENCE.md) | | 0b | **Core Besu RPC (VMID 2101) use IP:port, not FQDN:** Set `RPC_URL_138=http://192.168.11.211:8545` in `smom-dbis-138/.env` for admin/deploy. Do not use `https://rpc-core.d-bis.org` for deployment (DNS/tunnel can fail; IP is direct to node). | Operator | [RPC_ENDPOINTS_MASTER](../04-configuration/RPC_ENDPOINTS_MASTER.md), [VMID_IP_FIXED_REFERENCE](../11-references/VMID_IP_FIXED_REFERENCE.md) |
| 0c | **Test all contracts before deploying:** Run from repo root (see commands below). Full run can take 515+ min; use `--no-match` for unit-only. | Anyone | [DEPLOYMENT_ORDER_OF_OPERATIONS](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) § Phase 0.8 | | 0c | **Test all contracts before deploying:** Run from repo root (see commands below). Unit-only run verified 2026-03-06 (457 tests passed). Full run can take 515+ min. | Anyone | [DEPLOYMENT_ORDER_OF_OPERATIONS](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) § Phase 0.8 |
**Test-all-contracts commands (from repo root):** **Test-all-contracts commands (from repo root):**
@@ -56,6 +59,38 @@
--- ---
## Routing, swap, and cross-chain
**Full list and commands:** [TASKS_ROUTING_SWAP_CROSSCHAIN.md](TASKS_ROUTING_SWAP_CROSSCHAIN.md).
| ID | Area | Task | Status / notes |
|----|------|------|-----------------|
| **A1** | Same-chain swap | Add liquidity to PMM pools (cUSDT/cUSDC first) | ✅ Done 2026-03-06 (Pool 1: 2M/2M). Mint more + add: `mint-for-liquidity.sh --add-liquidity`. |
| **A2** | Same-chain swap | Token-aggregation indexes DODO on 138 | Set CHAIN_138_DODO_PMM_INTEGRATION; GET /api/v1/quote returns DODO quotes. |
| **A3** | Same-chain swap | Expose token-aggregation API for dApps/Snap | Proxy /api/v1/* or GATSBY_SNAP_API_BASE_URL. |
| **A4** | Same-chain (opt.) | Deploy EnhancedSwapRouter on 138 | After Uniswap/Balancer pools exist. |
| **A5** | Same-chain (opt.) | N-hop quote/pathfinding in token-aggregation | Single-hop only today. |
| **B1** | Cross-chain | Cronos (25): deploy CCIP bridges + complete-config | Fund ~15 CRO; deploy-bridges-config-ready-chains.sh cronos. |
| **B2** | Cross-chain | Wemix (1111): deploy CCIP bridges + complete-config | Fund ~0.4 WEMIX; WEMIX_ACQUISITION_TABLED. |
| **B3** | Cross-chain | Fund all CCIP bridges with LINK | fund-ccip-bridges-with-link.sh. |
| **B4** | Cross-chain | Routing registry + token-mapping include new chains | Update routing-registry.json, token-mapping-multichain.json. |
| **B5** | Cross-chain | Wemix token addresses (scan.wemix.com to config) | High priority 1. |
| **B6** | Cross-chain | GET /api/v1/bridge/routes returns Chain 138 bridges | BRIDGE_LIST_JSON_URL or built-in. |
| **B7** | Cross-chain | Token mapping API 138 to destination | token-mapping-multichain.json includes all target chains. |
| **B8** | Cross-chain | AlltraAdapter setBridgeFee + env | ALLTRA_BRIDGE_FEE, ALLTRA_ADAPTER_CHAIN138. |
| **C1-C2** | Swap-bridge-swap | Complete Flow A (liquidity) + Flow B (bridge + LINK) | Prerequisites. |
| **C3** | Swap-bridge-swap | POST /api/bridge/quote with sourceSwapQuote + destinationSwapQuote | BRIDGE_REGISTRY_ADDRESS; optional router env. |
| **C4** | Swap-bridge-swap | Destination DEX/aggregator for destinationSwapQuote | Wire QuoteService per chain. |
| **C5** | Swap-bridge-swap (opt.) | Deploy SwapBridgeSwapCoordinator | One tx: swap then bridge then swap. |
| **C6-C8** | Swap-bridge-swap | Bridge UI, full-path quote UI, E2E test | Code/Op. |
| **D1** | Phase C | Deploy or bridge cW* per chain; deployment-status + .env | PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK. |
| **D2** | Phase C | Create and fund PMM edge pools per pool-matrix | deployment-status.json. |
| **D3** | Phase C (opt.) | Stabilization bot or peg bands for cW* | cross-chain-pmm-lps. |
| **E1** | Ops | Deployer gas auto-route | deployer-gas-auto-route.sh; DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK. |
| **E2** | Ops | Acquire CRO and WEMIX (manual routes) | acquire-cro-and-wemix-gas.sh; cro-wemix-swap-routes.json. |
---
## High priority ## High priority
| # | Task | Owner | Ref | | # | Task | Owner | Ref |
@@ -70,7 +105,7 @@
| # | Task | Owner | Ref | | # | Task | Owner | Ref |
|---|------|--------|-----| |---|------|--------|-----|
| 3 | **LINK support on Mainnet relay:** Option A or B per runbook; implement, deploy, fund LINK; set `relaySupported: true` for LINK in token-mapping.json; update docs. | Operator/LAN | RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK | | 3 | **LINK support on Mainnet relay:** Option A or B per runbook; implement, deploy, fund LINK; set `relaySupported: true` for LINK in token-mapping.json; update docs. | Operator/LAN | RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK |
| 4 | **Run "from anywhere" checks periodically:** `./scripts/run-completable-tasks-from-anywhere.sh` | Anyone | NEXT_STEPS_FOR_YOU §2 | | 4 | **Run "from anywhere" checks periodically:** `./scripts/run-completable-tasks-from-anywhere.sh` | Anyone | NEXT_STEPS_FOR_YOU §2 — ✅ Run 2026-03-06 |
| 5 | **Placeholders (code):** All done or documented per [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md) §4: canonical addresses (env), AlltraAdapter setBridgeFee, smart accounts kit (env + runbook), quote service FABRIC_CHAIN_ID (default 999), .bak ([BAK_FILES_DEPRECATION.md](../../smom-dbis-138/docs/BAK_FILES_DEPRECATION.md)). | Dev | REQUIRED_FIXES_UPDATES_GAPS | | 5 | **Placeholders (code):** All done or documented per [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md) §4: canonical addresses (env), AlltraAdapter setBridgeFee, smart accounts kit (env + runbook), quote service FABRIC_CHAIN_ID (default 999), .bak ([BAK_FILES_DEPRECATION.md](../../smom-dbis-138/docs/BAK_FILES_DEPRECATION.md)). | Dev | REQUIRED_FIXES_UPDATES_GAPS |
| 6 | **API keys:** Sign up per reports/API_KEYS_REQUIRED.md; add to `.env`. | Anyone | NEXT_STEPS_FOR_YOU §2 | | 6 | **API keys:** Sign up per reports/API_KEYS_REQUIRED.md; add to `.env`. | Anyone | NEXT_STEPS_FOR_YOU §2 |
@@ -80,9 +115,9 @@
| # | Task | Owner | Ref | | # | Task | Owner | Ref |
|---|------|--------|-----| |---|------|--------|-----|
| 7 | **Blockscout verification:** `./scripts/run-all-operator-tasks-from-lan.sh` (loads dotenv) or `./scripts/verify/run-contract-verification-with-proxy.sh` | Operator/LAN | CONTRACT_DEPLOYMENT_RUNBOOK | | 7 | **Blockscout verification:** `./scripts/run-all-operator-tasks-from-lan.sh` (loads dotenv) or `./scripts/verify/run-contract-verification-with-proxy.sh`. Last run 2026-03-06 (submissions done). | Operator/LAN | CONTRACT_DEPLOYMENT_RUNBOOK |
| 8 | **Fix E2E 502s (if needed):** `./scripts/maintenance/run-all-maintenance-via-proxmox-ssh.sh --e2e` or `address-all-remaining-502s.sh` | Operator/LAN | 502_DEEP_DIVE_ROOT_CAUSES_AND_FIXES | | 8 | **Fix E2E 502s (if needed):** ✅ Fixed 2026-03-06 (MIM4U 7810 added to fix-all-502s-comprehensive.sh; address-all-remaining-502s + NPM + E2E → 37 domains 0 failed). Re-run `./scripts/maintenance/address-all-remaining-502s.sh [--e2e]` if 502s recur. | Operator/LAN | 502_DEEP_DIVE_ROOT_CAUSES_AND_FIXES |
| 9 | **Operator tasks script:** `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms]` | Operator/LAN | STEPS_FROM_PROXMOX_OR_LAN_WITH_SECRETS | | 9 | **Operator tasks script:** `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms]`. Last run 2026-03-06 (Wave 0 NPMplus RPC fix + Blockscout verify; use --skip-backup if NPM_PASSWORD unset). | Operator/LAN | STEPS_FROM_PROXMOX_OR_LAN_WITH_SECRETS |
| 10 | **sendCrossChain (real):** `bash scripts/bridge/run-send-cross-chain.sh 0.01` (when PRIVATE_KEY and LINK ready) | Operator/LAN | NEXT_STEPS_OPERATOR W0-2 | | 10 | **sendCrossChain (real):** `bash scripts/bridge/run-send-cross-chain.sh 0.01` (when PRIVATE_KEY and LINK ready) | Operator/LAN | NEXT_STEPS_OPERATOR W0-2 |
| 11 | **NPMplus backup:** `bash scripts/verify/backup-npmplus.sh` | Operator/LAN | NEXT_STEPS_OPERATOR W0-3 | | 11 | **NPMplus backup:** `bash scripts/verify/backup-npmplus.sh` | Operator/LAN | NEXT_STEPS_OPERATOR W0-3 |
| 12 | **Mint tokens to deployer for liquidity/bridges:** See [TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER](../11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md) — Chain 138: owner mint (cUSDT, cUSDC, cEURC, …); Cronos: MintController (D-WIN W); other chains: acquire via wrap/bridge/DEX. | Operator/LAN | TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER | | 12 | **Mint tokens to deployer for liquidity/bridges:** See [TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER](../11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md) — Chain 138: owner mint (cUSDT, cUSDC, cEURC, …); Cronos: MintController (D-WIN W); other chains: acquire via wrap/bridge/DEX. | Operator/LAN | TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER |
@@ -205,8 +240,35 @@ Cron: `schedule-daily-weekly-cron.sh --install`; NPMplus backup: `schedule-npmpl
--- ---
## Gaps and additional recommendations (full checklist)
All gaps and additional recommendations to implement are consolidated in:
- **[TASKS_ROUTING_SWAP_CROSSCHAIN.md](TASKS_ROUTING_SWAP_CROSSCHAIN.md)** — Routing, swap, and cross-chain only: same-chain swap (A1A5), bridges and routing (B1B8), swapbridgeswap (C1C8), cW* edge pools (D1D3), deployer gas routing (E1E2).
- **[ADDITIONAL_RECOMMENDATIONS_TABLE.md](ADDITIONAL_RECOMMENDATIONS_TABLE.md)** — Immediate/blocking (V2V6), pre-deploy (0a0), high/medium/LAN (112), token deployments (T2T7), low priority (1214), external (1518), operator R1R24, Proxmox (135), code quality (3643), documentation (4447, 6874), security (4852), config/testing (5367), infrastructure (7581), codebase (8291), MetaMask/explorer (92105), Tezos/LiFi/Jumper (106121), Besu (122126), maintenance (135139), E2E waves (E0E7), operator quick reference (22).
- **[REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md](REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md)** — Required fixes (§1), gaps (§2), additional deployments (§3), operator/LAN tasks (§4), external (§5), quick reference (§6).
**Run in full parallel when possible** (scriptable tasks; from repo root):
| # | Task | Command | Notes |
|---|------|---------|-------|
| 1 | Completable from anywhere | `./scripts/run-completable-tasks-from-anywhere.sh` | No LAN required |
| 2 | Preflight (Chain 138) | `./scripts/deployment/preflight-chain138-deploy.sh [--cost]` | Use Core RPC |
| 3 | Deployer gas check | `RPC_URL_138=http://192.168.11.211:8545 ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh` | LAN/RPC required |
| 4 | Deployer gas auto-route | `./scripts/deployment/deployer-gas-auto-route.sh [--dry-run]` | Optional --dry-run |
| 5 | Validate config files | `./scripts/validation/validate-config-files.sh` | |
| 6 | Test all contracts (dry-run) | `./scripts/deployment/test-all-contracts-before-deploy.sh --dry-run` | Or run full / unit-only |
| 7 | On-chain check (Chain 138) | `./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL]` | LAN/RPC required |
| 8 | E2E flow tasks (parallel) | `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run]` | See TASKS_TO_INCREASE_ALL_E2E_FLOWS |
| 9 | Operator tasks (LAN) | `./scripts/run-all-operator-tasks-from-lan.sh [--deploy]` | LAN + secrets required |
Run 1, 4, 5, 6 in parallel from anywhere; 2, 3, 7, 8, 9 when LAN/RPC and secrets are available.
---
## References ## References
- [TASKS_ROUTING_SWAP_CROSSCHAIN.md](TASKS_ROUTING_SWAP_CROSSCHAIN.md) — routing, swap, and cross-chain tasks (A1A5, B1B8, C1C8, D1D3, E1E2)
- [RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md](../03-deployment/RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md) — all recommendations and fixes before deploying smart contracts and PMM pools - [RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md](../03-deployment/RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md) — all recommendations and fixes before deploying smart contracts and PMM pools
- [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md) — remaining token deployments by category - [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md) — remaining token deployments by category
- [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) — copy-paste commands for all operator/LAN tasks - [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) — copy-paste commands for all operator/LAN tasks

View File

@@ -0,0 +1,97 @@
# Deployer Gas Auto-Route Runbook
**Purpose:** Convert deployer wallet ERC-20 (or compliant) tokens to **native gas tokens** on each target chain where balance is below threshold. Uses internal path (Chain 138), Protocolink (public chains), or manual/LiFi (Wemix).
**Deployer address:** `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
---
## Prerequisites
1. **Balance check:** Run deployer balance check first so you know which chains need gas.
2. **Environment:** `smom-dbis-138/.env` (or project env loaded by `scripts/lib/load-project-env.sh`) with:
- `PRIVATE_KEY` or `DEPLOYER_ADDRESS`
- Per-chain RPC URLs: `RPC_URL_138`, `ETHEREUM_MAINNET_RPC`, `BSC_RPC_URL`, `POLYGON_MAINNET_RPC`, `GNOSIS_MAINNET_RPC`, `ARBITRUM_MAINNET_RPC`, `OPTIMISM_MAINNET_RPC`, `BASE_MAINNET_RPC`, `AVALANCHE_RPC_URL`, `CRONOS_RPC_URL`, `CELO_RPC_URL`, `WEMIX_RPC`, `GNOSIS_RPC`. For ALL Mainnet (651940) and Etherlink (42793): set `RPC_URL_651940` and `RPC_URL_42793` (or equivalent) when present so the orchestrator can show balance/route for those chains; otherwise they appear as "no RPC configured".
3. **Config:** [config/deployer-gas-routes.json](../../config/deployer-gas-routes.json) — chain-to-method mapping and thresholds. **Multiple swap routes for CRO and WEMIX:** [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) — SwapSpace, ChangeNOW, SimpleSwap, StealthEX and others; used by `acquire-cro-and-wemix-gas.sh`.
---
## Steps
### 1. Run balance check (optional but recommended)
```bash
cd smom-dbis-138
./scripts/deployment/check-balances-gas-and-deploy.sh
```
Or from repo root (if env is loaded):
```bash
source scripts/lib/load-project-env.sh
cd smom-dbis-138 && ./scripts/deployment/check-balances-gas-and-deploy.sh
```
Confirm which chains show **INSUFFICIENT for deploy**.
### 2. Run the orchestrator
From **repo root**:
```bash
./scripts/deployment/deployer-gas-auto-route.sh
```
Options:
- `--dry-run` — do not execute any tx; only report and run path scripts in read-only mode.
- `--no-execute` — output tx data and instructions only; no signing (Protocolink path never signs; script only outputs quote and next steps).
- `--chain 138` — run only for chain 138 (or `--chain 1111` for Wemix only).
The orchestrator:
1. Reads [config/deployer-gas-routes.json](../../config/deployer-gas-routes.json).
2. For each chain, gets deployer native balance via RPC and compares to `thresholdEther`.
3. For chains **below threshold**, dispatches by `method`:
- **internal (138):** Runs [scripts/deployment/chain138-tokens-to-gas.sh](../../scripts/deployment/chain138-tokens-to-gas.sh). If no cUSDT/cUSDC→WETH pool exists (current state), outputs "use genesis/validator only".
- **protocolink:** Runs [scripts/deployment/protocolink-swap-to-gas.cjs](../../scripts/deployment/protocolink-swap-to-gas.cjs) to get a quote and next-step instructions; you build/sign the tx separately.
- **manual:** Prints instructions and links (e.g. SwapSpace, ChangeNOW for Wemix); for 1111 also runs [scripts/deployment/wemix-acquire-via-lifi.js](../../scripts/deployment/wemix-acquire-via-lifi.js) for JSON output.
### 3. Per-path actions
| Path | Action |
|------|--------|
| **Chain 138** | If token-aggregation has no c*→WETH pool: fund deployer via **genesis alloc** or **validator transfer**. See [FUNDING_AND_DEPLOYMENT_CHECKLIST.md](FUNDING_AND_DEPLOYMENT_CHECKLIST.md). |
| **Protocolink (public chains)** | Use the quote/output from `protocolink-swap-to-gas.cjs`. Build transaction via [Protocolink API](https://docs.protocolink.com/protocolink-api/overview) (estimate router data, build tx); sign with deployer key and submit. |
| **Cronos (25)** | **Manual (multiple routes):** Protocolink does not support Cronos. Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/USDT/USDC → CRO; send to deployer on Cronos. Required ~15 CRO. List all routes: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list`. |
| **Wemix (1111)** | **Manual (multiple routes):** Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/POL → WEMIX; send to deployer on chain 1111. Required ~0.4 WEMIX. List all routes: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list`. Then run `deploy-bridges-config-ready-chains.sh wemix` and complete-config. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). |
---
## References
- [FUNDING_AND_DEPLOYMENT_CHECKLIST.md](FUNDING_AND_DEPLOYMENT_CHECKLIST.md) — balance check, funding sources, mint ERC-20.
- [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md) — Wemix gas acquisition options and un-table steps.
- [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) — Phase A/B/C and deployer gas as prerequisite.
- [ADDITIONAL_RECOMMENDATIONS_TABLE.md](../00-meta/ADDITIONAL_RECOMMENDATIONS_TABLE.md) — deployer gas check (0a), operator quick reference (22).
- [DEX_AND_AGGREGATORS_CHAIN138_EXPLAINER.md](../04-configuration/DEX_AND_AGGREGATORS_CHAIN138_EXPLAINER.md) — token-aggregation quote API and DODO PMM on 138.
### Multiple swap routes (CRO / WEMIX)
**Config:** [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) defines all aggregator routes for Cronos (25) and Wemix (1111). Each chain has a `swapRoutes` array with `id`, `name`, `type`, `fromAssets`, `toAsset`, `url`, `description`. To add a new route: append an object to `chains."25".swapRoutes` or `chains."1111".swapRoutes` and run `acquire-cro-and-wemix-gas.sh` to list it.
---
## Quick reference
| Command | Purpose |
|---------|---------|
| `./scripts/deployment/deployer-gas-auto-route.sh` | Run full auto-route (report + path scripts). |
| `./scripts/deployment/deployer-gas-auto-route.sh --dry-run` | Report only; no execute. |
| `./scripts/deployment/deployer-gas-auto-route.sh --chain 138` | Only Chain 138 path. |
| `./scripts/deployment/chain138-tokens-to-gas.sh` | Chain 138: token-aggregation quote c*→WETH (or "use genesis/validator"). |
| `node scripts/deployment/protocolink-swap-to-gas.cjs --chain-id 1` | Protocolink quote for Ethereum (USDC→WETH). |
| `node scripts/deployment/wemix-acquire-via-lifi.js` | Wemix: manual instructions and deployer address (JSON). |
| `./scripts/deployment/acquire-cro-and-wemix-gas.sh` | Print all CRO and WEMIX swap routes from config (multiple aggregators). |
| `./scripts/deployment/acquire-cro-and-wemix-gas.sh --list` | One line per route (name + URL). |
| `./scripts/deployment/acquire-cro-and-wemix-gas.sh --json` | Emit deployer and config path only (for tooling). |

View File

@@ -53,7 +53,7 @@ Execute in any order where no dependency; all must be satisfied before Phase 1
## Phase 1 — Chain 138 core (if not already deployed) ## Phase 1 — Chain 138 core (if not already deployed)
If core contracts are already deployed (36/38 present per verification), skip to Phase 2. Otherwise follow this order. If core contracts are already deployed (e.g. 59/59 present per check-contracts-on-chain-138.sh), skip to Phase 2. Otherwise follow this order.
| # | Item | Script / command | Depends on | | # | Item | Script / command | Depends on |
|---|------|------------------|------------| |---|------|------------------|------------|
@@ -75,7 +75,7 @@ Required for PMM routing. Full steps: [PRE_DEPLOYMENT_CHECKLIST.md](PRE_DEPLOYME
| # | Item | Command / script | | # | Item | Command / script |
|---|------|------------------| |---|------|------------------|
| 2.1 | **TransactionMirror** | `./scripts/deployment/deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh` (deploys mirror + cUSDT/cUSDC pool), or run `DeployTransactionMirror.s.sol` only. Set `TRANSACTION_MIRROR_ADDRESS` in .env. If deploy fails with CreateCollision, see [TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX.md](TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX.md); use `--skip-mirror` for pool-only. | | 2.1 | **TransactionMirror** | `./scripts/deployment/deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh` (deploys mirror + cUSDT/cUSDC pool), or run `DeployTransactionMirror.s.sol` only. Set `TRANSACTION_MIRROR_ADDRESS` in .env. If deploy fails with CreateCollision, see [TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX.md](TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX.md); use `--skip-mirror` for pool-only. |
| 2.2 | **PMM pools (all three)** | Either: (a) after 2.1 run `CreateCUSDTUSDTPool.s.sol` and `CreateCUSDCUSDCPool.s.sol`, or (b) `./scripts/deployment/create-all-pmm-pools-chain138.sh` (all three). Use Core RPC only. | | 2.2 | **PMM pools (mesh-first on Chain 138)** | Preferred: run `./scripts/create-pmm-full-mesh-chain138.sh` (creates all c*↔c*, optional c*↔official, optional c*↔WETH, optional official↔WETH). Minimum fallback: create legacy three pools via `./scripts/deployment/create-all-pmm-pools-chain138.sh`. Use Core RPC only. |
| 2.3 | **Record pool addresses** | Note each pool address for Phase 3 (DODOPMMProvider registration). | | 2.3 | **Record pool addresses** | Note each pool address for Phase 3 (DODOPMMProvider registration). |
| 2.4 | **Register c* as GRU (ERC-2535 integration)** | Set c* and token addresses in .env: `./scripts/deployment/set-dotenv-c-tokens-and-register-gru.sh` (or `--no-register` to only update .env). Then run RegisterGRUCompliantTokens (script runs it unless `--no-register`). **If registration reverts (empty data):** the proxy implementation may be older — upgrade first: `cd smom-dbis-138 && forge script script/deploy/UpgradeUniversalAssetRegistry.s.sol --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY --with-gas-price 1000000000` (requires UPGRADER_ROLE). Then grant REGISTRAR_ROLE if needed (see script comment) and re-run set-dotenv script. See [GRU_M00_DIAMOND_FACET_MAP](../04-configuration/GRU_M00_DIAMOND_FACET_MAP.md); [GRU_M00_DIAMOND_REVIEW_GAPS_AND_RECOMMENDATIONS](../04-configuration/GRU_M00_DIAMOND_REVIEW_GAPS_AND_RECOMMENDATIONS.md). | | 2.4 | **Register c* as GRU (ERC-2535 integration)** | Set c* and token addresses in .env: `./scripts/deployment/set-dotenv-c-tokens-and-register-gru.sh` (or `--no-register` to only update .env). Then run RegisterGRUCompliantTokens (script runs it unless `--no-register`). **If registration reverts (empty data):** the proxy implementation may be older — upgrade first: `cd smom-dbis-138 && forge script script/deploy/UpgradeUniversalAssetRegistry.s.sol --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY --with-gas-price 1000000000` (requires UPGRADER_ROLE). Then grant REGISTRAR_ROLE if needed (see script comment) and re-run set-dotenv script. See [GRU_M00_DIAMOND_FACET_MAP](../04-configuration/GRU_M00_DIAMOND_FACET_MAP.md); [GRU_M00_DIAMOND_REVIEW_GAPS_AND_RECOMMENDATIONS](../04-configuration/GRU_M00_DIAMOND_REVIEW_GAPS_AND_RECOMMENDATIONS.md). |
@@ -87,7 +87,7 @@ Required for PMM routing. Full steps: [PRE_DEPLOYMENT_CHECKLIST.md](PRE_DEPLOYME
|---|------|--------| |---|------|--------|
| 3.1 | **Add liquidity (optional)** | Per pool: approve base/quote to DODOPMMIntegration, then `addLiquidity(pool, baseAmount, quoteAmount)`. See [DODO_PMM_INTEGRATION.md](../../smom-dbis-138/docs/integration/DODO_PMM_INTEGRATION.md). | | 3.1 | **Add liquidity (optional)** | Per pool: approve base/quote to DODOPMMIntegration, then `addLiquidity(pool, baseAmount, quoteAmount)`. See [DODO_PMM_INTEGRATION.md](../../smom-dbis-138/docs/integration/DODO_PMM_INTEGRATION.md). |
| 3.2 | **Deploy DODOPMMProvider** | `forge script script/liquidity/DeployDODOPMMProvider.s.sol:DeployDODOPMMProvider --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY --with-gas-price 1000000000`. Set `DODO_PMM_PROVIDER_ADDRESS` in .env. | | 3.2 | **Deploy DODOPMMProvider** | `forge script script/liquidity/DeployDODOPMMProvider.s.sol:DeployDODOPMMProvider --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY --with-gas-price 1000000000`. Set `DODO_PMM_PROVIDER_ADDRESS` in .env. |
| 3.3 | **Register pools** | For each pool (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC): call `provider.registerPool(tokenIn, tokenOut, poolAddress)` (via cast or script). | | 3.3 | **Register pools** | Register every created pool in DODOPMMProvider (legacy three at minimum; full mesh when used). |
| 3.4 | **Token-aggregation** | Set `CHAIN_138_DODO_PMM_INTEGRATION` where the token-aggregation service runs; ensure indexer runs so API exposes pools. | | 3.4 | **Token-aggregation** | Set `CHAIN_138_DODO_PMM_INTEGRATION` where the token-aggregation service runs; ensure indexer runs so API exposes pools. |
| 3.5 | **MCP allowlist (optional)** | Use `ai-mcp-pmm-controller/config/allowlist-138.json` (Chain 138 pools). Run with `ALLOWLIST_PATH=config/allowlist-138.json CHAIN=138`. See [README-allowlist-138.md](../../ai-mcp-pmm-controller/config/README-allowlist-138.md). | | 3.5 | **MCP allowlist (optional)** | Use `ai-mcp-pmm-controller/config/allowlist-138.json` (Chain 138 pools). Run with `ALLOWLIST_PATH=config/allowlist-138.json CHAIN=138`. See [README-allowlist-138.md](../../ai-mcp-pmm-controller/config/README-allowlist-138.md). |
@@ -123,7 +123,7 @@ After each deployment phase and periodically.
| # | Item | Command / doc | | # | Item | Command / doc |
|---|------|----------------| |---|------|----------------|
| 6.1 | **On-chain verification (Chain 138)** | `./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL]`. Target 38/38 when TransactionMirror and all three PMM pools exist. | | 6.1 | **On-chain verification (Chain 138)** | `./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL]`. Target 59/59 when TransactionMirror, all three PMM pools, vault/reserve, and CompliantFiatTokens exist. |
| 6.2 | **Blockscout verification** | When Blockscout reachable: `./scripts/verify/run-contract-verification-with-proxy.sh`. See [BLOCKSCOUT_VERIFICATION_GUIDE.md](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md). | | 6.2 | **Blockscout verification** | When Blockscout reachable: `./scripts/verify/run-contract-verification-with-proxy.sh`. See [BLOCKSCOUT_VERIFICATION_GUIDE.md](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md). |
| 6.3 | **Update address docs** | Update [CONTRACT_ADDRESSES_REFERENCE.md](../11-references/CONTRACT_ADDRESSES_REFERENCE.md), [LIQUIDITY_POOLS_MASTER_MAP.md](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md) with new pool and provider addresses. | | 6.3 | **Update address docs** | Update [CONTRACT_ADDRESSES_REFERENCE.md](../11-references/CONTRACT_ADDRESSES_REFERENCE.md), [LIQUIDITY_POOLS_MASTER_MAP.md](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md) with new pool and provider addresses. |
| 6.4 | **Recommendations (R1R24)** | Follow [RECOMMENDATIONS_OPERATOR_CHECKLIST.md](../00-meta/RECOMMENDATIONS_OPERATOR_CHECKLIST.md): verify on Blockscout, keep address refs updated, use correct RPC/gas, manage nonce, runbooks in sync, monitoring, testing, token mapping. | | 6.4 | **Recommendations (R1R24)** | Follow [RECOMMENDATIONS_OPERATOR_CHECKLIST.md](../00-meta/RECOMMENDATIONS_OPERATOR_CHECKLIST.md): verify on Blockscout, keep address refs updated, use correct RPC/gas, manage nonce, runbooks in sync, monitoring, testing, token mapping. |
@@ -172,8 +172,8 @@ For a single page of exact commands (CCIP bridges, LINK relay, Blockscout verify
1. **Prerequisites:** RPC writable (Core only), deployer funded, **smom-dbis-138/.env** (no other dotenv), gas/cost estimate run, POOL_MANAGER_ROLE, **no stuck txs** (clear pool if needed), forge build. 1. **Prerequisites:** RPC writable (Core only), deployer funded, **smom-dbis-138/.env** (no other dotenv), gas/cost estimate run, POOL_MANAGER_ROLE, **no stuck txs** (clear pool if needed), forge build.
2. **Chain 138 core:** 01_DeployCore → set env → 02_DeployBridges (or unified script); WETH9 bridge; deterministic if needed. 2. **Chain 138 core:** 01_DeployCore → set env → 02_DeployBridges (or unified script); WETH9 bridge; deterministic if needed.
3. **PMM:** TransactionMirror + create all three PMM pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC). 3. **PMM:** TransactionMirror + create mesh-first pools on Chain 138 (`create-pmm-full-mesh-chain138.sh`), or legacy three as minimum fallback.
4. **Provider:** Add liquidity (optional) → deploy DODOPMMProvider → register pools → token-aggregation env → MCP allowlist (optional). 4. **Provider:** Add liquidity (optional) → deploy DODOPMMProvider → register all created pools → token-aggregation env → MCP allowlist (optional).
5. **Optional:** EnhancedSwapRouter (when Uniswap/Balancer on 138), trustless stack, CCIP other chains, LINK relay. 5. **Optional:** EnhancedSwapRouter (when Uniswap/Balancer on 138), trustless stack, CCIP other chains, LINK relay.
6. **cW*:** Per chain: deploy/bridge cW* tokens, create and fund pools per pool-matrix. 6. **cW*:** Per chain: deploy/bridge cW* tokens, create and fund pools per pool-matrix.
7. **Verify & recommendations:** check-contracts-on-chain-138.sh, Blockscout verify, update address docs, R1R24, full recommendations list. 7. **Verify & recommendations:** check-contracts-on-chain-138.sh, Blockscout verify, update address docs, R1R24, full recommendations list.

View File

@@ -20,6 +20,8 @@ This checks **native gas token** only (ETH, MATIC, BNB, etc.). ERC-20 tokens (US
**Deployer address:** `cast wallet address $PRIVATE_KEY` (from smom-dbis-138/.env) **Deployer address:** `cast wallet address $PRIVATE_KEY` (from smom-dbis-138/.env)
**Auto-route (tokens → gas):** If the deployer holds ERC-20 (e.g. USDT, USDC, LINK) on a chain but is short on native gas, you can use the deployer gas auto-route to get swap/bridge instructions or quotes. Run from repo root: `./scripts/deployment/deployer-gas-auto-route.sh` (optional: `--dry-run`, `--chain 138`). See [DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md](DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md).
--- ---
## 2. Funding Sources by Network ## 2. Funding Sources by Network
@@ -190,7 +192,8 @@ cast send 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 "deposit()" --value 1000000
### "RPC not accessible" ### "RPC not accessible"
- For `192.168.11.211`: requires LAN/VPN access. - For `192.168.11.211`: requires LAN/VPN access.
- Try public RPC: `RPC_URL_138=https://rpc-http-pub.d-bis.org` - Do **not** switch deployment to public RPC. For deployment on Chain 138, use Core RPC only (`RPC_URL_138` on VMID 2101).
- If Core RPC is unreachable, restore LAN/VPN access or fix Core RPC health first, then re-run deployment.
### "insufficient funds" on broadcast ### "insufficient funds" on broadcast

View File

@@ -9,7 +9,8 @@
## C.1 Deploy or bridge cW* tokens per chain ## C.1 Deploy or bridge cW* tokens per chain
Chains: 1, 56, 137, 10, 42161, 8453, 43114, 100, 25, 42220, 1111. Chains (current pool-matrix scope): 1, 10, 56, 100, 137, 250, 324, 8453, 42161, 42220, 43114, 59144.
Note: Wemix (1111) may still be part of bridge-coverage phases, but it is not currently in `cross-chain-pmm-lps/config/pool-matrix.json`.
Tokens: cWUSDT, cWUSDC, cWAUSDT, cWEURC, cWEURT, cWUSDW (per pool-matrix). Tokens: cWUSDT, cWUSDC, cWAUSDT, cWEURC, cWEURT, cWUSDW (per pool-matrix).
**Steps:** (1) Use cross-chain-pmm-lps config/chains.json and pool-matrix.json. (2) Deploy CompliantWrappedToken (cW*) per chain or use bridge; set addresses in deployment-status.json and smom-dbis-138/.env. (3) Ref: TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §3, CW_DEPLOY_AND_WIRE_RUNBOOK. **Steps:** (1) Use cross-chain-pmm-lps config/chains.json and pool-matrix.json. (2) Deploy CompliantWrappedToken (cW*) per chain or use bridge; set addresses in deployment-status.json and smom-dbis-138/.env. (3) Ref: TOKEN_CONTRACT_DEPLOYMENTS_REMAINING §3, CW_DEPLOY_AND_WIRE_RUNBOOK.

View File

@@ -12,6 +12,10 @@
- Number of pairs: **66** (12 choose 2). - Number of pairs: **66** (12 choose 2).
- **c* vs official (optional):** Each c* vs official USDT and vs official USDC on Chain 138 (if addresses are set). - **c* vs official (optional):** Each c* vs official USDT and vs official USDC on Chain 138 (if addresses are set).
- Adds up to **24** pools (12×2) when both official tokens are configured. - Adds up to **24** pools (12×2) when both official tokens are configured.
- **c* vs ETH (on-chain as WETH, optional):** Each c* vs WETH on Chain 138.
- Adds up to **12** pools (12×1) when `WETH_ADDRESS_138` (or `QUOTE_TOKEN_ADDRESS`) is configured.
- **official vs ETH (on-chain as WETH, optional):** official USDT/WETH and official USDC/WETH.
- Adds up to **2** pools when official token addresses and WETH are configured.
- **Already created:** The three legacy pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) are created separately; the script skips any pair that already has a pool. - **Already created:** The three legacy pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) are created separately; the script skips any pair that already has a pool.
### 1.2 Contracts and roles ### 1.2 Contracts and roles
@@ -31,12 +35,19 @@ From repo root (or from `smom-dbis-138/`):
```bash ```bash
# Ensure .env has: PRIVATE_KEY, RPC_URL_138, DODO_PMM_INTEGRATION_ADDRESS, DODO_PMM_PROVIDER_ADDRESS # Ensure .env has: PRIVATE_KEY, RPC_URL_138, DODO_PMM_INTEGRATION_ADDRESS, DODO_PMM_PROVIDER_ADDRESS
# Create all c* vs c* pools and register with provider (and optionally c* vs official USDT/USDC) # Create all c* vs c* pools and register with provider
# (plus optional c* vs official USDT/USDC and c* vs WETH)
./scripts/create-pmm-full-mesh-chain138.sh ./scripts/create-pmm-full-mesh-chain138.sh
# Only c* vs c* (no official USDT/USDC pairs) # Only c* vs c* (no official USDT/USDC pairs)
MESH_ONLY_C_STAR=1 ./scripts/create-pmm-full-mesh-chain138.sh MESH_ONLY_C_STAR=1 ./scripts/create-pmm-full-mesh-chain138.sh
# Keep official pairs but disable c* vs WETH
MESH_INCLUDE_WETH=0 ./scripts/create-pmm-full-mesh-chain138.sh
# Keep c* vs WETH but disable official USDT/WETH and USDC/WETH
MESH_INCLUDE_OFFICIAL_WETH=0 ./scripts/create-pmm-full-mesh-chain138.sh
# Preview only (no transactions) # Preview only (no transactions)
DRY_RUN=1 ./scripts/create-pmm-full-mesh-chain138.sh DRY_RUN=1 ./scripts/create-pmm-full-mesh-chain138.sh
``` ```
@@ -48,7 +59,7 @@ DRY_RUN=1 ./scripts/create-pmm-full-mesh-chain138.sh
- Pools are created empty. Add liquidity per pool via `DODOPMMIntegration.addLiquidity(pool, baseAmount, quoteAmount)`. - Pools are created empty. Add liquidity per pool via `DODOPMMIntegration.addLiquidity(pool, baseAmount, quoteAmount)`.
- See [PMM_POOLS_FUNDING_PLAN.md](PMM_POOLS_FUNDING_PLAN.md) and [ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md](ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md). - See [PMM_POOLS_FUNDING_PLAN.md](PMM_POOLS_FUNDING_PLAN.md) and [ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md](ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md).
- For the full mesh, prioritize funding the most-used pairs (e.g. cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC, then other c* vs c* and c* vs official). - For the full mesh, prioritize funding the most-used pairs (e.g. cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC, cUSDT/WETH, cUSDC/WETH, USDT/WETH, USDC/WETH, then other c* vs c* and c* vs official/c* vs WETH).
### 1.5 Allowlist sync with mesh (MCP/AI) ### 1.5 Allowlist sync with mesh (MCP/AI)

View File

@@ -71,19 +71,32 @@ forge script script/DeployTransactionMirror.s.sol:DeployTransactionMirror \
- Save the logged TransactionMirror address to `smom-dbis-138/.env` as `TRANSACTION_MIRROR_ADDRESS`. - Save the logged TransactionMirror address to `smom-dbis-138/.env` as `TRANSACTION_MIRROR_ADDRESS`.
### Step 2: Create PMM pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) ### Step 2: Create PMM pools (mesh-first; legacy three as minimum)
Use **Core RPC only** (no Public fallback). Either use the combined script (Step 2a) or run each pool script (Step 2b). Use **Core RPC only** (no Public fallback). Preferred is full mesh creation; use legacy three-pool flow as minimum fallback.
**2a) Combined (TransactionMirror + cUSDT/cUSDC pool only):** **2a) Preferred — full mesh on Chain 138:**
```bash
cd smom-dbis-138
# Creates c* vs c*; optional c* vs official USDT/USDC; optional c* vs WETH; optional official vs WETH.
./scripts/create-pmm-full-mesh-chain138.sh
# Optional flags:
# MESH_ONLY_C_STAR=1
# MESH_INCLUDE_WETH=0
# MESH_INCLUDE_OFFICIAL_WETH=0
```
**2b) Combined (TransactionMirror + cUSDT/cUSDC pool only):**
```bash ```bash
./scripts/deployment/deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh ./scripts/deployment/deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh
``` ```
This deploys TransactionMirror then creates **only** the cUSDT/cUSDC pool. For the other two pools use 2b. This deploys TransactionMirror then creates **only** the cUSDT/cUSDC pool. For minimum legacy completion use 2c.
**2b) Create each pool manually** (e.g. after 2a, or if mirror already deployed): **2c) Create each legacy pool manually** (e.g. after 2b, or if mirror already deployed):
```bash ```bash
cd smom-dbis-138 cd smom-dbis-138
@@ -118,7 +131,7 @@ forge script script/liquidity/DeployDODOPMMProvider.s.sol:DeployDODOPMMProvider
--rpc-url "$RPC_URL_138" --broadcast --private-key "$PRIVATE_KEY" --with-gas-price "$GAS_PRICE" --rpc-url "$RPC_URL_138" --broadcast --private-key "$PRIVATE_KEY" --with-gas-price "$GAS_PRICE"
``` ```
Save the logged address as `DODO_PMM_PROVIDER_ADDRESS` in `.env`. Then, for each pool (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC), call: Save the logged address as `DODO_PMM_PROVIDER_ADDRESS` in `.env`. Then register each created pool (legacy three at minimum, full mesh when used):
```solidity ```solidity
provider.registerPool(tokenIn, tokenOut, poolAddress); provider.registerPool(tokenIn, tokenOut, poolAddress);
@@ -147,7 +160,7 @@ After any new deployment:
./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL] ./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL]
``` ```
Target: all expected addresses (e.g. 38/38 when TransactionMirror and DODO cUSDT/cUSDC pool are present). Update [REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md](REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md) and [CONTRACT_ADDRESSES_REFERENCE.md](../11-references/CONTRACT_ADDRESSES_REFERENCE.md) with new pool and provider addresses. Target: all expected addresses (e.g. 59/59 per check-contracts-on-chain-138.sh when TransactionMirror, DODO pools, vault/reserve, and CompliantFiatTokens are present). Update [REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md](REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md) and [CONTRACT_ADDRESSES_REFERENCE.md](../11-references/CONTRACT_ADDRESSES_REFERENCE.md) with new pool and provider addresses.
--- ---

View File

@@ -3,7 +3,9 @@
**Last Updated:** 2026-03-04 **Last Updated:** 2026-03-04
**Purpose:** Ordered list of remaining deployments to achieve **maximum effective execution across all networks** (13-chain hub model: Chain 138 + 12 edge/alt). Use after [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST](../00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) and [DEPLOYMENT_ORDER_OF_OPERATIONS](DEPLOYMENT_ORDER_OF_OPERATIONS.md). **Purpose:** Ordered list of remaining deployments to achieve **maximum effective execution across all networks** (13-chain hub model: Chain 138 + 12 edge/alt). Use after [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST](../00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) and [DEPLOYMENT_ORDER_OF_OPERATIONS](DEPLOYMENT_ORDER_OF_OPERATIONS.md).
**Routing context:** [routing-matrix-13x13.json](../../smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json) — 138↔Celo (42220) **B/SBS** (CCIP bridges deployed 2026-03-04); 138↔Wemix (1111) **TBD** (deployer needs 0.4 WEMIX). Full coverage = all 13 chains with bridge + liquidity where designed. **Routing context:** [routing-matrix-13x13.json](../../smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json) — 138↔Celo (42220) **B/SBS** (CCIP bridges deployed 2026-03-04); 138↔Wemix (1111) **Tabled** (see below). Full coverage = all 13 chains with bridge + liquidity where designed.
**Wemix (1111) tabled:** There is no in-repo route (aggregator/DEX integration) to swap ETH, BNB, or Polygon to WEMIX. Deployer needs ~0.4 WEMIX for gas to deploy CCIP bridges on Wemix. Until an automated route exists or WEMIX is acquired manually (e.g. [SwapSpace](https://swapspace.co/exchange-pairs/wemix-bnb), [ChangeNOW](https://changenow.io/currencies/wemix-main/polygon-matic)), **all Wemix network deployments are tabled**. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md).
--- ---
@@ -11,12 +13,13 @@
| Phase | Step | Status | Notes | | Phase | Step | Status | Notes |
|-------|------|--------|-------| |-------|------|--------|-------|
| A | A.1 Mint cUSDT/cUSDC (138) | ⚠️ Blocked | Mint script now uses `GAS_PRICE_138`; with 500 gwei first tx accepted but confirmation times out while block production is stalled. When blocks advance, run `mint-for-liquidity.sh` (use `GAS_PRICE_138=500000000000` if “Replacement transaction underpriced”). | | A | A.1 Mint cUSDT/cUSDC (138) | ✅ Done (2026-03-04) | Minted via `mint-for-liquidity.sh` using `GAS_PRICE_138=500000000000`; cUSDT/cUSDC mints confirmed at blocks 2551250/2551251/2551253/2551254. |
| A | A.2 Add liquidity PMM (138) | ⏳ Pending | After A.1 succeeds; run `mint-for-liquidity.sh --add-liquidity` or AddLiquidityPMMPoolsChain138. | | A | A.2 Add liquidity PMM (138) | ⚠️ Partial (2026-03-04) | `mint-for-liquidity.sh --add-liquidity` executed and added liquidity to cUSDT/cUSDC pool `0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8`; later checks indicate funding state must be re-verified before proceeding. |
| B | B.1 Celo CCIP bridges | ✅ Done | Deployed; 0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04 (WETH9), 0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08 (WETH10); .env updated; complete-config Celo→138 OK. | | B | B.1 Celo CCIP bridges | ✅ Done | Deployed; 0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04 (WETH9), 0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08 (WETH10); .env updated; complete-config Celo→138 OK. |
| B | B.2 Wemix CCIP bridges | ⏳ Blocked | Deployer 0 WEMIX; need 0.4 WEMIX then run `deploy-bridges-config-ready-chains.sh wemix`. | | B | **B.2a Add Cronos (25)** | ⏳ Pending | Fund deployer with ~15 CRO ([acquire-cro-and-wemix-gas.sh](../../scripts/deployment/acquire-cro-and-wemix-gas.sh)); set CRONOS_RPC, CCIP_ROUTER_CRONOS, WETH9_CRONOS, WETH10_CRONOS in .env; run `deploy-bridges-config-ready-chains.sh cronos` then `complete-config-ready-chains.sh`. |
| B | B.2b Wemix CCIP bridges | 📋 Tabled | No route to acquire WEMIX from ETH/BNB/POLY in-repo; tabled until route exists or manual acquisition. Fund ~0.4 WEMIX ([acquire-cro-and-wemix-gas.sh](../../scripts/deployment/acquire-cro-and-wemix-gas.sh)); then `deploy-bridges-config-ready-chains.sh wemix` + complete-config. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). |
| B | **Gnosis CCIP bridges** | ✅ Done (2026-03-04) | Deployed: WETH9 `0x4ab39b5BaB7b463435209A9039bd40Cf241F5a82`, WETH10 `0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44`; .env updated. | | B | **Gnosis CCIP bridges** | ✅ Done (2026-03-04) | Deployed: WETH9 `0x4ab39b5BaB7b463435209A9039bd40Cf241F5a82`, WETH10 `0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44`; .env updated. |
| B | B.3 Fund CCIP with LINK | ⏳ Ready | Run `fund-ccip-bridges-with-link.sh` (dry-run done). | | B | B.3 Fund CCIP with LINK | ⏳ Blocked | `scripts/deployment/fund-ccip-bridges-with-link.sh` run (2026-03-04): many lanes failing with insufficient LINK or gas, Chain 138 Invalid params; top up LINK balances and gas on each chain before retry. |
| C | C.1C.2 cW* + edge pools | 📋 Runbook | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md). | | C | C.1C.2 cW* + edge pools | 📋 Runbook | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md). |
| D | D.1D.4 Optional XAU/vaults/trustless | 📋 Checklist | [PHASE_D_OPTIONAL_CHECKLIST.md](PHASE_D_OPTIONAL_CHECKLIST.md). | | D | D.1D.4 Optional XAU/vaults/trustless | 📋 Checklist | [PHASE_D_OPTIONAL_CHECKLIST.md](PHASE_D_OPTIONAL_CHECKLIST.md). |
@@ -41,9 +44,9 @@
| Area | Status | | Area | Status |
|------|--------| |------|--------|
| Chain 138 core + PMM | 38/38 contracts; DODOPMMIntegration + 3 pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) created; DODOPMMProvider deployed. | | Chain 138 core + PMM | 59/59 contracts (check-contracts-on-chain-138.sh); DODOPMMIntegration + 3 pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) created; DODOPMMProvider deployed. |
| Chain 138 liquidity | **0** in pools — deployer WETH/cUSDT/cUSDC = 0; add liquidity blocked until mint/fund. | | Chain 138 liquidity | **Re-verify required** — prior run reported cUSDT/cUSDC liquidity add; this checklist previously showed zero liquidity. Treat liquidity state as unknown until reconfirmed on-chain. |
| CCIP 138 → 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220 (Celo)** | Configured (B/SBS). Celo CCIP bridges deployed 2026-03-04; Gnosis, Cronos config-ready; Wemix (1111) **TBD** (need 0.4 WEMIX). | | CCIP 138 → 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220 (Celo)** | Configured (B/SBS). Celo CCIP bridges deployed 2026-03-04; Gnosis, Cronos config-ready; Wemix (1111) **Tabled** (no ETH/BNB/POLY→WEMIX route; see [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md)). |
| Alltra 138 ↔ 651940 | ALT path live. | | Alltra 138 ↔ 651940 | ALT path live. |
| cW* on public chains | Addresses in .env / design; **deployment-status.json empty** — no cW* pool addresses. | | cW* on public chains | Addresses in .env / design; **deployment-status.json empty** — no cW* pool addresses. |
| LINK for CCIP | Fund bridges per lane so cross-chain messages execute. | | LINK for CCIP | Fund bridges per lane so cross-chain messages execute. |

View File

@@ -19,7 +19,7 @@
## On-chain verification (Chain 138) ## On-chain verification (Chain 138)
**Last run (2026-03-01):** `./scripts/verify/check-contracts-on-chain-138.sh` (use Core RPC URL or run from LAN). **Last run (2026-03-01):** `./scripts/verify/check-contracts-on-chain-138.sh` (use Core RPC URL or run from LAN).
**Result:** **38 present, 0 missing** (38 addresses). TransactionMirror: `0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc`. DODO cUSDT/cUSDC pool: `0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8` (created). **DeployCompliantFiatTokens** was run 2026-02-27 (10 tokens: cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT); see [CHAIN138_TOKEN_ADDRESSES](../11-references/CHAIN138_TOKEN_ADDRESSES.md). **Result:** **59 present, 0 missing** (59 addresses per check-contracts-on-chain-138.sh; list expanded 2026-03-06). TransactionMirror: `0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc`. DODO cUSDT/cUSDC pool: `0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8` (created). **DeployCompliantFiatTokens** was run 2026-02-27 (10 tokens: cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT); see [CHAIN138_TOKEN_ADDRESSES](../11-references/CHAIN138_TOKEN_ADDRESSES.md).
--- ---
@@ -39,4 +39,4 @@
1. Optional: `./scripts/clear-all-transaction-pools.sh` then wait 60s if nonce stuck. 1. Optional: `./scripts/clear-all-transaction-pools.sh` then wait 60s if nonce stuck.
2. `./scripts/deployment/deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh` (Core RPC only; checks nonce, RPC, gas; deploys mirror then pool). 2. `./scripts/deployment/deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh` (Core RPC only; checks nonce, RPC, gas; deploys mirror then pool).
3. Set `TRANSACTION_MIRROR_ADDRESS` in `smom-dbis-138/.env` to the logged address. 3. Set `TRANSACTION_MIRROR_ADDRESS` in `smom-dbis-138/.env` to the logged address.
4. `./scripts/verify/check-contracts-on-chain-138.sh` (pass Core RPC URL or use RPC_URL_138) — target 38 present when both confirmed. 4. `./scripts/verify/check-contracts-on-chain-138.sh` (pass Core RPC URL or use RPC_URL_138) — target 59 present when both confirmed (run check-contracts-on-chain-138.sh).

View File

@@ -85,7 +85,7 @@ This checklist covers: **testing** anything not yet deployed, **checking deploye
- [ ] **4.3** **TransactionMirror (Chain 138):** Deploy with `forge script script/DeployTransactionMirror.s.sol:DeployTransactionMirror --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY --with-gas-price 1000000000`. If you see "Known transaction", the tx may be pending or already mined; check code at the logged address. Then test mirror receive path. - [ ] **4.3** **TransactionMirror (Chain 138):** Deploy with `forge script script/DeployTransactionMirror.s.sol:DeployTransactionMirror --rpc-url $RPC_URL_138 --broadcast --private-key $PRIVATE_KEY --with-gas-price 1000000000`. If you see "Known transaction", the tx may be pending or already mined; check code at the logged address. Then test mirror receive path.
- [ ] **4.4** **EnhancedSwapRouter:** Not deployed. When Uniswap/Balancer pools exist on 138, run deploy script with `--dry-run` and test quote path. - [ ] **4.4** **EnhancedSwapRouter:** Not deployed. When Uniswap/Balancer pools exist on 138, run deploy script with `--dry-run` and test quote path.
- [ ] **4.5** **cW* tokens and PMM pools on public chains (1, 56, 137, etc.):** No addresses in deployment-status. No deployment from this repo yet. When you have a deployment path (bridge + factory or DODO), run gas estimate and dry-run per chain. - [ ] **4.5** **cW* tokens and PMM pools on public chains (1, 56, 137, etc.):** No addresses in deployment-status. No deployment from this repo yet. When you have a deployment path (bridge + factory or DODO), run gas estimate and dry-run per chain.
- [x] **4.6** **On-chain verification (38 addresses):** After any new deployment, run: - [x] **4.6** **On-chain verification (59 addresses; check-contracts-on-chain-138.sh):** After any new deployment, run:
```bash ```bash
./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL] ./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL]
``` ```

View File

@@ -0,0 +1,37 @@
# Wemix (1111) deployments — tabled
**Last Updated:** 2026-03-06
**Status:** All Wemix network deployments (CCIP bridges, config, LINK funding on 1111) are **tabled** until the deployer can acquire WEMIX for gas.
---
## Reason
- Deployer needs **~0.4 WEMIX** (native gas) on chain 1111 to deploy and configure CCIP bridges.
- There is **no in-repo route** (aggregator/DEX integration or script) to swap **ETH**, **BNB**, or **Polygon (POL)** to WEMIX.
- [TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER](../11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md) lists Wemix as “Bridge/DEX” only — i.e. manual acquisition.
---
## Options to un-table
1. **Manual acquisition:** Use a third-party aggregator (e.g. [SwapSpace](https://swapspace.co/exchange-pairs/wemix-bnb), [ChangeNOW](https://changenow.io/currencies/wemix-main/polygon-matic)) to swap ETH/BNB/POL to WEMIX and send to the deployer address on 1111. Then run `deploy-bridges-config-ready-chains.sh wemix` and complete-config.
2. **In-repo route:** Implement or integrate an aggregator/DEX route (e.g. LiFi, Jumper, or chain 1111 DEX) that can swap ETH/BNB/POLY → WEMIX and credit the deployer; then document and run the same deploy/config steps. Placeholder script: `scripts/deployment/wemix-acquire-via-lifi.js` (outputs manual instructions and deployer address; extend when LiFi/Jumper support 1111).
**Deployer gas auto-route:** The orchestrator `./scripts/deployment/deployer-gas-auto-route.sh` includes Wemix (1111): when run, it prints manual instructions and links for WEMIX acquisition. See [DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md](DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md).
---
## What remains tabled
- B.2 Wemix CCIP bridges (`deploy-bridges-config-ready-chains.sh wemix`, complete-config 138↔1111).
- Any Phase C/D work that depends on Wemix (cW* or edge pools on 1111).
- Wemix token verification and production use until bridges are deployed.
---
## References
- [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) — Phase B.2, routing context.
- [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) — steps when Wemix is un-tabled.
- [WEMIX_TOKEN_VERIFICATION.md](../07-ccip/WEMIX_TOKEN_VERIFICATION.md) — token addresses on scan.wemix.com.

View File

@@ -34,7 +34,8 @@
- **Source:** Existing `token_transfers` (and ERC-721/1155 logs when indexed). - **Source:** Existing `token_transfers` (and ERC-721/1155 logs when indexed).
- **Mapping:** For each row: insert into `activity_events` with `event_type = 'TRANSFER'`, `actor = from_address`, `subject = to_address` (or token id for NFT), `data = { from, to, value, tokenContract }`, `contract_address = token_contract`. `routing` = NULL for same-chain transfers. - **Mapping:** For each row: insert into `activity_events` with `event_type = 'TRANSFER'`, `actor = from_address`, `subject = to_address` (or token id for NFT), `data = { from, to, value, tokenContract }`, `contract_address = token_contract`. `routing` = NULL for same-chain transfers.
- **Backfill:** One-time or periodic job: `INSERT INTO activity_events (...) SELECT ... FROM token_transfers WHERE NOT EXISTS (...)`. - **Backfill:** Migration `0015_activity_events_backfill_from_token_transfers.up.sql` runs a one-time `INSERT ... SELECT` from `token_transfers` with `ON CONFLICT DO NOTHING`. Run after 0014.
- **Real-time:** The Track 2 token indexer (`explorer-monorepo/backend/indexer/track2/token_indexer.go`) inserts into `activity_events` on each new token transfer (same row as `token_transfers`), so the feed stays current without a separate job.
### 2.2 App events ### 2.2 App events
@@ -52,13 +53,22 @@
## 3. Activity feed API ## 3. Activity feed API
**Endpoint:** `GET /api/v1/track2/activity` (Track 2 auth required). Implemented in `explorer-monorepo/backend/api/track2/endpoints.go` (`HandleActivityFeed`).
**Query params:**
- `address` — filter by actor or subject (user feed).
- `event_type` — filter by event type (e.g. `TRANSFER`, `APP_ACTION`).
- `chain_id` — filter by chain (default: server chain).
- `page`, `limit` (default 50, max 100) — pagination.
**Queries:** **Queries:**
- **By user:** `WHERE actor = $address OR subject = $address` (paginated). - **By user:** `address=0x...``WHERE actor = $address OR subject = $address` (paginated).
- **By token/NFT:** `WHERE subject = $tokenId` or `WHERE contract_address = $token AND data->>'tokenId' = $tokenId` (paginated). - **By token/NFT:** Use `event_type=TRANSFER` and `contract_address` or filter client-side by `data.tokenContract` / `data.tokenId`.
- **Global:** `WHERE event_type IN (...)` with pagination by `(block_timestamp DESC, id DESC)`. - **Global:** Omit `address`; optional `event_type`; pagination by `(block_timestamp DESC, id DESC)`.
**Pagination:** Cursor-based using `(block_timestamp, id)`; limit e.g. 50 per page. **Pagination:** Page/limit (offset-based); limit 50 per page, max 100.
**Example (by user):** **Example (by user):**
@@ -83,9 +93,9 @@ LIMIT 50 OFFSET $2;
--- ---
## 5. Migration ## 5. Migrations
- **Up:** [0014_activity_events.up.sql](../../explorer-monorepo/backend/database/migrations/0014_activity_events.up.sql) - **0014 — table:** [0014_activity_events.up.sql](../../explorer-monorepo/backend/database/migrations/0014_activity_events.up.sql) (down: `0014_activity_events.down.sql`).
- **Down:** `0014_activity_events.down.sql` - **0015 — backfill:** [0015_activity_events_backfill_from_token_transfers.up.sql](../../explorer-monorepo/backend/database/migrations/0015_activity_events_backfill_from_token_transfers.up.sql): one-time backfill from `token_transfers`; down is no-op.
Run with your existing migration runner (e.g. golang-migrate, node-pg-migrate) against the explorer/backend DB. Run with your existing migration runner (e.g. golang-migrate, node-pg-migrate) against the explorer/backend DB.

View File

@@ -0,0 +1,96 @@
# Additional Paths and Extensions
**Last Updated:** 2026-03-06
**Purpose:** Catalog of path types and extension points for routing, bridging, and deployer gas. Use this when adding new chains, assets, or aggregators.
---
## 1. Routing registry (`config/routing-registry.json`)
- **Outbound (138 → dest):** WETH9, WETH10, LINK placeholder. Path types: `CCIP`, `ALT`.
- **Inbound (dest → 138):** One route per CCIP chain (1, 56, 137, 10, 42161, 43114, 8453, 100, 25, 42220, 1111). `bridgeAddress` for inbound is the **source-chain** bridge (user sends there); use `.env` per chain (e.g. `MAINNET_CCIP_WETH9_BRIDGE`) to replace placeholder `0x0`.
- **pathTypes:** `ALT`, `CCIP`, `LIFI`, `JUMPER` (LIFI/JUMPER for future aggregator integration).
**To add a path:** Append a `routes` entry with `fromChain`, `toChain`, `asset`, `pathType`, `bridgeAddress`, `bridgeChainId`, `label`. Optionally `note`.
---
## 2. Token-aggregation bridge config (`smom-dbis-138/services/token-aggregation/src/config/cross-chain-bridges.ts`)
- **Registry:** `getRouteFromRegistry(fromChain, toChain, asset)` now loads `config/routing-registry.json` when available (env `ROUTING_REGISTRY_JSON_PATH` or resolved paths). Falls back to built-in ALT/CCIP logic.
- **Lanes:** `CHAIN_138_BRIDGES` CCIP WETH9/WETH10 lanes include all CCIP destinations: 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, 42220, 1111, 651940 (selectors in code).
- **pathType:** `RoutingRegistryEntry.pathType` supports `ALT | CCIP | LIFI | JUMPER`.
**To add a chain to lanes:** Add an entry to `CCIP_DEST_LANES` with correct `destSelector` (from Chainlink CCIP docs).
---
## 3. Token mapping (`config/token-mapping-multichain.json`)
- **Pairs:** 138↔651940, 138↔public chains, 651940↔public; **138↔42793 (Etherlink)** added with WETH9, cUSDT, cUSDC, LINK (addressTo placeholders until bridge/relay).
- **chainNames:** Includes 42793 "Etherlink".
**To add a chain pair:** Add to `chainNames` and add a `pairs` entry with `fromChainId`, `toChainId`, `tokens[]` (key, name, addressFrom, addressTo, notes).
---
## 4. Quote / bridge API (`smom-dbis-138/orchestration/bridge/quote-service.ts`)
- **Route options:** `getRouteOptions()` now includes LiFi and Jumper when `LIFI_ENABLED`/`LIFI_API_URL` or `JUMPER_ENABLED`/`JUMPER_API_URL` are set. Placeholder implementations return a route with `provider: 'lifi'` or `'jumper'` (real API calls TODO).
- **pathType:** Route selection can expose pathType from registry for UI (ALT, CCIP, LIFI, JUMPER).
**To wire LiFi/Jumper:** Implement API calls in `getLiFiRoute` / `getJumperRoute` using env URLs; ensure 138 and destination chain are supported by the aggregator.
---
## 5. Same-chain (138) swap paths
- **Current:** DODO PMM cUSDT/cUSDC pool; token-aggregation quotes single-hop.
- **Possible additions:** c*↔WETH pool on 138; N-hop pathfinding (e.g. cUSDT→WETH→USDC); EnhancedSwapRouter deployment and wiring for size-based routing.
**Docs:** [EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md](../00-meta/EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md), [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](../03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md).
---
## 6. Deployer gas (`config/deployer-gas-routes.json`, `config/cro-wemix-swap-routes.json`)
- **Chains:** 138 (internal), 1, 56, 137, 100, 10, 42161, 8453, 43114, 25 (manual), 42220, 1111 (manual), 651940 (manual), **42793 Etherlink (manual, optional)**.
- **Cronos/Wemix:** Multiple swap routes in `cro-wemix-swap-routes.json`; script `scripts/deployment/acquire-cro-and-wemix-gas.sh`.
**To add a chain:** Add entry in `deployer-gas-routes.json` with `chainId`, `name`, `nativeSymbol`, `thresholdEther`, `method` (internal | protocolink | manual), and if manual: `manualInstructions`, `manualLinks`, optional `swapRoutesConfig`.
---
## 7. 13×13 routing matrix (`smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json`)
- **Chains:** 138, 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, 42220, 1111, 651940.
- **Modes:** B/SBS, via 138, ALT, TBD, —. Celo (42220) set to B/SBS (2026-03-06); Wemix (1111) remains TBD until bridge funded.
**To add a chain to the matrix:** Extend `chainIndex` and `chainNames`, and add row/column in `matrix` with appropriate mode (B/SBS when CCIP live, TBD otherwise).
---
## 8. Environment variables (summary)
| Variable | Purpose |
|----------|---------|
| `ROUTING_REGISTRY_JSON_PATH` | Override path to routing-registry.json (token-aggregation). |
| `LIFI_ENABLED`, `LIFI_API_URL` | Enable LiFi route option in QuoteService. |
| `JUMPER_ENABLED`, `JUMPER_API_URL` | Enable Jumper route option in QuoteService. |
| Per-chain CCIP bridge | e.g. `CCIPWETH9_BRIDGE_GNOSIS`, `CCIPWETH9_BRIDGE_CELO` — used by complete-config and for inbound registry addresses. |
See `smom-dbis-138/env.additions.example` for full list.
---
## 9. Quick reference: where to add what
| Goal | Primary file(s) | Action |
|------|-----------------|--------|
| New outbound bridge route 138→X | `config/routing-registry.json` | Add route; optional WETH10/LINK. |
| New inbound route X→138 | `config/routing-registry.json` | Add route; set bridgeAddress from .env for source chain. |
| New pathType (e.g. LIFI) | `routing-registry.json` + `cross-chain-bridges.ts` (pathType type) + quote-service | Add pathType; implement getXRoute in quote-service. |
| New CCIP destination lane | `cross-chain-bridges.ts` | Add to `CCIP_DEST_LANES` with selector. |
| New token-mapping chain pair | `config/token-mapping-multichain.json` | Add chainNames + pairs entry. |
| New deployer gas chain | `config/deployer-gas-routes.json` | Add chain entry; optional cro-wemix style JSON + script. |
| Update 13×13 matrix | `smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json` | Update matrix + description. |

View File

@@ -0,0 +1,58 @@
# DBIS PostgreSQL HA Pair Runbook
## Topology
- Primary writer: `192.168.11.105` (CT `10100`)
- Replica reader: `192.168.11.106` (CT `10101`)
- Proxmox host: `192.168.11.11`
- Database: `dbis_core`
## Why this matters
- Writes must go to exactly one primary.
- Reads/indexing should prefer replica.
- If both nodes are writable, split-brain risk is high.
## 1) Convert to true HA (streaming replica)
Use once to enforce primary/replica:
```bash
cd /home/intlc/projects/proxmox
REPL_PASSWORD='<replication-password>' \
scripts/database/convert-dbis-postgres-to-ha.sh
```
## 2) Verify HA health
```bash
cd /home/intlc/projects/proxmox
DB_PASSWORD='<db-password>' \
scripts/database/check-dbis-postgres-ha.sh
```
Expected:
- `192.168.11.105`: `pg_is_in_recovery = f`
- `192.168.11.106`: `pg_is_in_recovery = t`
- Replica write test fails with read-only transaction error.
## 3) Correct connection policy
- Application writes: `192.168.11.105:5432`
- Read-only APIs/indexers: `192.168.11.106:5432`
- Admin checks:
- Primary replication status:
- `sudo -u postgres psql -Atc "select client_addr,state,sync_state from pg_stat_replication;"`
- Replica recovery status:
- `sudo -u postgres psql -Atc "select pg_is_in_recovery();"`
## 4) Explorer label/indexing publishing
- Publish labels/tags to primary only (`192.168.11.105`).
- Replica receives updates via WAL streaming automatically.
- Do not run dual-write mode when streaming replication is healthy.
## 5) Optional hardening
- Add VIP (keepalived/HAProxy) for stable writer endpoint.
- Enable synchronous replication if zero-data-loss failover is required.
- Add scheduled health checks + failover playbook.
## 6) Notes on rsync
- Do not use rsync for live PostgreSQL data directories.
- Use streaming replication for live sync.
- Use rsync only for ancillary files/runbooks/backups, not active PG data.

View File

@@ -35,7 +35,7 @@ Both **relay** and **token-aggregation** load **`smom-dbis-138/.env`** first (si
| File | Purpose | Key variables | | File | Purpose | Key variables |
|------|---------|----------------| |------|---------|----------------|
| **`services/token-aggregation/.env.example`** | Reference only; prefer vars in **smom-dbis-138/.env** | `CHAIN_138_RPC_URL` (or `RPC_URL_138`), `CHAIN_651940_RPC_URL`, `DATABASE_URL`, `COINGECKO_*`, `CHAIN_138_DODO_PMM_INTEGRATION`, etc. | | **`services/token-aggregation/.env.example`** | Reference only; prefer vars in **smom-dbis-138/.env** | `CHAIN_138_RPC_URL` (or `RPC_URL_138`), `CHAIN_651940_RPC_URL`, `DATABASE_URL`, `COINGECKO_*`, `CHAIN_138_DODO_PMM_INTEGRATION`. Optional: `ROUTING_REGISTRY_JSON_PATH` (override path to config/routing-registry.json). For bridge quote API (QuoteService): `LIFI_ENABLED`, `LIFI_API_URL`, `JUMPER_ENABLED`, `JUMPER_API_URL` (see smom-dbis-138/env.additions.example). |
| **`services/token-aggregation/.env`** | Optional overrides | Only if you need service-specific overrides | | **`services/token-aggregation/.env`** | Optional overrides | Only if you need service-specific overrides |
| **`services/relay/.env`** | Optional overrides | Relay already loads **smom-dbis-138/.env** first | | **`services/relay/.env`** | Optional overrides | Relay already loads **smom-dbis-138/.env** first |
| **`services/relay/.env.local`** | Optional overrides | **Do not commit** if it contains relayer private key; prefer **smom-dbis-138/.env** (PRIVATE_KEY or RELAYER_PRIVATE_KEY) | | **`services/relay/.env.local`** | Optional overrides | **Do not commit** if it contains relayer private key; prefer **smom-dbis-138/.env** (PRIVATE_KEY or RELAYER_PRIVATE_KEY) |

View File

@@ -0,0 +1,64 @@
# E2E DNS from LAN (no public DNS) runbook
When the E2E domain sweep runs from a machine where `*.sankofa.nexus`, `*.d-bis.org`, etc. do not resolve (e.g. no Cloudflare/split-horizon DNS, no VPN), all tests fail at DNS (`Could not resolve host`). This runbook gives three ways to unblock.
## Option 1: Temporary `/etc/hosts` (recommended for this machine)
Use the generated hosts file so this machine resolves all E2E hostnames to the LAN proxy (NPMplus).
1. **Append E2E hosts to `/etc/hosts`** (from repo root):
```bash
sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d)
cat config/e2e-hosts-append.txt | sudo tee -a /etc/hosts
```
Or generate fresh:
```bash
./scripts/verify/generate-e2e-hosts.sh | sudo tee -a /etc/hosts
```
2. **Run E2E using the system resolver** (so `getent`/hosts are used instead of `dig @8.8.8.8`):
```bash
E2E_USE_SYSTEM_RESOLVER=1 ./scripts/verify/verify-end-to-end-routing.sh
```
3. **Revert when done** (optional): run the dedicated script to remove the E2E block:
```bash
sudo ./scripts/verify/remove-e2e-hosts-from-etc-hosts.sh
```
Or restore from backup: `sudo cp /etc/hosts.bak.YYYYMMDD /etc/hosts`
**Mappings used:** Most domains → NPMplus primary `192.168.11.167`. Gitea/dev/codespaces → NPMplus Fourth `192.168.11.170`. Proxmox UI → `pve.ml110` (`.10`), `pve.r630-01` (`.11`), `pve.r630-02` (`.12`). See `config/ip-addresses.conf` and `scripts/verify/generate-e2e-hosts.sh`.
## Option 2: Working DNS path to `*.sankofa.nexus` (and other zones)
- **Cloudflare:** Ensure the zones (e.g. `sankofa.nexus`, `d-bis.org`) have A/CNAME records pointing to the correct public IPs (e.g. `76.53.10.36` for main NPMplus, `76.53.10.40` for Fourth). Then from any machine with internet, DNS will resolve and E2E can use the default `dig @8.8.8.8` (no `/etc/hosts` or `E2E_USE_SYSTEM_RESOLVER`).
- **Split-horizon / internal DNS:** If you have an internal DNS server that serves these names (e.g. Pi-hole, dnsmasq) with the same mappings as `e2e-hosts-append.txt`, point this machines resolver to it and run E2E normally (or with `ACCEPT_ANY_DNS=1` if resolved IPs differ from `PUBLIC_IP`).
- **VPN:** If a VPN makes these hostnames resolve (e.g. via internal DNS), connect and run E2E; you may need `ACCEPT_ANY_DNS=1` if the VPN resolves to private IPs.
## Option 3: Bastion / jump host
Run the E2E sweep from a host where the domains already resolve and are reachable (e.g. a VM on the same LAN that has `/etc/hosts` or internal DNS, or a jump host that uses the right resolver). Copy the repo (or mount it), then:
```bash
# On bastion (with /etc/hosts or DNS already set)
cd /path/to/proxmox
E2E_USE_SYSTEM_RESOLVER=1 ./scripts/verify/verify-end-to-end-routing.sh
```
No need to change the script if the bastions resolver returns the correct IPs.
## Summary
| Goal | Action |
|-----------------------------|------------------------------------------------------------------------|
| Run E2E on this machine now | Use Option 1: append `config/e2e-hosts-append.txt` to `/etc/hosts`, then `E2E_USE_SYSTEM_RESOLVER=1 ./scripts/verify/verify-end-to-end-routing.sh` |
| Fix DNS for everyone | Option 2: Configure Cloudflare or internal DNS for the E2E hostnames |
| Run E2E from another host | Option 3: Use a bastion/jump host that already resolves the domains |
## References
- E2E script: `scripts/verify/verify-end-to-end-routing.sh`
- Hosts generator: `scripts/verify/generate-e2e-hosts.sh`
- Hosts append file: `config/e2e-hosts-append.txt`
- Revert script: `scripts/verify/remove-e2e-hosts-from-etc-hosts.sh`
- IP source of truth: `config/ip-addresses.conf`

View File

@@ -141,3 +141,27 @@ After each run, the verification report includes:
Output directory: `docs/04-configuration/verification-evidence/e2e-verification-<timestamp>/` Output directory: `docs/04-configuration/verification-evidence/e2e-verification-<timestamp>/`
Files: `verification_report.md`, `all_e2e_results.json`, `*_https_headers.txt`, `*_rpc_response.txt`. Files: `verification_report.md`, `all_e2e_results.json`, `*_https_headers.txt`, `*_rpc_response.txt`.
## Known E2E warnings (public profile)
When running from outside LAN or when backends are down, the following endpoints commonly show **HTTPS warn** (not fail, due to `E2E_OPTIONAL_WHEN_FAIL`).
**These known items do not block contract or pool completion.** Fix when convenient; E2E still passes when they are in `E2E_OPTIONAL_WHEN_FAIL`.
| Endpoint | Typical cause |
|----------|----------------|
| dbis-admin.d-bis.org | 502 — backend (VMID 10130) unreachable from public |
| dbis-api.d-bis.org, dbis-api-2.d-bis.org | 502 — API backends (10150/10151) unreachable |
| secure.d-bis.org | 502 — secure portal backend unreachable |
| mifos.d-bis.org | 502 — Mifos (VMID 5800) unreachable from public |
| mim4u.org, www.mim4u.org, secure.mim4u.org, training.mim4u.org | 502 — MIM4U web backends (192.168.11.37:80); non-blocking for contract/pool |
| studio.sankofa.nexus | 404 — FusionAI Creator (VMID 7805) path or proxy config |
**WebSocket test-format warnings:** RPC WS tests may show "connection established but RPC test failed" when `wscat` is used: the upgrade succeeds but the scripts check for `"result"` in `wscat` output may miss due to output format or timing. Non-blocking for contract/pool. The script now also accepts Chain 138 chainId `0x8a` in output; WS connectivity is still confirmed by the upgrade (101).
### Remediation (when you want these to pass from public)
| Goal | Action |
|------|--------|
| **502s (dbis-admin, dbis-api, secure, mifos)** | From LAN: `./scripts/maintenance/address-all-remaining-502s.sh [--run-besu-fix] [--e2e]` or `./scripts/maintenance/run-all-maintenance-via-proxmox-ssh.sh --e2e`. If NPMplus API is unreachable: `./scripts/maintenance/fix-npmplus-services-via-proxmox-ssh.sh`. Runbook: [502_DEEP_DIVE_ROOT_CAUSES_AND_FIXES.md](../00-meta/502_DEEP_DIVE_ROOT_CAUSES_AND_FIXES.md). |
| **404 studio.sankofa.nexus** | Ensure backend (VMID 7805, 192.168.11.72:8000) is up and NPMplus proxy for `studio.sankofa.nexus` points to it. See [ALL_VMIDS_ENDPOINTS.md](ALL_VMIDS_ENDPOINTS.md), [SANKOFA_STUDIO_E2E_FLOW.md](../03-deployment/SANKOFA_STUDIO_E2E_FLOW.md), [SANKOFA_STUDIO_DEPLOYMENT.md](../03-deployment/SANKOFA_STUDIO_DEPLOYMENT.md). |

View File

@@ -1,8 +1,8 @@
# Remaining Items — Secrets in .env and Actions # Remaining Items — Secrets in .env and Actions
**Last Updated:** 2026-02-08 **Last Updated:** 2026-03-06
**Purpose:** Where to store secrets and what to run for each remaining next step. Check completion before running. **Purpose:** Where to store secrets and what to run for each remaining next step. Check completion before running.
**Run order:** [CONTINUE_AND_COMPLETE.md](../archive/00-meta-pruned/CONTINUE_AND_COMPLETE.md) (archived) — single checklist with commands in order. **Run order:** [EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md](../00-meta/EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md) (suggested order of execution); [NEXT_STEPS_LIST.md](../00-meta/NEXT_STEPS_LIST.md) (ordered next steps). **Audit:** [DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md](../00-meta/DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md).
--- ---

View File

@@ -0,0 +1,75 @@
# Thirdweb Insight — Blockchain Indexer
**Purpose:** Use [Thirdweb Insight](https://insight-api.thirdweb.com) (blockchain indexer) to query events, transactions, and token data via REST. This doc describes how to try it and wire it for Chain 138 and Alltra (651940).
**References:** [Insight API Reference](https://insight-api.thirdweb.com/reference), [Getting started](https://insight-api.thirdweb.com/), [Multichain queries](https://blog.thirdweb.com/changelog/multichain-queries-with-insight-api).
---
## 1. What Insight provides
- **Events** — Query contract events (with optional decoding).
- **Transactions** — Get transaction status and list with filters.
- **Tokens** — ERC-20 / ERC-721 / ERC-1155 balances and metadata.
- **Base URL:** `https://<chain-id>.insight.thirdweb.com`
- **Auth:** Your Thirdweb **Client ID** in header `x-client-id` (or query `clientId`).
---
## 2. Try it from this repo
**Prereq:** `THIRDWEB_SECRET_KEY` or `THIRDWEB_CLIENT_ID` in env — e.g. from `smom-dbis-138/.env`. Server-side auth uses the secret key (`x-secret-key` header) when set.
```bash
# From repo root (loads smom-dbis-138/.env automatically)
node scripts/try-thirdweb-insight.js
# Or set explicitly
THIRDWEB_CLIENT_ID=542981292d51ec610388ba8985f027d7 node scripts/try-thirdweb-insight.js
```
The script calls the Insight API for **Chain 138** and **651940** (`GET /v1/events?limit=1`). If you get 200 and a small JSON body, the chain is supported; if 404/403 or “unsupported chain”, the chain may not be enabled for Insight yet.
---
## 3. Enable Insight in the Thirdweb dashboard
1. Go to [thirdweb.com](https://thirdweb.com) → your project.
2. Open **Insight** (or **Infrastructure****Insight**) and **enable** the Insight service for your project.
3. Ensure the **Client ID** you use in the script and dapp is from this project.
4. If you get **401 "keys are invalid"**, Insight is likely not enabled for the project — enable it in the dashboard and retry.
5. Check **supported chains**: [thirdweb.com/chainlist?service=insight](https://thirdweb.com/chainlist?service=insight). **Chain 138 and 651940 are not currently supported** by Insight (API returns "Chains not supported"). Use the try script with Ethereum (1) to verify your credentials; for 138 and 651940 use your own indexer and [ACTIVITY_FEED_SPEC.md](ACTIVITY_FEED_SPEC.md).
---
## 4. Example API calls (after enabling)
**Events for a contract (e.g. DODO PMM on 138):**
```http
GET https://138.insight.thirdweb.com/v1/events/0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D?limit=10
x-client-id: <your-client-id>
```
**Decoded events (if supported):**
```http
GET https://138.insight.thirdweb.com/v1/events/0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D?limit=10&decode=true
x-client-id: <your-client-id>
```
**Transactions:**
```http
GET https://138.insight.thirdweb.com/v1/transactions?limit=5
x-client-id: <your-client-id>
```
---
## 5. Relation to your activity feed
- **Insight:** Thirdweb-hosted indexer; use it when your chain is supported and you want quick REST queries.
- **Your stack:** [ACTIVITY_FEED_SPEC.md](ACTIVITY_FEED_SPEC.md) and the `activity_events` table are your own normalized feed (transfers, app events, bridge stitching). Use that for chains or event types Insight doesnt cover (e.g. custom 138/651940 events and routing).
You can use both: Insight for standard events/transactions where available, and your indexer for activity feed and bridge-aware stitching.

View File

@@ -77,6 +77,8 @@ watch -n 5 'cast block-number --rpc-url http://192.168.11.211:8545'
## 5. If still stalled ## 5. If still stalled
**Quorum:** With 5 validators, QBFT needs **4 at chain head** (2F+1) to produce blocks. If only 3 are at head (e.g. 1000, 1001, 1002), blocks will not advance until 1003 and/or 1004 sync to head. Check each validator's `ethereum_best_known_block_number` or `besu_blockchain_difficulty_total` (metrics on port 9545); all should match RPC block number.
1. **Validator peer count:** Validators must peer with each other. On a validator: 1. **Validator peer count:** Validators must peer with each other. On a validator:
`pct exec <vmid> -- curl -s http://127.0.0.1:9545/metrics | grep besu_peers_connected_total` `pct exec <vmid> -- curl -s http://127.0.0.1:9545/metrics | grep besu_peers_connected_total`
Should be several (e.g. 4+). If 0, check static-nodes / permissions and P2P ports (30303). Should be several (e.g. 4+). If 0, check static-nodes / permissions and P2P ports (30303).

View File

@@ -1,6 +1,6 @@
**Last Updated:** 2026-02-28 **Last Updated:** 2026-03-06
**Document Version:** 1.0 **Document Version:** 1.0
**Status:** Active Documentation **Status:** Active Documentation

View File

@@ -1,8 +1,8 @@
# Config-Ready Chains Completion Runbook (Gnosis, Cronos, Celo, Wemix) # Config-Ready Chains Completion Runbook (Gnosis, Cronos, Celo, Wemix)
**Last Updated:** 2026-02-28 **Last Updated:** 2026-03-06
**Status:** Active **Status:** Active
**Purpose:** Complete CCIP bridge setup for chains that are "Config ready" so they become fully operational (✅). **Purpose:** Complete CCIP bridge setup for chains that are "Config ready" so they become fully operational (✅). **Add Cronos and Wemix** by funding deployer gas (CRO, WEMIX), then deploying bridges and running complete-config.
--- ---
@@ -19,6 +19,14 @@ The following chains have **selectors and frontend config ready** but require de
**Prerequisite:** Confirm [Chainlink CCIP supports](https://docs.chain.link/ccip/supported-networks) each chain. All four are supported. **Prerequisite:** Confirm [Chainlink CCIP supports](https://docs.chain.link/ccip/supported-networks) each chain. All four are supported.
### Quick: Add Cronos and Wemix
1. **Gas:** Deployer needs **~15 CRO** (Cronos) and **~0.4 WEMIX** (Wemix). Run from repo root: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` for instructions and aggregator links.
2. **Env:** Copy Cronos and Wemix variables from `smom-dbis-138/docs/deployment/ENV_CONFIG_READY_CHAINS.example` into `smom-dbis-138/.env` (RPC, CCIP router, LINK, WETH9/WETH10).
3. **Deploy:** `cd smom-dbis-138 && ./scripts/deployment/deploy-bridges-config-ready-chains.sh cronos` then `.../deploy-bridges-config-ready-chains.sh wemix`. Set `CCIPWETH9_BRIDGE_CRONOS`, `CCIPWETH10_BRIDGE_CRONOS`, `CCIPWETH9_BRIDGE_WEMIX`, `CCIPWETH10_BRIDGE_WEMIX` in `.env` from script output.
4. **Complete:** `./scripts/deployment/complete-config-ready-chains.sh` to add 138↔Cronos and 138↔Wemix destinations.
5. **Fund LINK** on each new bridge (see Step 4 below).
--- ---
## Preflight (RPC + Gas Balance) ## Preflight (RPC + Gas Balance)

View File

@@ -0,0 +1,96 @@
# Non-Prefunded AVAX Migration Runbook
**Date:** 2026-03-04
**Scope:** Replace inventory-backed AVAX settlement behavior with a non-prefunded bridge path for future transfers.
## 1. Problem Statement
Current `138 -> AVAX` flow is inventory-backed:
- Source bridge on 138 escrows WETH.
- Destination bridge must already hold AVAX-side WETH to pay recipients.
- If destination inventory is zero, messages remain unprocessed.
This does not satisfy the requirement "move value to AVAX without pre-funding AVAX bridge inventory."
## 2. Target Architecture
Use a **lock/mint or burn/mint path** for the bridged asset, not release-from-inventory.
Recommended implementation in this repo:
1. Use dedicated receiver model from `CW_BRIDGE_APPROACH.md` (Option 2).
2. Bridge a mintable wrapped representation (for example `cW*` family), not canonical AVAX-side WETH.
3. Convert destination minted asset to required target assets through DEX routing.
Notes:
- Canonical WETH itself cannot be minted by your bridge contracts.
- If you require canonical WETH/AVAX output directly, you must use an external canonical bridge/protocol that supports that asset path.
## 3. Execution Order
### Phase A: Stop Further Loss Exposure
1. Freeze large `138 -> AVAX` sends on inventory-backed bridges.
2. Add preflight guard: block sends when destination delivery model is inventory-backed and inventory is below requested amount.
3. Keep BSC relay running only if still needed for legacy pending messages.
### Phase B: Recover Existing Stuck Message(s)
1. Enumerate pending message IDs (`processedTransfers == false`) on AVAX bridge.
2. For each pending message, either:
- fund destination bridge inventory and relay once, or
- implement explicit source-side refund path (if contract supports it; current WETH9 bridge does not expose one).
3. Verify each recovered message transitions to `processedTransfers == true`.
### Phase C: Deploy Non-Prefunded Path
1. Deploy/verify destination mintable token(s) and grant bridge roles:
- `MINTER_ROLE` and `BURNER_ROLE` to dedicated receiver (`TwoWayTokenBridgeL2` or equivalent).
2. Deploy sender/receiver pair:
- L1 sender/lock bridge on 138.
- L2 receiver/mint bridge on AVAX.
3. Configure chain selector mapping and router support for AVAX selector `6433500567565415381`.
4. Wire fee token and fee approvals.
5. Register token mapping in routing/config files.
### Phase D: E2E Validation (Required Before Production)
1. Test amounts: `0.01`, `1`, `20` units.
2. Validate:
- source escrow/burn,
- destination mint,
- no destination inventory dependency,
- reverse path burn/send works if required.
3. Run consistency tests for quote/fee, message replay protection, and mapping correctness.
### Phase E: Cutover
1. Mark legacy AVAX inventory-backed route as deprecated.
2. Update all operator scripts/docs to new route.
3. Keep monitoring and alerting on:
- message backlog,
- mint/burn failures,
- fee-token depletion.
## 4. Acceptance Criteria
Migration is complete only when all are true:
1. A `138 -> AVAX` transfer succeeds when destination bridge token inventory is `0`.
2. No relay payout from destination inventory is required.
3. End-to-end tests pass at small and medium sizes.
4. Runbooks/scripts no longer route AVAX through legacy inventory-backed path by default.
## 5. Immediate Operator Commands (Verification)
Check legacy destination dependency:
```bash
cast call 0x24293CA562aE1100E60a4640FF49bd656cFf93B4 "processedTransfers(bytes32)(bool)" <message_id> --rpc-url https://avalanche-c-chain.publicnode.com
cast call 0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08 "balanceOf(address)(uint256)" 0x24293CA562aE1100E60a4640FF49bd656cFf93B4 --rpc-url https://avalanche-c-chain.publicnode.com
```
Check source escrow:
```bash
cast call 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 "balanceOf(address)(uint256)" 0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5 --rpc-url https://rpc-http-pub.d-bis.org
```
## 6. Related Files
- `docs/07-ccip/CW_BRIDGE_APPROACH.md`
- `docs/11-references/CCIP_138_DESTINATION_RECEIVER_BY_CHAIN_AND_TOKEN.md`
- `smom-dbis-138/contracts/bridge/TwoWayTokenBridgeL1.sol`
- `smom-dbis-138/contracts/bridge/TwoWayTokenBridgeL2.sol`
- `smom-dbis-138/contracts/tokens/CompliantWrappedToken.sol`

View File

@@ -20,7 +20,7 @@
| Inconsistencies resolved (addresses, bridge fallbacks) | Done | See CONTRACT_INVENTORY_AND_VERIFICATION §7. | | Inconsistencies resolved (addresses, bridge fallbacks) | Done | See CONTRACT_INVENTORY_AND_VERIFICATION §7. |
| Verification script and proxy | Done | `scripts/verify/run-contract-verification-with-proxy.sh`, `scripts/verify-contracts-blockscout.sh`, `config/contract-addresses.conf`. | | Verification script and proxy | Done | `scripts/verify/run-contract-verification-with-proxy.sh`, `scripts/verify-contracts-blockscout.sh`, `config/contract-addresses.conf`. |
| Canonical source of truth and .env reconciliation | Done | [CONTRACT_ADDRESSES_REFERENCE § Canonical source of truth](CONTRACT_ADDRESSES_REFERENCE.md#-canonical-source-of-truth-chain-138): single canonical address per contract; note to remove duplicate keys in `.env`. | | Canonical source of truth and .env reconciliation | Done | [CONTRACT_ADDRESSES_REFERENCE § Canonical source of truth](CONTRACT_ADDRESSES_REFERENCE.md#-canonical-source-of-truth-chain-138): single canonical address per contract; note to remove duplicate keys in `.env`. |
| On-chain check script (full canonical list) | Done | `scripts/verify/check-contracts-on-chain-138.sh` includes **36** Chain 138 addresses (26 canonical + 5 channels/mirror/trustless + 5 CREATE2). **Run (uses RPC_URL_138):** `./scripts/verify/check-contracts-on-chain-138.sh`. Chain 138 deploys: use `--with-gas-price 1000000000`. | | On-chain check script (full canonical list) | Done | `scripts/verify/check-contracts-on-chain-138.sh` includes **59** Chain 138 addresses (core, CCIP, PMM, vault/reserve, CompliantFiatTokens; see CONTRACT_ADDRESSES_REFERENCE). **Run (uses RPC_URL_138):** `./scripts/verify/check-contracts-on-chain-138.sh`. Chain 138 deploys: use `--with-gas-price 1000000000`. |
| Phased core (138) deployed | Done | 2026-02-11: UniversalAssetRegistry, GovernanceController, UniversalCCIPBridge, BridgeOrchestrator (proxies). Addresses in CONTRACT_ADDRESSES_REFERENCE and .env. | | Phased core (138) deployed | Done | 2026-02-11: UniversalAssetRegistry, GovernanceController, UniversalCCIPBridge, BridgeOrchestrator (proxies). Addresses in CONTRACT_ADDRESSES_REFERENCE and .env. |
| Channel manager docs and runbooks (smom-dbis-138) | Done | Payment/state channel deployment, gas report, incident runbook, watchtower, future work; see smom-dbis-138 `docs/channels/` and `docs/deployment/PAYMENT_CHANNELS_DEPLOYMENT.md`. | | Channel manager docs and runbooks (smom-dbis-138) | Done | Payment/state channel deployment, gas report, incident runbook, watchtower, future work; see smom-dbis-138 `docs/channels/` and `docs/deployment/PAYMENT_CHANNELS_DEPLOYMENT.md`. |

View File

@@ -9,7 +9,7 @@
| # | Task | Type | Status | | # | Task | Type | Status |
|---|------|------|--------| |---|------|------|--------|
| 1 | **Chain 138 next steps (all in one)** | Operator | `./scripts/deployment/run-all-next-steps-chain138.sh` — preflight → mirror+pool → register c* as GRU → verify; use `--skip-mirror` if mirror exists. | | 1 | **Chain 138 next steps (all in one)** | Operator | `./scripts/deployment/run-all-next-steps-chain138.sh` — preflight → mirror+pool → register c* as GRU → verify; use `--skip-mirror` if mirror exists. |
| 2 | On-chain check (38 addresses) | Operator | Run `./scripts/verify/check-contracts-on-chain-138.sh` from host with RPC | | 2 | On-chain check (59 addresses; run check-contracts-on-chain-138.sh) | Operator | Run `./scripts/verify/check-contracts-on-chain-138.sh` from host with RPC |
| 3 | Blockscout source verification | Operator | Run from host that can reach Blockscout | | 3 | Blockscout source verification | Operator | Run from host that can reach Blockscout |
| 4 | Reconcile .env | Repo | Done 2026-02-11 | | 4 | Reconcile .env | Repo | Done 2026-02-11 |
| 5 | Multicall vs Oracle at 0x99b3... | Operator | Confirm on explorer; document in CONTRACT_ADDRESSES_REFERENCE | | 5 | Multicall vs Oracle at 0x99b3... | Operator | Confirm on explorer; document in CONTRACT_ADDRESSES_REFERENCE |

View File

@@ -77,6 +77,8 @@
- **CCIP:** Each destination chain has a CCIP WETH9/WETH10 receiver bridge; 138s bridges have `addDestination(chainSelector, receiverBridge)` for two-way routing. - **CCIP:** Each destination chain has a CCIP WETH9/WETH10 receiver bridge; 138s bridges have `addDestination(chainSelector, receiverBridge)` for two-way routing.
- **Alltra:** AlltraAdapter on 138 and corresponding adapter on 651940 for two-way. - **Alltra:** AlltraAdapter on 138 and corresponding adapter on 651940 for two-way.
**Inbound bridge (source chain) — env var for routing-registry:** Set the bridge address on the source chain in config/routing-registry.json. Env vars (when set): Ethereum 1 → MAINNET_CCIP_WETH9_BRIDGE / MAINNET_CCIP_WETH10_BRIDGE; BSC 56 → CCIPWETH9_BRIDGE_BSC / CCIPWETH10_BRIDGE_BSC; Polygon 137 → CCIPWETH9_BRIDGE_POLYGON / CCIPWETH10_BRIDGE_POLYGON; Optimism 10, Arbitrum 42161, Avalanche 43114, Base 8453 → CCIPWETH9_BRIDGE_* / CCIPWETH10_BRIDGE_*; Gnosis 100 → CCIPWETH9_BRIDGE_GNOSIS / CCIPWETH10_BRIDGE_GNOSIS; Cronos 25 → CCIPWETH9_BRIDGE_CRONOS / CCIPWETH10_BRIDGE_CRONOS; Celo 42220 → CCIPWETH9_BRIDGE_CELO / CCIPWETH10_BRIDGE_CELO; Wemix 1111 → CCIPWETH9_BRIDGE_WEMIX / CCIPWETH10_BRIDGE_WEMIX. See CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.
**Source:** [CONTRACT_ADDRESSES_REFERENCE.md](CONTRACT_ADDRESSES_REFERENCE.md), [smom-dbis-138/docs/deployment/CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING.md](../../smom-dbis-138/docs/deployment/CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING.md). **Source:** [CONTRACT_ADDRESSES_REFERENCE.md](CONTRACT_ADDRESSES_REFERENCE.md), [smom-dbis-138/docs/deployment/CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING.md](../../smom-dbis-138/docs/deployment/CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING.md).
--- ---

View File

@@ -1,9 +1,9 @@
# Documentation — Master Index # Documentation — Master Index
**Last Updated:** 2026-03-04 **Last Updated:** 2026-03-06
**Purpose:** Single entry point for all project documentation. Use this index to find canonical sources and avoid deprecated or duplicate content. **Purpose:** Single entry point for all project documentation. Use this index to find canonical sources and avoid deprecated or duplicate content.
**Status:** Preflight and Chain 138 next steps completed (38/38 on-chain, 12 c* GRU-registered). **2026-03-04:** Celo CCIP bridges deployed; Phase AD execution tracked in [03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md). Phase C runbook: [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md); Phase D: [PHASE_D_OPTIONAL_CHECKLIST.md](03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md). **On-chain verification 2026-03-04:** DODOPMMIntegration returns canonical cUSDT/cUSDC — [EXPLORER_TOKEN_LIST_CROSSCHECK](11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8. **Explorer token alignment:** WETH9 metadata quirk and full diff script — [EXPLORER_TOKEN_LIST_CROSSCHECK](11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §2.1, §9. **Remaining:** Mint (A.1) retry, Wemix 0.4 WEMIX, LINK fund, cW* + edge pools — see [00-meta/TODOS_CONSOLIDATED.md](00-meta/TODOS_CONSOLIDATED.md). **Status:** Preflight and Chain 138 next steps completed (59/59 on-chain per [check-contracts-on-chain-138.sh](../../scripts/verify/check-contracts-on-chain-138.sh), 12 c* GRU-registered). **2026-03-06:** Contract check list expanded to 59 addresses (PMM, vault/reserve, CompliantFiatTokens); doc refs updated. **2026-03-04:** Celo CCIP bridges deployed; Phase AD tracked in [03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md). Phase C: [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md); Phase D: [PHASE_D_OPTIONAL_CHECKLIST.md](03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md). **On-chain verification:** DODOPMMIntegration canonical cUSDT/cUSDC — [EXPLORER_TOKEN_LIST_CROSSCHECK](11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8. **Remaining:** Wemix 0.4 WEMIX, LINK fund, cW* + edge pools — see [00-meta/TODOS_CONSOLIDATED.md](00-meta/TODOS_CONSOLIDATED.md).
**Continue and complete (operator/LAN):** (1) `./scripts/run-completable-tasks-from-anywhere.sh` then (2) `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` not set; add `--deploy` or `--create-vms` as needed). Operator scripts load dotenv from repo `.env` and `smom-dbis-138/.env` automatically. **Continue and complete (operator/LAN):** (1) `./scripts/run-completable-tasks-from-anywhere.sh` then (2) `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` not set; add `--deploy` or `--create-vms` as needed). Operator scripts load dotenv from repo `.env` and `smom-dbis-138/.env` automatically.
@@ -19,8 +19,13 @@
| **Operator copy-paste commands** | [00-meta/OPERATOR_READY_CHECKLIST.md](00-meta/OPERATOR_READY_CHECKLIST.md) — exact commands for Blockscout, NPMplus, CCIP, 502 fix, backup, deploy | | **Operator copy-paste commands** | [00-meta/OPERATOR_READY_CHECKLIST.md](00-meta/OPERATOR_READY_CHECKLIST.md) — exact commands for Blockscout, NPMplus, CCIP, 502 fix, backup, deploy |
| **Required / optional / recommended (full plan)** | [00-meta/COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md](00-meta/COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md) | | **Required / optional / recommended (full plan)** | [00-meta/COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md](00-meta/COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md) |
| **Single task list** | [00-meta/TODOS_CONSOLIDATED.md](00-meta/TODOS_CONSOLIDATED.md) | | **Single task list** | [00-meta/TODOS_CONSOLIDATED.md](00-meta/TODOS_CONSOLIDATED.md) |
| **Execution: multiple routes + liquidity (all + optional, suggested order)** | [00-meta/EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md](00-meta/EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md) |
| **All additional recommendations (table)** | [00-meta/ADDITIONAL_RECOMMENDATIONS_TABLE.md](00-meta/ADDITIONAL_RECOMMENDATIONS_TABLE.md) — consolidated table of every recommendation with description and command/doc |
| **Dotenv & markdown audit (gaps + recommendations)** | [00-meta/DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md](00-meta/DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md) — required env/markdown info, run results, gaps, recommendations |
| **Next steps (concise)** | [00-meta/NEXT_STEPS_LIST.md](00-meta/NEXT_STEPS_LIST.md) — bridge/swap/Phase C status, quick commands |
| **Still not done (operator/external)** | [00-meta/STILL_NOT_DONE_EXECUTION_CHECKLIST.md](00-meta/STILL_NOT_DONE_EXECUTION_CHECKLIST.md) | | **Still not done (operator/external)** | [00-meta/STILL_NOT_DONE_EXECUTION_CHECKLIST.md](00-meta/STILL_NOT_DONE_EXECUTION_CHECKLIST.md) |
| **Remaining tasks (one page)** | [00-meta/REMAINING_TASKS.md](00-meta/REMAINING_TASKS.md) | | **Remaining tasks (one page)** | [00-meta/REMAINING_TASKS.md](00-meta/REMAINING_TASKS.md) |
| **Contract next steps (Chain 138)** | [11-references/CONTRACT_NEXT_STEPS_LIST.md](11-references/CONTRACT_NEXT_STEPS_LIST.md) — on-chain check (59 addr), Blockscout, env |
| **Task check report (verify before completing)** | [00-meta/TASK_CHECK_REPORT.md](00-meta/TASK_CHECK_REPORT.md) | | **Task check report (verify before completing)** | [00-meta/TASK_CHECK_REPORT.md](00-meta/TASK_CHECK_REPORT.md) |
| **Gaps status (all gap sources + fixes)** | [00-meta/GAPS_STATUS.md](00-meta/GAPS_STATUS.md) | | **Gaps status (all gap sources + fixes)** | [00-meta/GAPS_STATUS.md](00-meta/GAPS_STATUS.md) |
@@ -38,7 +43,7 @@
| Phase C (cW* + edge pools) | [03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md) | — | | Phase C (cW* + edge pools) | [03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md) | — |
| Phase D (optional XAU/vaults/trustless) | [03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md](03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md) | — | | Phase D (optional XAU/vaults/trustless) | [03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md](03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md) | — |
| Operational runbooks | [03-deployment/OPERATIONAL_RUNBOOKS.md](03-deployment/OPERATIONAL_RUNBOOKS.md) | RUNBOOKS_MASTER_INDEX.md — use OPERATIONAL_RUNBOOKS as single source | | Operational runbooks | [03-deployment/OPERATIONAL_RUNBOOKS.md](03-deployment/OPERATIONAL_RUNBOOKS.md) | RUNBOOKS_MASTER_INDEX.md — use OPERATIONAL_RUNBOOKS as single source |
| Contract / address status | [11-references/ADDRESS_MATRIX_AND_STATUS.md](11-references/ADDRESS_MATRIX_AND_STATUS.md) | CONTRACT_INVENTORY_AND_VERIFICATION (deleted) | | Contract / address status | [11-references/ADDRESS_MATRIX_AND_STATUS.md](11-references/ADDRESS_MATRIX_AND_STATUS.md), [11-references/CONTRACT_ADDRESSES_REFERENCE.md](11-references/CONTRACT_ADDRESSES_REFERENCE.md), [11-references/CONTRACT_NEXT_STEPS_LIST.md](11-references/CONTRACT_NEXT_STEPS_LIST.md) (59-addr check) | CONTRACT_INVENTORY_AND_VERIFICATION (deleted) |
--- ---
@@ -49,7 +54,7 @@
| **00-meta** (tasks, next steps, phases) | [00-meta/NEXT_STEPS_INDEX.md](00-meta/NEXT_STEPS_INDEX.md), [00-meta/PHASES_AND_TASKS_MASTER.md](00-meta/PHASES_AND_TASKS_MASTER.md) | | **00-meta** (tasks, next steps, phases) | [00-meta/NEXT_STEPS_INDEX.md](00-meta/NEXT_STEPS_INDEX.md), [00-meta/PHASES_AND_TASKS_MASTER.md](00-meta/PHASES_AND_TASKS_MASTER.md) |
| **02-architecture** | [02-architecture/](02-architecture/) | | **02-architecture** | [02-architecture/](02-architecture/) |
| **03-deployment** | [03-deployment/OPERATIONAL_RUNBOOKS.md](03-deployment/OPERATIONAL_RUNBOOKS.md), [03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md](03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) | | **03-deployment** | [03-deployment/OPERATIONAL_RUNBOOKS.md](03-deployment/OPERATIONAL_RUNBOOKS.md), [03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md](03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) |
| **04-configuration** | [04-configuration/README.md](04-configuration/README.md) | | **04-configuration** | [04-configuration/README.md](04-configuration/README.md), [04-configuration/ADDITIONAL_PATHS_AND_EXTENSIONS.md](04-configuration/ADDITIONAL_PATHS_AND_EXTENSIONS.md) (paths, registry, token-mapping, LiFi/Jumper) |
| **06-besu** | [06-besu/MASTER_INDEX.md](06-besu/MASTER_INDEX.md) | | **06-besu** | [06-besu/MASTER_INDEX.md](06-besu/MASTER_INDEX.md) |
| **07-ccip** | [07-ccip/](07-ccip/), [00-meta/CW_BRIDGE_TASK_LIST.md](00-meta/CW_BRIDGE_TASK_LIST.md) | | **07-ccip** | [07-ccip/](07-ccip/), [00-meta/CW_BRIDGE_TASK_LIST.md](00-meta/CW_BRIDGE_TASK_LIST.md) |
| **11-references** | [11-references/ADDRESS_MATRIX_AND_STATUS.md](11-references/ADDRESS_MATRIX_AND_STATUS.md), [11-references/CONTRACT_ADDRESSES_REFERENCE.md](11-references/CONTRACT_ADDRESSES_REFERENCE.md), [11-references/DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md](11-references/DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md) (all contracts by deployer wallet, network, verified/not), [11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md](11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md) (tokens, bridges, DODO/Uniswap LPs, full route map), [11-references/DEPLOYER_TO_PUBLIC_STABLECOIN_ROUTES.md](11-references/DEPLOYER_TO_PUBLIC_STABLECOIN_ROUTES.md) (deployer→public stablecoin routes), [11-references/ROUTES_NO_PREFUNDED_BRIDGE_REQUIRED.md](11-references/ROUTES_NO_PREFUNDED_BRIDGE_REQUIRED.md) (routes where bridge pre-fund not required), [11-references/CCIP_138_DESTINATION_RECEIVER_BY_CHAIN_AND_TOKEN.md](11-references/CCIP_138_DESTINATION_RECEIVER_BY_CHAIN_AND_TOKEN.md) (per-chain per-token: mint vs receive+forward vs release), [11-references/DEPLOYMENT_DATA_SOURCES_INDEX.md](11-references/DEPLOYMENT_DATA_SOURCES_INDEX.md) (dotenv and config files with contract deployments), [11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md](11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) (Explorer /tokens vs repo token lists), [11-references/HARDWARE_INVENTORY_MASTER.md](11-references/HARDWARE_INVENTORY_MASTER.md), [11-references/13_NODE_NETWORK_AND_CABLING_CHECKLIST.md](11-references/13_NODE_NETWORK_AND_CABLING_CHECKLIST.md), [11-references/13_NODE_AND_ASSETS_BRING_ONLINE_CHECKLIST.md](11-references/13_NODE_AND_ASSETS_BRING_ONLINE_CHECKLIST.md) | | **11-references** | [11-references/ADDRESS_MATRIX_AND_STATUS.md](11-references/ADDRESS_MATRIX_AND_STATUS.md), [11-references/CONTRACT_ADDRESSES_REFERENCE.md](11-references/CONTRACT_ADDRESSES_REFERENCE.md), [11-references/DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md](11-references/DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md) (all contracts by deployer wallet, network, verified/not), [11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md](11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md) (tokens, bridges, DODO/Uniswap LPs, full route map), [11-references/DEPLOYER_TO_PUBLIC_STABLECOIN_ROUTES.md](11-references/DEPLOYER_TO_PUBLIC_STABLECOIN_ROUTES.md) (deployer→public stablecoin routes), [11-references/ROUTES_NO_PREFUNDED_BRIDGE_REQUIRED.md](11-references/ROUTES_NO_PREFUNDED_BRIDGE_REQUIRED.md) (routes where bridge pre-fund not required), [11-references/CCIP_138_DESTINATION_RECEIVER_BY_CHAIN_AND_TOKEN.md](11-references/CCIP_138_DESTINATION_RECEIVER_BY_CHAIN_AND_TOKEN.md) (per-chain per-token: mint vs receive+forward vs release), [11-references/DEPLOYMENT_DATA_SOURCES_INDEX.md](11-references/DEPLOYMENT_DATA_SOURCES_INDEX.md) (dotenv and config files with contract deployments), [11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md](11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) (Explorer /tokens vs repo token lists), [11-references/HARDWARE_INVENTORY_MASTER.md](11-references/HARDWARE_INVENTORY_MASTER.md), [11-references/13_NODE_NETWORK_AND_CABLING_CHECKLIST.md](11-references/13_NODE_NETWORK_AND_CABLING_CHECKLIST.md), [11-references/13_NODE_AND_ASSETS_BRING_ONLINE_CHECKLIST.md](11-references/13_NODE_AND_ASSETS_BRING_ONLINE_CHECKLIST.md) |

View File

@@ -1,6 +1,6 @@
# Documentation # Documentation
**Last Updated:** 2026-03-04 **Last Updated:** 2026-03-06
This directory contains all project documentation. Start from the master index to avoid deprecated or duplicate content. This directory contains all project documentation. Start from the master index to avoid deprecated or duplicate content.

View File

@@ -92,7 +92,7 @@ Every task below is to be completed; optional items are explicitly marked so pri
| C1 | Ensure Phase 0 prerequisites: RPC 2101 writable, deployer funded, .env correct, POOL_MANAGER_ROLE, no stuck txs, forge build, test all contracts before deploy. | [DEPLOYMENT_ORDER_OF_OPERATIONS](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) Phase 0. **Partial:** preflight, run-before-deploy-checks, test-all-contracts exist ([coordination](IMPLEMENTATION_COORDINATION_WITH_TRANSCRIPT_540AE663.md)). | | C1 | Ensure Phase 0 prerequisites: RPC 2101 writable, deployer funded, .env correct, POOL_MANAGER_ROLE, no stuck txs, forge build, test all contracts before deploy. | [DEPLOYMENT_ORDER_OF_OPERATIONS](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) Phase 0. **Partial:** preflight, run-before-deploy-checks, test-all-contracts exist ([coordination](IMPLEMENTATION_COORDINATION_WITH_TRANSCRIPT_540AE663.md)). |
| C2 | Complete Phase 2 if not done: TransactionMirror, all three PMM pools, register c* as GRU; set addresses in .env. | DEPLOYMENT_ORDER_OF_OPERATIONS Phase 2. **Done** per [coordination](IMPLEMENTATION_COORDINATION_WITH_TRANSCRIPT_540AE663.md). | | C2 | Complete Phase 2 if not done: TransactionMirror, all three PMM pools, register c* as GRU; set addresses in .env. | DEPLOYMENT_ORDER_OF_OPERATIONS Phase 2. **Done** per [coordination](IMPLEMENTATION_COORDINATION_WITH_TRANSCRIPT_540AE663.md). |
| C3 | Complete Phase 3: DODOPMMProvider deploy and pool registration; token-aggregation env; optional liquidity and MCP allowlist. | DEPLOYMENT_ORDER_OF_OPERATIONS Phase 3. **Done** per [coordination](IMPLEMENTATION_COORDINATION_WITH_TRANSCRIPT_540AE663.md). | | C3 | Complete Phase 3: DODOPMMProvider deploy and pool registration; token-aggregation env; optional liquidity and MCP allowlist. | DEPLOYMENT_ORDER_OF_OPERATIONS Phase 3. **Done** per [coordination](IMPLEMENTATION_COORDINATION_WITH_TRANSCRIPT_540AE663.md). |
| C4 | Run on-chain verification: `./scripts/verify/check-contracts-on-chain-138.sh`; target 38/38 when applicable. | DEPLOYMENT_ORDER_OF_OPERATIONS Phase 6.1. | | C4 | Run on-chain verification: `./scripts/verify/check-contracts-on-chain-138.sh`; target 59/59 when applicable (check-contracts-on-chain-138.sh). | DEPLOYMENT_ORDER_OF_OPERATIONS Phase 6.1. |
| C5 | Run Blockscout verification: `./scripts/verify/run-contract-verification-with-proxy.sh`; update CONTRACT_ADDRESSES_REFERENCE and LIQUIDITY_POOLS_MASTER_MAP. | DEPLOYMENT_ORDER_OF_OPERATIONS Phase 6.26.3; R1R3. | | C5 | Run Blockscout verification: `./scripts/verify/run-contract-verification-with-proxy.sh`; update CONTRACT_ADDRESSES_REFERENCE and LIQUIDITY_POOLS_MASTER_MAP. | DEPLOYMENT_ORDER_OF_OPERATIONS Phase 6.26.3; R1R3. |
| C6 | Reconcile Multicall vs Oracle Aggregator at `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` on explorer and document in CONTRACT_ADDRESSES_REFERENCE. | CONTRACT_ADDRESSES_REFERENCE note. | | C6 | Reconcile Multicall vs Oracle Aggregator at `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` on explorer and document in CONTRACT_ADDRESSES_REFERENCE. | CONTRACT_ADDRESSES_REFERENCE note. |

View File

@@ -101,7 +101,7 @@ When implementing from [DBIS_RAIL_AND_PROJECT_COMPLETION_MASTER_V1.md](DBIS_RAIL
| C1 | Partial | Preflight, env, test-all-contracts, run-before-deploy-checks exist; ensure RPC 2101 writable, POOL_MANAGER_ROLE per runbook. | | C1 | Partial | Preflight, env, test-all-contracts, run-before-deploy-checks exist; ensure RPC 2101 writable, POOL_MANAGER_ROLE per runbook. |
| C2 | Done | TransactionMirror deployed; all three PMM pools created; c* registered as GRU; set-dotenv script and RegisterGRUCompliantTokens run. | | C2 | Done | TransactionMirror deployed; all three PMM pools created; c* registered as GRU; set-dotenv script and RegisterGRUCompliantTokens run. |
| C3 | Done | DODOPMMProvider deployed and pools registered; token-aggregation env; MCP allowlist-138; add-liquidity runbook. | | C3 | Done | DODOPMMProvider deployed and pools registered; token-aggregation env; MCP allowlist-138; add-liquidity runbook. |
| C4 | Partial | check-contracts-on-chain-138.sh used; confirm 38/38 (or current count) after any new deploy. | | C4 | Partial | check-contracts-on-chain-138.sh used; confirm 59/59 (or current count per check-contracts-on-chain-138.sh) after any new deploy. |
| C5 | Partial | Blockscout verification run in transcript; update CONTRACT_ADDRESSES_REFERENCE and LIQUIDITY_POOLS_MASTER_MAP as needed. | | C5 | Partial | Blockscout verification run in transcript; update CONTRACT_ADDRESSES_REFERENCE and LIQUIDITY_POOLS_MASTER_MAP as needed. |
| C6 | Open | Reconcile Multicall vs Oracle Aggregator at documented address. | | C6 | Open | Reconcile Multicall vs Oracle Aggregator at documented address. |

View File

@@ -0,0 +1,151 @@
# Path A+C+D -> Path B Execution Order (Test-First, No Duplicate Deploy) — 2026-03-04
Objective: complete Mainnet Path B by first using already deployed contracts, validating all routes E2E, and skipping any duplicate/redeploy work.
## Current Check Results From This Host
- RPC and gas-balance checks are now passing for all required chains (138, 1, 56, 137, 10, 42161, 8453, 43114, 25, 100, 42220, 651940).
- Generated gas report: `reports/deployer_needed_chain_gas_balances_2026-03-04.md` (all required chains `ok`).
- Read-only verification status:
- `scripts/verify/check-deployer-balance-blockscout-vs-rpc.sh https://rpc-http-pub.d-bis.org https://explorer.d-bis.org/api/v2` -> passed, balances match.
- `scripts/verify/check-contracts-on-chain-138.sh http://192.168.11.211:8545` -> passed, 59/59 addresses present (check-contracts-on-chain-138.sh).
- `smom-dbis-138/scripts/verify-bridge-setup-checklist.sh` -> passed when using `FORCE_RPC_URL=https://rpc-http-pub.d-bis.org`.
- `smom-dbis-138/scripts/verify-bridge-prerequisites.sh 0.001` -> passed when using `FORCE_RPC_URL=https://rpc-http-pub.d-bis.org`.
- E2E route health:
- `scripts/run-full-e2e-validation.sh` -> passed overall (HTTP E2E passed; one WS endpoint `wss://rpc.d-bis.org` timed out).
- Remaining execution blockers:
- No discoverable public LINK DEX liquidity for configured LINK on Cronos/Gnosis/Celo (`NOT_FOUND` in execution sheet).
- Chain 138 source-side documented pool gap for `cUSDT/cUSDC -> WETH` still unresolved.
## Non-Negotiable Rules
1. Never deploy before checking bytecode/state first.
2. If contract exists and is configured, skip deployment.
3. Prefer read-only `cast call`/status scripts first; send tx only when gate checks pass.
4. Every write action must have post-action verification.
## Phase 0: Environment + Access Gates
1. Validate canonical registry and env consistency.
- Command: `scripts/validation/validate-deployer-public-token-registry.sh`
- Pass: `total=73, missing=0, mismatch=0`.
2. Confirm RPC reachability for required chains.
- Command: `reports/deployer_needed_chain_gas_balances_2026-03-04.md` generation command (or rerun script logic from that report).
- Pass: status `ok` for at least chains 138, 1, 56, 137, 10, 42161, 8453, 43114, 25, 100, 42220.
3. Resolve missing config blockers before execution.
- Set `CCIP_CELO_LINK_TOKEN` in canonical env.
- Set `GNOSIS_RPC_URL` and `ALL_MAINNET_RPC` in canonical env.
- Pin destination `WETH/LINK` DEX pair contracts per chain (not just token symbols).
Status:
- First two items completed in `smom-dbis-138/.env`.
- Pair contracts pinned for Mainnet/BSC/Polygon/Optimism/Arbitrum/Base/Avalanche; Cronos/Gnosis/Celo still have no executable public LINK pair.
## Phase 1: Inventory + No-Duplicate Deployment Guard
1. Check deployed bytecode on chain 138.
- Command: `scripts/verify/check-contracts-on-chain-138.sh <reachable_rpc_138>`
- Decision:
- If code present -> do not redeploy.
- If code absent -> verify if address is deprecated/expected-missing before deciding deployment.
2. Check bridge setup state (read-only).
- Command: `smom-dbis-138/scripts/verify-bridge-setup-checklist.sh`
- Must confirm:
- LINK token code exists.
- bridge code exists.
- destination for mainnet selector exists and is enabled.
3. Check Path B prerequisites (read-only).
- Command: `smom-dbis-138/scripts/verify-bridge-prerequisites.sh 1`
- Must confirm:
- deployer ETH balance sufficient,
- LINK balance sufficient for CCIP fees,
- WETH9 bridge destination enabled,
- allowance state understood.
## Phase 2: Execute Path A (Primary Funding Feeder)
1. Bridge WETH from 138 to non-mainnet destinations using existing bridges.
- Use source bridges only (already deployed):
- `CCIPWETH9_BRIDGE_CHAIN138=0x971cD9D156f193df8051E48043C476e53ECd4693`
- `CCIPWETH10_BRIDGE_CHAIN138=0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
2. On destination chains, swap `WETH -> LINK` using pinned DEX pair contracts.
- Required before automation: exact pair/router contract addresses pinned per chain.
3. Fund target destination bridge wallets from execution sheet.
- Source of truth: `reports/path_b_chain138_bridge_swap_execution_sheet_2026-03-04.md`.
4. Verify bridge balances and tx success.
- Commands:
- `scripts/monitor-bridge-health.sh`
- `scripts/monitor-bridge-transfers.sh`
## Phase 3: Execute Path C (Fallback/Redundancy Feeder)
1. Use Alltra route where Path A liquidity/routing is weak.
- Bridge through Alltra adapter and convert to needed inventory.
2. Re-route inventory to target funding wallets as needed.
- Same post-action verification requirements as Phase 2.
## Phase 4: Execute Path D (Reliability Program)
1. PMM/LP expansion on chain 138 for source->WETH routing reliability.
- Commands:
- `smom-dbis-138/scripts/deployment/run-pmm-full-parity-all-phases.sh`
- `scripts/create-pmm-full-mesh-chain138.sh` (if additional pools needed)
- Rule: do not create duplicate pools; query existing pools first.
2. Public-chain LP deployment only where missing.
- Command: `smom-dbis-138/scripts/deployment/deploy-pmm-all-l2s.sh`
- Rule: verify pool existence and deployment-status before each creation.
3. Oracle updates and integrity checks.
- Commands:
- `scripts/update-all-oracle-prices.sh`
- `scripts/update-oracle-price.sh`
- Verify no stale feed or revert on update.
4. Mapper + mapping integrity.
- Commands:
- `scripts/complete-all-mapper-operator.sh`
- `scripts/run-remaining-mapper-tasks.sh`
- Verify mappings align with `config/address-registry/*.json` and active env.
5. E2E route proof (non-theoretical routing).
- Commands:
- `scripts/verify/check-public-rpc-stability-e2e.sh`
- `scripts/run-full-e2e-validation.sh`
- Pass criteria: repeated successful flow `138 -> bridge -> destination swap -> funding wallet credited`.
## Phase 5: Execute Path B (Mainnet Special Case)
1. Pre-fund Mainnet relay bridge with WETH (mandatory first).
- Command: `scripts/bridge/fund-mainnet-relay-bridge.sh`
- Target wallet: `CCIP_RELAY_BRIDGE_MAINNET=0xF9A32F37099c582D28b4dE7Fca6eaC1e5259f939`
2. Run 138 -> Mainnet WETH9 bridge flow using existing deployed contracts.
- Command: `smom-dbis-138/scripts/wrap-and-bridge-weth9-to-mainnet.sh <amount_eth>`
- Caution: this script broadcasts txs; run only after all read-only checks pass.
3. Swap Mainnet WETH -> LINK and fund Mainnet bridge wallets.
- Mainnet target LINK wallets:
- `0xc9901ce2Ddb6490FAA183645147a87496d8b20B6`
- `0x04E1e22B0D41e99f4275bd40A50480219bc9A223`
- Mainnet WETH funding wallet:
- `0xF9A32F37099c582D28b4dE7Fca6eaC1e5259f939`
4. Post-funding verification.
- Re-run prerequisite and setup checklist scripts.
- Confirm balances on target wallets and successful message relay/release.
## Acceptance Criteria
1. No duplicate deployments occurred for already-live contracts.
2. Path A/C/D completed with verifiable tx and balance evidence.
3. Path B relay bridge pre-funded first, then 138->Mainnet release flow succeeds.
4. LINK and WETH bridge funding wallets are topped up on all target chains.
5. E2E tests pass on repeated runs.

View File

@@ -0,0 +1,69 @@
#!/usr/bin/env bash
# Print all swap routes and instructions to acquire CRO (Cronos) and WEMIX (Wemix) native gas for the deployer.
# Reads multiple routes from config/cro-wemix-swap-routes.json. No in-repo execution: use aggregator UIs.
#
# Usage:
# ./scripts/deployment/acquire-cro-and-wemix-gas.sh # full output from config
# ./scripts/deployment/acquire-cro-and-wemix-gas.sh --json # emit config paths + deployer only
# ./scripts/deployment/acquire-cro-and-wemix-gas.sh --list # one line per route (name, url)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
CONFIG="${PROJECT_ROOT}/config/cro-wemix-swap-routes.json"
OUTPUT_JSON=false
OUTPUT_LIST=false
for a in "$@"; do
[[ "$a" == "--json" ]] && OUTPUT_JSON=true
[[ "$a" == "--list" ]] && OUTPUT_LIST=true
done
if [[ ! -f "$CONFIG" ]]; then
echo "Error: Config not found: $CONFIG" >&2
exit 1
fi
DEPLOYER="$(jq -r '.deployerAddress // "0x4A666F96fC8764181194447A7dFdb7d471b301C8"' "$CONFIG")"
if $OUTPUT_JSON; then
jq -c '{ deployerAddress, configPath: $config, chains: .chains | keys }' --arg config "$CONFIG" "$CONFIG"
exit 0
fi
echo ""
echo "=============================================="
echo " Swap routes: CRO and WEMIX deployer gas"
echo " Deployer: $DEPLOYER"
echo " Config: $CONFIG"
echo "=============================================="
echo ""
for chain_key in 25 1111; do
name=$(jq -r --arg k "$chain_key" '.chains[$k].name // empty' "$CONFIG")
[[ -z "$name" ]] && continue
native=$(jq -r --arg k "$chain_key" '.chains[$k].nativeSymbol // empty' "$CONFIG")
required=$(jq -r --arg k "$chain_key" '.chains[$k].requiredNative // empty' "$CONFIG")
unit=$(jq -r --arg k "$chain_key" '.chains[$k].requiredUnit // empty' "$CONFIG")
recipient=$(jq -r --arg k "$chain_key" '.chains[$k].recipientNote // empty' "$CONFIG")
echo "--- $name (chain $chain_key) ---"
echo " Required: ~$required $unit"
echo " $recipient"
echo " Deployer address: $DEPLOYER"
echo ""
if $OUTPUT_LIST; then
jq -r --arg k "$chain_key" '.chains[$k].swapRoutes[]? | " \(.name): \(.url)"' "$CONFIG" 2>/dev/null
else
echo " Swap routes (use any aggregator; send $unit to deployer when done):"
jq -r --arg k "$chain_key" '.chains[$k].swapRoutes[]? | " [\(.name)] \(.description)\n \(.url)"' "$CONFIG" 2>/dev/null
fi
echo ""
done
echo "After funding:"
echo " Cronos: set CRONOS_RPC (or CRONOS_RPC_URL) in smom-dbis-138/.env, then run deploy-bridges-config-ready-chains.sh cronos and complete-config-ready-chains.sh."
echo " Wemix: set WEMIX_RPC in smom-dbis-138/.env, then run deploy-bridges-config-ready-chains.sh wemix and complete-config-ready-chains.sh. See WEMIX_ACQUISITION_TABLED.md."
echo ""

View File

@@ -0,0 +1,89 @@
#!/usr/bin/env bash
# Chain 138 path for deployer gas auto-route: try token-aggregation quote for cUSDT/cUSDC → WETH.
# If no c*→WETH pool exists (current state), output "use genesis/validator only".
# Uses config/deployer-gas-routes.json for 138 entry (tokenAggregationBaseUrl, token addresses).
#
# Usage:
# ./scripts/deployment/chain138-tokens-to-gas.sh [--dry-run] [--amount-raw WEI]
# TOKEN_AGGREGATION_URL=https://dbis-api.d-bis.org/api/v1 ./scripts/deployment/chain138-tokens-to-gas.sh
#
# Requires: curl, jq. Optional: RPC_URL_138, PRIVATE_KEY for execute path (not implemented in v1).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
CONFIG="${PROJECT_ROOT}/config/deployer-gas-routes.json"
DRY_RUN=false
AMOUNT_RAW="${AMOUNT_RAW:-1000000000}"
# Default: 1000 USDT (6 decimals) in raw units
if [[ -f "$CONFIG" ]]; then
BASE_URL="${TOKEN_AGGREGATION_URL:-$(jq -r '.chains[] | select(.chainId==138) | .tokenAggregationBaseUrl // empty' "$CONFIG")}"
FALLBACK_URL="$(jq -r '.chains[] | select(.chainId==138) | .tokenAggregationFallbackUrl // empty' "$CONFIG")"
CUSDT="$(jq -r '.chains[] | select(.chainId==138) | .cusdt // empty' "$CONFIG")"
CUSDC="$(jq -r '.chains[] | select(.chainId==138) | .cusdc // empty' "$CONFIG")"
WETH9="$(jq -r '.chains[] | select(.chainId==138) | .weth9 // empty' "$CONFIG")"
fi
BASE_URL="${BASE_URL:-https://dbis-api.d-bis.org/api/v1}"
CUSDT="${CUSDT:-0x93E66202A11B1772E55407B32B44e5Cd8eda7f22}"
CUSDC="${CUSDC:-0xf22258f57794CC8E06237084b353Ab30fFfa640b}"
WETH9="${WETH9:-0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2}"
for arg in "$@"; do
case "$arg" in
--dry-run) DRY_RUN=true ;;
--amount-raw=*) AMOUNT_RAW="${arg#*=}" ;;
esac
done
# Try quote cUSDT -> WETH
quote_cusdt_weth() {
local url="${1:-$BASE_URL}"
curl -sS --connect-timeout 5 "${url}/quote?chainId=138&tokenIn=${CUSDT}&tokenOut=${WETH9}&amountIn=${AMOUNT_RAW}" 2>/dev/null || echo '{"amountOut":null,"error":"request failed"}'
}
# Try quote cUSDC -> WETH
quote_cusdc_weth() {
local url="${1:-$BASE_URL}"
curl -sS --connect-timeout 5 "${url}/quote?chainId=138&tokenIn=${CUSDC}&tokenOut=${WETH9}&amountIn=${AMOUNT_RAW}" 2>/dev/null || echo '{"amountOut":null,"error":"request failed"}'
}
echo "Chain 138 path: tokens → gas (WETH)"
echo " Token-aggregation: $BASE_URL"
echo " Amount (raw): $AMOUNT_RAW"
echo ""
res_cusdt="$(quote_cusdt_weth)"
res_cusdc="$(quote_cusdc_weth)"
amount_out_cusdt="$(echo "$res_cusdt" | jq -r '.amountOut // empty' 2>/dev/null)"
amount_out_cusdc="$(echo "$res_cusdc" | jq -r '.amountOut // empty' 2>/dev/null)"
err_cusdt="$(echo "$res_cusdt" | jq -r '.error // empty' 2>/dev/null)"
err_cusdc="$(echo "$res_cusdc" | jq -r '.error // empty' 2>/dev/null)"
if [[ -n "$amount_out_cusdt" && "$amount_out_cusdt" != "null" && "$amount_out_cusdt" -gt 0 ]] 2>/dev/null; then
echo " cUSDT → WETH: quote available (amountOut=$amount_out_cusdt). Pool exists; use DODO PMM swap then optional unwrap."
echo " Action: build DODO swap tx (swapCUSDTFor* to WETH pool) and optional WETH9.withdraw; see DEX_AND_AGGREGATORS_CHAIN138_EXPLAINER.md."
exit 0
fi
if [[ -n "$amount_out_cusdc" && "$amount_out_cusdc" != "null" && "$amount_out_cusdc" -gt 0 ]] 2>/dev/null; then
echo " cUSDC → WETH: quote available (amountOut=$amount_out_cusdc). Pool exists; use DODO PMM swap then optional unwrap."
echo " Action: build DODO swap tx (swapCUSDCFor* to WETH pool) and optional WETH9.withdraw; see DEX_AND_AGGREGATORS_CHAIN138_EXPLAINER.md."
exit 0
fi
# Fallback URL if primary failed with network error
if [[ -z "$amount_out_cusdt" && -z "$amount_out_cusdc" && -n "$FALLBACK_URL" ]]; then
res_cusdt="$(quote_cusdt_weth "$FALLBACK_URL")"
amount_out_cusdt="$(echo "$res_cusdt" | jq -r '.amountOut // empty' 2>/dev/null)"
if [[ -n "$amount_out_cusdt" && "$amount_out_cusdt" != "null" && "$amount_out_cusdt" -gt 0 ]] 2>/dev/null; then
echo " cUSDT → WETH: quote available (fallback URL). Pool exists."
exit 0
fi
fi
echo " No cUSDT/cUSDC → WETH pool found on Chain 138 (token-aggregation returned no quote)."
echo " Chain 138 gas: use genesis alloc or validator transfer. See FUNDING_AND_DEPLOYMENT_CHECKLIST.md."
echo " Output: method=genesis_or_validator"
exit 0

View File

@@ -0,0 +1,158 @@
#!/usr/bin/env bash
# Deployer gas auto-route orchestrator: for each chain where deployer native balance is below
# threshold, dispatch to internal (138), Protocolink (public), or manual (Wemix) path.
# Uses config/deployer-gas-routes.json and smom-dbis-138/.env for RPC and deployer.
#
# Usage:
# ./scripts/deployment/deployer-gas-auto-route.sh [--dry-run] [--chain CHAIN_ID] [--no-execute]
# # From repo root; load-project-env sources smom-dbis-138/.env
#
# Requires: jq, curl, cast (Foundry). Optional: Node for protocolink-swap-to-gas.js.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
if [[ -f "$PROJECT_ROOT/scripts/lib/load-project-env.sh" ]]; then
source "$PROJECT_ROOT/scripts/lib/load-project-env.sh"
fi
CONFIG="${PROJECT_ROOT}/config/deployer-gas-routes.json"
DRY_RUN=false
NO_EXECUTE=false
CHAIN_FILTER=""
for arg in "$@"; do
case "$arg" in
--dry-run) DRY_RUN=true ;;
--no-execute) NO_EXECUTE=true ;;
--chain=*) CHAIN_FILTER="${arg#*=}" ;;
--chain) CHAIN_FILTER="${2:-}"; shift ;;
esac
done
if [[ ! -f "$CONFIG" ]]; then
echo "ERROR: Config not found: $CONFIG" >&2
exit 1
fi
DEPLOYER="${DEPLOYER_ADDRESS:-$(jq -r '.deployerAddress // empty' "$CONFIG")}"
if [[ -z "$DEPLOYER" && -n "${PRIVATE_KEY:-}" ]] && command -v cast &>/dev/null; then
DEPLOYER="$(cast wallet address "$PRIVATE_KEY" 2>/dev/null || true)"
fi
DEPLOYER="${DEPLOYER:-0x4A666F96fC8764181194447A7dFdb7d471b301C8}"
# Map chainId to RPC env var name (from check-balances-gas-and-deploy.sh)
get_rpc_for_chain() {
local c="$1"
case "$c" in
1) echo "${ETHEREUM_MAINNET_RPC:-}" ;;
56) echo "${BSC_RPC_URL:-${BSC_MAINNET_RPC:-}}" ;;
137) echo "${POLYGON_MAINNET_RPC:-}" ;;
138) echo "${RPC_URL_138:-}" ;;
10) echo "${OPTIMISM_MAINNET_RPC:-}" ;;
42161) echo "${ARBITRUM_MAINNET_RPC:-}" ;;
8453) echo "${BASE_MAINNET_RPC:-}" ;;
43114) echo "${AVALANCHE_RPC_URL:-${AVALANCHE_MAINNET_RPC:-}}" ;;
100) echo "${GNOSIS_MAINNET_RPC:-${GNOSIS_RPC:-}}" ;;
25) echo "${CRONOS_RPC_URL:-}" ;;
42220) echo "${CELO_RPC_URL:-}" ;;
1111) echo "${WEMIX_RPC_URL:-}" ;;
651940) echo "${ALLTRA_MAINNET_RPC:-}" ;;
*) echo "" ;;
esac
}
# thresholdEther is human number; convert to wei for ETH-like 18 decimals. For MATIC/BNB/etc same scale.
threshold_to_wei() {
local th="$1"
echo "${th}" | awk 'BEGIN { OFMT="%.0f" } { gsub(/,/,""); printf "%.0f", $0 * 1e18 }'
}
echo "=============================================="
echo "Deployer gas auto-route"
echo "Deployer: ${DEPLOYER:0:6}...${DEPLOYER: -6}"
echo "Config: $CONFIG"
echo "=============================================="
echo ""
needs_gas=()
while read -r line; do
chain_id="$(echo "$line" | jq -r '.chainId')"
name="$(echo "$line" | jq -r '.name')"
method="$(echo "$line" | jq -r '.method')"
th_ether="$(echo "$line" | jq -r '.thresholdEther')"
native_sym="$(echo "$line" | jq -r '.nativeSymbol // "native"')"
[[ "$chain_id" == "null" || -z "$chain_id" ]] && continue
[[ -n "$CHAIN_FILTER" && "$CHAIN_FILTER" != "$chain_id" ]] && continue
rpc="$(get_rpc_for_chain "$chain_id")"
if [[ -z "$rpc" ]]; then
echo "[$chain_id] $name — no RPC configured; skip"
continue
fi
balance_wei="$(cast balance "$DEPLOYER" --rpc-url "$rpc" 2>/dev/null || echo "0")"
[[ -z "$balance_wei" || ! "$balance_wei" =~ ^[0-9]+$ ]] && balance_wei="0"
th_wei="$(threshold_to_wei "$th_ether")"
if [[ "$(echo "$balance_wei >= $th_wei" | bc 2>/dev/null)" -eq 1 ]]; then
echo "[$chain_id] $name — balance OK (>= $th_ether $native_sym); skip"
continue
fi
echo "[$chain_id] $name — below threshold ($th_ether); method=$method"
needs_gas+=("$chain_id|$name|$method|$line")
done < <(jq -c '.chains[]' "$CONFIG" 2>/dev/null)
echo ""
if [[ ${#needs_gas[@]} -eq 0 ]]; then
echo "No chains need gas. Done."
exit 0
fi
echo "Chains needing gas: ${#needs_gas[@]}"
echo ""
for entry in "${needs_gas[@]}"; do
IFS='|' read -r chain_id name method line <<< "$entry"
echo "--- $name (chain $chain_id) ---"
case "$method" in
internal)
if [[ "$chain_id" == "138" ]]; then
"$SCRIPT_DIR/chain138-tokens-to-gas.sh" ${DRY_RUN:+--dry-run} 2>&1 || true
else
echo " Internal path only for chain 138; skip."
fi
;;
protocolink)
if command -v node &>/dev/null; then
node "$SCRIPT_DIR/protocolink-swap-to-gas.cjs" --chain-id "$chain_id" --no-execute 2>&1 || true
else
echo " Install Node to run protocolink-swap-to-gas.cjs for this chain."
fi
;;
manual)
manual_links="$(echo "$line" | jq -r '.manualLinks[]? // empty' 2>/dev/null)"
manual_instr="$(echo "$line" | jq -r '.manualInstructions // empty' 2>/dev/null)"
echo " $manual_instr"
if [[ -n "$manual_links" ]]; then
echo "$manual_links" | while read -r url; do [[ -n "$url" ]] && echo " $url"; done
fi
if [[ "$chain_id" == "25" || "$chain_id" == "1111" ]]; then
echo " For all swap routes (multiple aggregators): ./scripts/deployment/acquire-cro-and-wemix-gas.sh"
fi
if [[ "$chain_id" == "1111" ]] && command -v node &>/dev/null; then
node "$SCRIPT_DIR/wemix-acquire-via-lifi.js" --dry-run 2>&1 | head -20
fi
;;
lifi|jumper)
echo " LiFi/Jumper path not yet implemented; use manual links or wemix-acquire-via-lifi.js for Wemix."
;;
*)
echo " Unknown method: $method"
;;
esac
echo ""
done
echo "Done. See docs/03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md for full steps."

View File

@@ -0,0 +1,175 @@
#!/usr/bin/env node
/**
* Protocolink path for deployer gas auto-route: get quote and build tx data for
* swapping ERC-20 (USDT, USDC, LINK) to native gas (or WETH) on Protocolink-supported chains.
*
* Usage:
* node scripts/deployment/protocolink-swap-to-gas.cjs --chain-id 1 [--token USDC] [--amount-raw 1000000] [--no-execute]
* PROTOCOLINK_API_URL=https://api.protocolink.com node scripts/deployment/protocolink-swap-to-gas.cjs --chain-id 137
*
* Requires: Node 18+ (fetch), config/deployer-gas-routes.json for chain list.
* Output: JSON with quote and tx building instructions; no private key or signing in script.
*/
const fs = require('fs');
const path = require('path');
const PROJECT_ROOT = path.resolve(__dirname, '../..');
const CONFIG_PATH = path.join(PROJECT_ROOT, 'config/deployer-gas-routes.json');
const API_BASE = process.env.PROTOCOLINK_API_URL || 'https://api.protocolink.com';
const PROTOCOL_ID = process.env.PROTOCOLINK_PROTOCOL || 'paraswap-v5';
const LOGIC_ID = 'swap-token';
const SLIPPAGE_BPS = parseInt(process.env.SLIPPAGE_BPS || '150', 10);
// Common token addresses per chain (mainnet; extend as needed)
const NATIVE_OR_WETH = {
1: { address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', decimals: 18, symbol: 'WETH' },
56: { address: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', decimals: 18, symbol: 'WBNB' },
137: { address: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', decimals: 18, symbol: 'WMATIC' },
100: { address: '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', decimals: 18, symbol: 'WXDAI' },
10: { address: '0x4200000000000000000000000000000000000006', decimals: 18, symbol: 'WETH' },
42161: { address: '0x82aF49447D8a07e3bd95BD0d56f35241523fBb1', decimals: 18, symbol: 'WETH' },
8453: { address: '0x4200000000000000000000000000000000000006', decimals: 18, symbol: 'WETH' },
43114: { address: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', decimals: 18, symbol: 'WAVAX' },
25: { address: '0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23', decimals: 18, symbol: 'WCRO' },
};
const USDT = {
1: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
56: '0x55d398326f99059fF775485246999027B3197955',
137: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
100: '0x4ECaBa5870353805a9F068101A40E0f32ed605C6',
10: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58',
42161: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9',
8453: '0x0000000000000000000000000000000000000000', // TBD
43114: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7',
25: '0x66e428c3f67a68878562e79A0234c1F83c208770',
};
const USDC = {
1: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
56: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',
137: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',
100: '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83',
10: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',
42161: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
43114: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E',
25: '0xc21223249CA28397B4B6541dfFaEcC539BfF0c59',
};
const LINK = {
1: '0x514910771AF9Ca656af840dff83E8264EcF986CA',
56: '0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD',
137: '0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39',
100: '0xE2e73A1c69ecF83F464CECE147577d37BCf26298',
10: '0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6',
42161: '0xf97f4df75117a78c1A5a0DBb814Af92458539FB4',
8453: '0x0000000000000000000000000000000000000000', // TBD
43114: '0x5947BB275c521040051D82396192181b413227A3',
25: '0xE7d7D8374CF6a8e3F656c433F6B0f0C81F6d06F5',
};
function getTokenIn(chainId, symbol) {
const s = (symbol || 'USDC').toUpperCase();
let addr;
if (s === 'USDT') addr = USDT[chainId];
else if (s === 'USDC') addr = USDC[chainId];
else if (s === 'LINK') addr = LINK[chainId];
else return null;
if (!addr || addr === '0x0000000000000000000000000000000000000000') return null;
const decimals = s === 'LINK' ? 18 : 6;
return { chainId, address: addr, decimals, symbol: s, name: s };
}
function getTokenOut(chainId) {
const t = NATIVE_OR_WETH[chainId];
if (!t) return null;
return { chainId, address: t.address, decimals: t.decimals, symbol: t.symbol, name: t.symbol };
}
function parseArgs() {
const args = process.argv.slice(2);
let chainId, tokenIn = 'USDC', amountRaw, noExecute = false;
for (let i = 0; i < args.length; i++) {
if (args[i] === '--chain-id' && args[i + 1]) chainId = parseInt(args[i + 1], 10);
if (args[i] === '--token' && args[i + 1]) tokenIn = args[i + 1];
if (args[i] === '--amount-raw' && args[i + 1]) amountRaw = args[i + 1];
if (args[i] === '--no-execute') noExecute = true;
}
return { chainId, tokenIn, amountRaw: amountRaw || '1000000', noExecute };
}
async function requestQuote(chainId, tokenInObj, tokenOutObj, amountRaw) {
const url = `${API_BASE}/v1/protocols/${chainId}/${PROTOCOL_ID}/${LOGIC_ID}/quote`;
const body = {
input: {
token: tokenInObj,
amount: amountRaw,
},
tokenOut: tokenOutObj,
slippage: SLIPPAGE_BPS,
};
const res = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
});
if (!res.ok) {
const text = await res.text();
throw new Error(`Protocolink quote failed ${res.status}: ${text}`);
}
return res.json();
}
function loadConfig() {
if (!fs.existsSync(CONFIG_PATH)) return null;
return JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8'));
}
async function main() {
const { chainId, tokenIn: tokenSymbol, amountRaw, noExecute } = parseArgs();
if (!chainId) {
console.error('Usage: node protocolink-swap-to-gas.cjs --chain-id <chainId> [--token USDC|USDT|LINK] [--amount-raw <raw>] [--no-execute]');
process.exit(1);
}
const tokenInObj = getTokenIn(chainId, tokenSymbol);
const tokenOutObj = getTokenOut(chainId);
if (!tokenInObj || !tokenOutObj) {
console.error(JSON.stringify({
error: 'Unsupported chain or token',
chainId,
tokenIn: tokenSymbol,
message: 'Add token addresses for this chain in protocolink-swap-to-gas.cjs or use a supported chain (1, 56, 137, 100, 10, 42161, 8453, 43114, 25).',
}, null, 2));
process.exit(1);
}
try {
const quote = await requestQuote(chainId, tokenInObj, tokenOutObj, amountRaw);
const output = {
chainId,
protocolId: PROTOCOL_ID,
logicId: LOGIC_ID,
quote,
tokenIn: tokenInObj,
tokenOut: tokenOutObj,
amountInRaw: amountRaw,
slippageBps: SLIPPAGE_BPS,
nextStep: 'Use Protocolink API "build transaction" or SDK to build tx; sign with deployer key and submit. See https://docs.protocolink.com/protocolink-api/overview.',
noExecute: true,
};
console.log(JSON.stringify(output, null, 2));
} catch (err) {
console.error(JSON.stringify({
error: err.message,
chainId,
tokenIn: tokenSymbol,
}, null, 2));
process.exit(1);
}
}
main();

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Check that Chain 138 deployed contracts have bytecode on-chain. # Check that Chain 138 deployed contracts have bytecode on-chain.
# Address list: 59 (core, CCIP, PMM, vault/reserve, CompliantFiatTokens). Source: CONTRACT_ADDRESSES_REFERENCE, ADDRESS_MATRIX.
# Usage: ./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL] [--dry-run] # Usage: ./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL] [--dry-run]
# Default RPC: from env RPC_URL_138 (Chain 138 Core standard) or config/ip-addresses.conf, else https://rpc-core.d-bis.org # Default RPC: from env RPC_URL_138 (Chain 138 Core standard) or config/ip-addresses.conf, else https://rpc-core.d-bis.org
# Optional: SKIP_EXIT=1 to exit 0 even when some addresses MISS (e.g. when RPC unreachable from this host). # Optional: SKIP_EXIT=1 to exit 0 even when some addresses MISS (e.g. when RPC unreachable from this host).
@@ -81,7 +82,28 @@ else
"0x6427F9739e6B6c3dDb4E94fEfeBcdF35549549d8" # MirrorRegistry "0x6427F9739e6B6c3dDb4E94fEfeBcdF35549549d8" # MirrorRegistry
"0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc" # AlltraAdapter "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc" # AlltraAdapter
"0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc" # TransactionMirror Chain 138 (deployed 2026-02-27; set TRANSACTION_MIRROR_ADDRESS in .env) "0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc" # TransactionMirror Chain 138 (deployed 2026-02-27; set TRANSACTION_MIRROR_ADDRESS in .env)
"0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8" # DODO cUSDT-cUSDC pool (pending until CreateCUSDTCUSDCPool succeeds) "0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8" # DODO cUSDT-cUSDC pool
"0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D" # DODOPMMIntegration
"0x8EF6657D2a86c569F6ffc337EE6b4260Bd2e59d0" # DODOPMMProvider
"0xa3Ee6091696B28e5497b6F491fA1e99047250c59" # DODO pool cUSDT/USDT
"0x90bd9Bf18Daa26Af3e814ea224032d015db58Ea5" # DODO pool cUSDC/USDC
"0x607e97cD626f209facfE48c1464815DDE15B5093" # ReserveSystem
"0x34B73e6EDFd9f85a7c25EeD31dcB13aB6E969b96" # ReserveTokenIntegration
"0xEA4C892D6c1253797c5D95a05BF3863363080b4B" # RegulatedEntityRegistry (vault)
"0xB2Ac70f35A81481B005067ed6567a5043BA32336" # VaultFactory
"0x67b3831dc64C14FB9352B2a45C6Dd69b3C86B7af" # Ledger (vault)
"0x3aCdbCB749d6037a02F0ef6ea2E5Fb89D31fAB72" # Liquidation (vault)
"0xf23E1eDa304082ab7a81531dFE6020E6105e77A8" # XAU Oracle (vault)
"0x8085961F9cF02b4d800A3c6d386D31da4B34266a" # cEURC
"0xdf4b71c61E5912712C1Bdd451416B9aC26949d72" # cEURT
"0x003960f16D9d34F2e98d62723B6721Fb92074aD2" # cGBPC
"0x350f54e4D23795f86A9c03988c7135357CCaD97c" # cGBPT
"0xD51482e567c03899eecE3CAe8a058161FD56069D" # cAUDC
"0xEe269e1226a334182aace90056EE4ee5Cc8A6770" # cJPYC
"0x873990849DDa5117d7C644f0aF24370797C03885" # cCHFC
"0x54dBd40cF05e15906A2C21f600937e96787f5679" # cCADC
"0x290E52a8819A4fbD0714E517225429aA2B70EC6b" # cXAUC
"0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E" # cXAUT
) )
fi fi

View File

@@ -0,0 +1,77 @@
#!/usr/bin/env bash
# Check all Chain 138 DODO PMM pool token balances (base + quote).
# Uses eth_call (curl) for compatibility with RPCs that reject some cast call formats.
#
# Usage: ./scripts/verify/check-pmm-pool-balances-chain138.sh [RPC_URL]
# Default RPC: http://192.168.11.211:8545
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
RPC="${1:-${RPC_URL_138:-http://192.168.11.211:8545}}"
# Token addresses (Chain 138 canonical)
cUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
cUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
OFFICIAL_USDT="0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619"
# Official USDC from integration or placeholder (no contract on 138)
OFFICIAL_USDC="0x0000000000000000000000000000000000000000"
# Pool addresses
POOL_CUSDTCUSDC="0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8"
POOL_CUSDTUSDT="0xa3Ee6091696B28e5497b6F491fA1e99047250c59"
POOL_CUSDCUSDC="0x90bd9Bf18Daa26Af3e814ea224032d015db58Ea5"
pads() { local a; a=$(echo "$1" | sed 's/0x//'); printf '%064s' "$a" | tr ' ' '0'; }
balance() {
local tok="$1" acc="$2"
local d="0x70a08231$(pads "$acc")"
local res
res=$(curl -s -X POST "$RPC" -H "Content-Type: application/json" \
--data "{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"$tok\",\"data\":\"$d\"},\"latest\"],\"id\":1}" \
| jq -r '.result // empty')
echo "${res:-0x0000000000000000000000000000000000000000000000000000000000000000}"
}
hex2dec() { local h="$1"; [[ -z "$h" || "$h" == "0x" ]] && echo "0" && return; printf '%d' "$h"; }
human6() { local r; r=$(hex2dec "$1"); echo "scale=6; $r / 1000000" | bc 2>/dev/null || echo "$r"; }
echo "=============================================="
echo " Chain 138 — PMM pool balances"
echo " RPC: $RPC"
echo "=============================================="
echo ""
# Pool 1: cUSDT / cUSDC (base / quote)
echo "Pool 1: cUSDT / cUSDC"
echo " Address: $POOL_CUSDTCUSDC"
r1=$(balance "$cUSDT" "$POOL_CUSDTCUSDC")
r2=$(balance "$cUSDC" "$POOL_CUSDTCUSDC")
echo " cUSDT (base): raw=$r1$(human6 "$r1")"
echo " cUSDC (quote): raw=$r2$(human6 "$r2")"
echo ""
# Pool 2: cUSDT / USDT (official USDT has no code on 138)
echo "Pool 2: cUSDT / USDT (official)"
echo " Address: $POOL_CUSDTUSDT"
r1=$(balance "$cUSDT" "$POOL_CUSDTUSDT")
r2=$(balance "$OFFICIAL_USDT" "$POOL_CUSDTUSDT")
echo " cUSDT (base): raw=${r1:-0x0}$(human6 "$r1")"
echo " USDT (quote): raw=${r2:-0x0}$(human6 "$r2")"
echo ""
# Pool 3: cUSDC / USDC (official USDC not deployed on 138)
echo "Pool 3: cUSDC / USDC (official)"
echo " Address: $POOL_CUSDCUSDC"
r1=$(balance "$cUSDC" "$POOL_CUSDCUSDC")
echo " cUSDC (base): raw=$r1$(human6 "$r1")"
if [[ "$OFFICIAL_USDC" != "0x0000000000000000000000000000000000000000" ]]; then
r2=$(balance "$OFFICIAL_USDC" "$POOL_CUSDCUSDC")
echo " USDC (quote): raw=$r2$(human6 "$r2")"
else
echo " USDC (quote): N/A (no official USDC contract on 138)"
fi
echo ""
echo "Note: Pool 1 (cUSDT/cUSDC) is the only pool with liquidity on 138. Pools 2 and 3 use official USDT/USDC which have no contract on Chain 138."
echo "Done."

View File

@@ -32,11 +32,11 @@ FEE_COLLECTOR=0xF78246eB94c6CB14018E507E60661314E5f4C53f
DEBT_REGISTRY=0x95BC4A997c0670d5DAC64d55cDf3769B53B63C28 DEBT_REGISTRY=0x95BC4A997c0670d5DAC64d55cDf3769B53B63C28
POLICY_MANAGER=0x0C4FD27018130A00762a802f91a72D6a64a60F14 POLICY_MANAGER=0x0C4FD27018130A00762a802f91a72D6a64a60F14
TOKEN_IMPLEMENTATION=0x0059e237973179146237aB49f1322E8197c22b21 TOKEN_IMPLEMENTATION=0x0059e237973179146237aB49f1322E8197c22b21
CCIPWETH9_BRIDGE_CHAIN138=0x971cD9D156f193df8051E48043C476e53ECd4693 CCIPWETH9_BRIDGE_CHAIN138=0x9cba0D04Ae5f6f16e3C599025aB97a05c4A593d5
CCIPWETH10_BRIDGE_CHAIN138=0xe0E93247376aa097dB308B92e6Ba36bA015535D0 CCIPWETH10_BRIDGE_CHAIN138=0xe0E93247376aa097dB308B92e6Ba36bA015535D0
LINK_TOKEN=0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03 LINK_TOKEN=0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03
CCIP_FEE_TOKEN=0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03 CCIP_FEE_TOKEN=0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03
CCIP_ROUTER=0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e CCIP_ROUTER=0x89EC6574eeAC72Ed1b93DfCa4DB43547C8367FF0
CCIP_SENDER=0x105F8A15b819948a89153505762444Ee9f324684 CCIP_SENDER=0x105F8A15b819948a89153505762444Ee9f324684
UNIVERSAL_ASSET_REGISTRY=0xAEE4b7fBe82E1F8295951584CBc772b8BBD68575 UNIVERSAL_ASSET_REGISTRY=0xAEE4b7fBe82E1F8295951584CBc772b8BBD68575
GOVERNANCE_CONTROLLER=0xA6891D5229f2181a34D4FF1B515c3Aa37dd90E0e GOVERNANCE_CONTROLLER=0xA6891D5229f2181a34D4FF1B515c3Aa37dd90E0e