docs: update master documentation and push to Gitea (2026-03-06)
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
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:
@@ -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.10–12), 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.10–12), 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.
|
||||||
|
|||||||
45
.cursor/rules/operator-lan-access-check.mdc
Normal file
45
.cursor/rules/operator-lan-access-check.mdc
Normal 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.
|
||||||
@@ -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"
|
||||||
|
|||||||
143
config/cro-wemix-swap-routes.json
Normal file
143
config/cro-wemix-swap-routes.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
156
config/deployer-gas-routes.json
Normal file
156
config/deployer-gas-routes.json
Normal 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"
|
||||||
|
}
|
||||||
@@ -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)"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ This runs in order: (0) make RPC VMIDs 2101, 2500–2505 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 30–60s) |
|
| rpc-http-prv | Container 2101 stopped or Besu not listening on 8545 | `pct start 2101`; inside CT: `systemctl start besu` (allow 30–60s) |
|
||||||
| rpc-alltra*, rpc-hybx* | Containers 2500–2505 stopped or Besu not running | Same: `pct start <vmid>`; inside CT: `systemctl start besu` |
|
| rpc-alltra*, rpc-hybx* | Containers 2500–2505 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)
|
||||||
|
|
||||||
|
|||||||
253
docs/00-meta/ADDITIONAL_RECOMMENDATIONS_TABLE.md
Normal file
253
docs/00-meta/ADDITIONAL_RECOMMENDATIONS_TABLE.md
Normal 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 (R1–R24)
|
||||||
|
|
||||||
|
| # | 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 |
|
||||||
|
| R6–R7 | API keys in .env; restrict deployer and RPC admin | Access review |
|
||||||
|
| R8–R9 | Set RPC_URL_138; use GAS_PRICE on Chain 138 | Before deploy / every forge script |
|
||||||
|
| R10–R11 | Phased core deploy order; manage nonce if tx stuck | Deploy order / troubleshooting |
|
||||||
|
| R12–R15 | Keep runbooks in sync; document addresses; consider single deploy→verify script | After script/URL changes; per-chain |
|
||||||
|
| R16–R19 | Env per environment; monitor bridge/oracle; Blockscout up; run forge test before deploy | Config / health / pre-deploy |
|
||||||
|
| R20–R24 | 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 |
|
||||||
|
|---|----------------|----------|--------|
|
||||||
|
| 1–11 | .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) |
|
||||||
|
| 12–20 | Retry/timeout, structured logging, log collection, resource/network/DB tuning, CI/CD, CLI | Medium | Same |
|
||||||
|
| 21–35 | Auto-scale, progress indicators, --dry-run, config validation, FAQ, script comments | Low / quick wins | Same |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Code quality & scripts
|
||||||
|
|
||||||
|
| # | Recommendation | Priority |
|
||||||
|
|---|----------------|----------|
|
||||||
|
| 36–38 | Shebang, set -euo pipefail + traps, script header template | High/Medium |
|
||||||
|
| 39–43 | Linting (shellcheck, shfmt), script consolidation, shared lib, performance, auto-docs | Medium/Low |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. Documentation
|
||||||
|
|
||||||
|
| # | Recommendation | Priority |
|
||||||
|
|---|----------------|----------|
|
||||||
|
| 44–47 | Consolidation, accuracy review, inline/API docs | Medium |
|
||||||
|
| 68–74 | Quick reference cards, decision trees, config templates, examples, glossary, diagrams, TOC | High/Medium/Low |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. Security
|
||||||
|
|
||||||
|
| # | Recommendation | Priority |
|
||||||
|
|---|----------------|----------|
|
||||||
|
| 48–52 | Secret audit, input validation, security scanning, RBAC, config validation | High/Medium |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 14. Configuration, testing, monitoring & DX
|
||||||
|
|
||||||
|
| # | Recommendation | Priority |
|
||||||
|
|---|----------------|----------|
|
||||||
|
| 53–67 | 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 |
|
||||||
|
|---|----------------|------|
|
||||||
|
| 75–78 | VLAN, observability (Prometheus/Grafana/Loki), CCIP fleet, sovereign tenants | Phase 1–4 |
|
||||||
|
| 79–81 | Besu RPC containers, Hyperledger containers, Blockscout container | High |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 16. Codebase & placeholders
|
||||||
|
|
||||||
|
| # | Recommendation | Priority |
|
||||||
|
|---|----------------|----------|
|
||||||
|
| 82–91 | 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 |
|
||||||
|
|---|----------------|--------|
|
||||||
|
| 92–105 | 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 |
|
||||||
|
|---|----------------|----------|
|
||||||
|
| 106–121 | Etherlink/Jumper/LiFi verification; InitializeRegistry, adapters, relay, DON, metrics, tests | External / contracts / off-chain |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 19. Besu / blockchain
|
||||||
|
|
||||||
|
| # | Recommendation | Notes |
|
||||||
|
|---|----------------|------|
|
||||||
|
| 122–126 | RPC config location, tx pool clearing, tuning, automated monitoring, logging | Phase 2–3 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 20. Maintenance (ongoing)
|
||||||
|
|
||||||
|
| # | Task | Frequency |
|
||||||
|
|---|------|-----------|
|
||||||
|
| 135–139 | 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)
|
||||||
335
docs/00-meta/ALL_TASKS_INCLUDING_OPTIONAL.md
Normal file
335
docs/00-meta/ALL_TASKS_INCLUDING_OPTIONAL.md
Normal 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 (swap–bridge–swap) — 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 (X1–X14)
|
||||||
|
|
||||||
|
| # | 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 |
|
||||||
|
| X10–X14 | L2 pools, bridge UI, runbooks | Op/Code/Doc |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 21. Operator checklist (R1–R24)
|
||||||
|
|
||||||
|
- 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
|
||||||
|
- R6–R7: API keys in .env; restrict deployer and RPC admin
|
||||||
|
- R8–R9: Set RPC_URL_138; use GAS_PRICE on Chain 138
|
||||||
|
- R10–R11: Phased core deploy order; manage nonce if tx stuck
|
||||||
|
- R12–R15: Keep runbooks in sync; document addresses; single deploy→verify script
|
||||||
|
- R16–R19: Env per environment; monitor bridge/oracle; Blockscout up; run forge test before deploy
|
||||||
|
- R20–R24: 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 1–91)
|
||||||
|
|
||||||
|
- **Proxmox 1–35:** .env permissions, validator keys, SSH key-only, firewall 8006, VLANs, metrics, backup, runbooks, retry/timeout, logging, CI/CD, progress indicators, config validation, etc.
|
||||||
|
- **Code 36–43:** Shebang, set -euo pipefail, script header, shellcheck, shfmt, shared lib.
|
||||||
|
- **Doc 44–47, 68–74:** Consolidation, accuracy, quick reference, decision trees, glossary.
|
||||||
|
- **Security 48–52:** Secret audit, input validation, RBAC.
|
||||||
|
- **Config/testing 53–67:** Config templates, env standardization, test coverage, CI tests, health.
|
||||||
|
- **Infrastructure 75–81:** VLAN, observability, CCIP fleet, sovereign tenants, Besu containers.
|
||||||
|
- **Codebase 82–91:** Security audits, dbis_core TS, canonical env, AlltraAdapter, smart accounts, .bak.
|
||||||
|
|
||||||
|
**Ref:** ADDITIONAL_RECOMMENDATIONS_TABLE §10–16; 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 1–2 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 A–D
|
||||||
|
- [TASKS_TO_INCREASE_ALL_E2E_FLOWS.md](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md) — E2E waves and flows A/B/C
|
||||||
@@ -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.1–1.4; Phase A–C; 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 2–3 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.
|
||||||
@@ -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. Swap–bridge–swap (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.1–1.4) and **Phase A** (A.1–A.5) — hub liquidity and quote API.
|
||||||
|
2. **Phase B** (B.1–B.7) — bridge coverage + LINK; then B.4 top-ups for larger transfer volume.
|
||||||
|
3. **Swap–bridge–swap** (SBS.1–SBS.5) — full-path routes and quote API.
|
||||||
|
4. **Phase C** (C.1–C.5) — cW* and edge pools; liquidity sizing (6.1–6.6) for larger transfers.
|
||||||
|
5. **Ongoing:** LINK/gas top-ups, pool liquidity top-ups, PoolManager updates, inventory floors (6.3–6.6).
|
||||||
|
6. **Optional:** 7.1–7.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.2–SBS.5 pending.
|
||||||
|
- **Phase C:** deployment-status.json empty for cW* and pmmPools; C.1–C.5 pending.
|
||||||
|
- **Liquidity maintenance:** 6.1 verified; 6.3–6.6 pending or when Phase C live.
|
||||||
|
- **Optional:** 7.1–7.4 documented; not executed (optional).
|
||||||
@@ -47,9 +47,9 @@ Steps 1–2 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 E0–E7 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 E0–E7 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 1–2 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. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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 E0–E7 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 E0–E7 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/4–4/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/4–4/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.
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
93
docs/00-meta/NEXT_STEPS_LIST.md
Normal file
93
docs/00-meta/NEXT_STEPS_LIST.md
Normal 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/C3–C8, 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 A2–A3)
|
||||||
|
|
||||||
|
| # | 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. Swap–bridge–swap (C3–C8)
|
||||||
|
|
||||||
|
| # | 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 |
|
||||||
|
| C6–C8 | 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]` |
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -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 1–4.
|
**Full steps:** See runbook § Step 1–4.
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -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.1–B.3, A2–A3, C3–C8), [EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY](EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md) (Phase A–C, 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 |
|
||||||
|
|||||||
154
docs/00-meta/PROJECT_AND_SUBMODULES_REVIEW.md
Normal file
154
docs/00-meta/PROJECT_AND_SUBMODULES_REVIEW.md
Normal 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), 02–12 (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 A–D)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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.1–A.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).
|
||||||
@@ -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 |
|
||||||
|
|||||||
@@ -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 0–3, 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 0–3, DODOPMMProvider, pools), and what still requires Operator/LAN or external submission. Completable + preflight both passed.
|
||||||
|
|||||||
@@ -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 §4–5 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 §4–5 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)
|
||||||
|
|
||||||
|
|||||||
161
docs/00-meta/TASKS_ROUTING_SWAP_CROSSCHAIN.md
Normal file
161
docs/00-meta/TASKS_ROUTING_SWAP_CROSSCHAIN.md
Normal 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 (what’s 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. |
|
||||||
|
| **Swap–bridge–swap** | 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. Swap–bridge–swap (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.1–3.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 swap–bridge–swap 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 (B1–B2) → fund LINK (B3) → registry/token-mapping (B4–B7) → Alltra setBridgeFee (B8).
|
||||||
|
3. **Swap–bridge–swap:** Complete A + B → quote API (C3) → destination DEX wiring (C4) → optional coordinator (C5) → frontend (C6–C7) → 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
|
||||||
@@ -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 4–6 | Not run | Optional / other chains; Operator |
|
| Phase 4–6 | Not run | Optional / other chains; Operator |
|
||||||
|
|||||||
@@ -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) (A1–A5, B1–B8, C1–C8, D1–D3, E1–E2). **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 0–6. **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) → B–D. **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 0–6. **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) → B–D. **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/4–4/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/4–4/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-03–04 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 §4–5. |
|
| V6 | **External (Ledger, Trust, CoinGecko/CMC, on-ramps)** | ⏳ Pending | Per REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST §4–5. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 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 5–15+ 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 5–15+ 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 (A1–A5), bridges and routing (B1–B8), swap–bridge–swap (C1–C8), cW* edge pools (D1–D3), deployer gas routing (E1–E2).
|
||||||
|
- **[ADDITIONAL_RECOMMENDATIONS_TABLE.md](ADDITIONAL_RECOMMENDATIONS_TABLE.md)** — Immediate/blocking (V2–V6), pre-deploy (0a–0), high/medium/LAN (1–12), token deployments (T2–T7), low priority (12–14), external (15–18), operator R1–R24, Proxmox (1–35), code quality (36–43), documentation (44–47, 68–74), security (48–52), config/testing (53–67), infrastructure (75–81), codebase (82–91), MetaMask/explorer (92–105), Tezos/LiFi/Jumper (106–121), Besu (122–126), maintenance (135–139), E2E waves (E0–E7), 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 (A1–A5, B1–B8, C1–C8, D1–D3, E1–E2)
|
||||||
- [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
|
||||||
|
|||||||
97
docs/03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md
Normal file
97
docs/03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md
Normal 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). |
|
||||||
@@ -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 (R1–R24)** | 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 (R1–R24)** | 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, R1–R24, full recommendations list.
|
7. **Verify & recommendations:** check-contracts-on-chain-138.sh, Blockscout verify, update address docs, R1–R24, full recommendations list.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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.1–C.2 cW* + edge pools | 📋 Runbook | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md). |
|
| C | C.1–C.2 cW* + edge pools | 📋 Runbook | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md). |
|
||||||
| D | D.1–D.4 Optional XAU/vaults/trustless | 📋 Checklist | [PHASE_D_OPTIONAL_CHECKLIST.md](PHASE_D_OPTIONAL_CHECKLIST.md). |
|
| D | D.1–D.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. |
|
||||||
|
|||||||
@@ -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).
|
||||||
|
|||||||
@@ -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]
|
||||||
```
|
```
|
||||||
|
|||||||
37
docs/03-deployment/WEMIX_ACQUISITION_TABLED.md
Normal file
37
docs/03-deployment/WEMIX_ACQUISITION_TABLED.md
Normal 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.
|
||||||
@@ -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.
|
||||||
|
|||||||
96
docs/04-configuration/ADDITIONAL_PATHS_AND_EXTENSIONS.md
Normal file
96
docs/04-configuration/ADDITIONAL_PATHS_AND_EXTENSIONS.md
Normal 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. |
|
||||||
58
docs/04-configuration/DBIS_POSTGRES_HA_PAIR_RUNBOOK.md
Normal file
58
docs/04-configuration/DBIS_POSTGRES_HA_PAIR_RUNBOOK.md
Normal 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.
|
||||||
@@ -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) |
|
||||||
|
|||||||
64
docs/04-configuration/E2E_DNS_FROM_LAN_RUNBOOK.md
Normal file
64
docs/04-configuration/E2E_DNS_FROM_LAN_RUNBOOK.md
Normal 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 machine’s 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 bastion’s 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`
|
||||||
@@ -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 script’s 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). |
|
||||||
|
|||||||
@@ -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).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
75
docs/04-configuration/THIRDWEB_INSIGHT_INDEXER.md
Normal file
75
docs/04-configuration/THIRDWEB_INSIGHT_INDEXER.md
Normal 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 doesn’t 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.
|
||||||
@@ -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).
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
96
docs/07-ccip/NON_PREFUNDED_AVAX_MIGRATION_RUNBOOK.md
Normal file
96
docs/07-ccip/NON_PREFUNDED_AVAX_MIGRATION_RUNBOOK.md
Normal 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`
|
||||||
@@ -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`. |
|
||||||
|
|
||||||
|
|||||||
@@ -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 |
|
||||||
|
|||||||
@@ -77,6 +77,8 @@
|
|||||||
- **CCIP:** Each destination chain has a CCIP WETH9/WETH10 receiver bridge; 138’s bridges have `addDestination(chainSelector, receiverBridge)` for two-way routing.
|
- **CCIP:** Each destination chain has a CCIP WETH9/WETH10 receiver bridge; 138’s 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).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -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 A–D 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 A–D 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) |
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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.2–6.3; R1–R3. |
|
| 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.2–6.3; R1–R3. |
|
||||||
| 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. |
|
||||||
|
|
||||||
|
|||||||
@@ -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. |
|
||||||
|
|
||||||
|
|||||||
151
reports/path_b_execution_order_test_first_2026-03-04.md
Normal file
151
reports/path_b_execution_order_test_first_2026-03-04.md
Normal 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.
|
||||||
69
scripts/deployment/acquire-cro-and-wemix-gas.sh
Executable file
69
scripts/deployment/acquire-cro-and-wemix-gas.sh
Executable 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 ""
|
||||||
89
scripts/deployment/chain138-tokens-to-gas.sh
Executable file
89
scripts/deployment/chain138-tokens-to-gas.sh
Executable 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
|
||||||
158
scripts/deployment/deployer-gas-auto-route.sh
Executable file
158
scripts/deployment/deployer-gas-auto-route.sh
Executable 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."
|
||||||
175
scripts/deployment/protocolink-swap-to-gas.cjs
Normal file
175
scripts/deployment/protocolink-swap-to-gas.cjs
Normal 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();
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
77
scripts/verify/check-pmm-pool-balances-chain138.sh
Executable file
77
scripts/verify/check-pmm-pool-balances-chain138.sh
Executable 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."
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user