diff --git a/config/besu-node-lists/permissions-nodes.toml b/config/besu-node-lists/permissions-nodes.toml index 263f827..ff674b8 100644 --- a/config/besu-node-lists/permissions-nodes.toml +++ b/config/besu-node-lists/permissions-nodes.toml @@ -1,6 +1,6 @@ # Node Permissioning — SINGLE SOURCE OF TRUTH for all Besu nodes # Must match config/besu-node-lists/static-nodes.json and be deployed to every node. -# Generated by scripts/besu/collect-enodes-from-all-besu-nodes.sh — 30 nodes (203/204 removed, VMIDs destroyed). +# Generated by scripts/besu/collect-enodes-from-all-besu-nodes.sh — 34 enodes (incl. Putu RPC 2307/2308 .237/.238). nodes-allowlist=[ "enode://2221dd9fc65c9082d4a937832cba9f6759981888df6798407c390bd153f4332c152ea5d03dd9d9cda74d7990fb3479a5c4ba7166269322be9790eed9ebdcfe24@192.168.11.100:30303", @@ -25,6 +25,8 @@ nodes-allowlist=[ "enode://4dc4b9f8cffbc53349f6535ab9aa7785cbc0ae92928dcf4ef6f90638ace9fc69ff7d19c49a8bda54f78a000579c557ef25fce3c971c6ab0026b6e70c8e6e5cac@192.168.11.234:30303?discport=0", "enode://2de9fc2be46c2cedce182af65ac1f5fc5ed258d21cdf0ac2687a16618382159dae1f730650e6730cf7fc5dccb6b97bffd20e271e3eb4df5a69f38a8c4cba91b5@192.168.11.235:30303?discport=0", "enode://38bd43b934feaaccb978917c66b0abbf9b62e39bce6064a6d3ec557f61e13b75e293cbb2ab382278adda5ce51f451528c7c37d991255a0c31e9578b85fc1dd5a@192.168.11.236:30303?discport=0", + "enode://f7edb80de20089cb0b3a28b03e0491fafa1c9eb9a0344dadf343757ee2a44b577a861514fd7747a86f631c9e34519aef25a5f8996f20bc8dd460cd2bdc1bd490@192.168.11.237:30303", + "enode://4e2d4e94909813b7145e0e9cd7e56724f64ba91dd7dca0e70bd70742f930450cf57311f2c220cfe24a20e9f668a8e170755d626f84660aa1fbea85f75557eb8d@192.168.11.238:30303", "enode://38e138ea5a4b0b244e4484b5c327631b5d3c849dcb188ff3d9ff0a8b6ad7edb738303a1a948888c269aa7555e5ff47d75b7b63dbd579d05580b5442b3fa0ebfc@192.168.11.240:30303", "enode://159b282c4187ece6c1b3668428b8273264f04af67d45a6b17e348c5f9d733da5b5163de01b9eeff6ab0724d9dbc1abed5a2998737c095285f003ae723ae6b04c@192.168.11.241:30303", "enode://d41f330dc8c7a8fa84b83bbc1de9da2eba2ddc7258a94fc0024be95164cc7e0f15925c1b0d0f29d347a839734385db2eca05cbf31acbdb807cec44a13d78a898@192.168.11.242:30303", diff --git a/config/besu-node-lists/static-nodes.json b/config/besu-node-lists/static-nodes.json index 5e26262..a3ed365 100644 --- a/config/besu-node-lists/static-nodes.json +++ b/config/besu-node-lists/static-nodes.json @@ -21,6 +21,8 @@ "enode://4dc4b9f8cffbc53349f6535ab9aa7785cbc0ae92928dcf4ef6f90638ace9fc69ff7d19c49a8bda54f78a000579c557ef25fce3c971c6ab0026b6e70c8e6e5cac@192.168.11.234:30303?discport=0", "enode://2de9fc2be46c2cedce182af65ac1f5fc5ed258d21cdf0ac2687a16618382159dae1f730650e6730cf7fc5dccb6b97bffd20e271e3eb4df5a69f38a8c4cba91b5@192.168.11.235:30303?discport=0", "enode://38bd43b934feaaccb978917c66b0abbf9b62e39bce6064a6d3ec557f61e13b75e293cbb2ab382278adda5ce51f451528c7c37d991255a0c31e9578b85fc1dd5a@192.168.11.236:30303?discport=0", + "enode://f7edb80de20089cb0b3a28b03e0491fafa1c9eb9a0344dadf343757ee2a44b577a861514fd7747a86f631c9e34519aef25a5f8996f20bc8dd460cd2bdc1bd490@192.168.11.237:30303", + "enode://4e2d4e94909813b7145e0e9cd7e56724f64ba91dd7dca0e70bd70742f930450cf57311f2c220cfe24a20e9f668a8e170755d626f84660aa1fbea85f75557eb8d@192.168.11.238:30303", "enode://38e138ea5a4b0b244e4484b5c327631b5d3c849dcb188ff3d9ff0a8b6ad7edb738303a1a948888c269aa7555e5ff47d75b7b63dbd579d05580b5442b3fa0ebfc@192.168.11.240:30303", "enode://159b282c4187ece6c1b3668428b8273264f04af67d45a6b17e348c5f9d733da5b5163de01b9eeff6ab0724d9dbc1abed5a2998737c095285f003ae723ae6b04c@192.168.11.241:30303", "enode://d41f330dc8c7a8fa84b83bbc1de9da2eba2ddc7258a94fc0024be95164cc7e0f15925c1b0d0f29d347a839734385db2eca05cbf31acbdb807cec44a13d78a898@192.168.11.242:30303", diff --git a/docs/00-meta/NEXT_STEPS_INDEX.md b/docs/00-meta/NEXT_STEPS_INDEX.md index 3eacd12..28a901f 100644 --- a/docs/00-meta/NEXT_STEPS_INDEX.md +++ b/docs/00-meta/NEXT_STEPS_INDEX.md @@ -1,8 +1,10 @@ # Next Steps — Index -**Last Updated:** 2026-03-06 +**Last Updated:** 2026-03-28 **Purpose:** Single entry point for "what to do next." Pick by audience and granularity. +**Latest automation run (2026-03-28):** `./scripts/run-completable-tasks-from-anywhere.sh` completed (config validation, 61/61 on-chain, validation, reconcile print). `./scripts/run-all-operator-tasks-from-lan.sh --skip-backup` completed (NPMplus 40 hosts updated, Blockscout verification batch submitted). **Besu node lists:** push canonical `config/besu-node-lists/*` with `bash scripts/deploy-besu-node-lists-to-all.sh`; reload with `bash scripts/besu/restart-besu-reload-node-lists.sh` during a maintenance window if peers do not pick up static nodes without restart. + **Documentation index:** [../MASTER_INDEX.md](../MASTER_INDEX.md) — canonical docs, deprecated list, and navigation. **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). Operator scripts load dotenv automatically. diff --git a/docs/00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md b/docs/00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md index 6a529b2..bbee0d6 100644 --- a/docs/00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md +++ b/docs/00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md @@ -61,7 +61,7 @@ Commands run from repo root on operator/LAN host. Use as baseline; re-run when e - **Core RPC = IP:port:** In `smom-dbis-138/.env` set `RPC_URL_138=http://192.168.11.211:8545` (not FQDN). See [RPC_ENDPOINTS_MASTER](../04-configuration/RPC_ENDPOINTS_MASTER.md). - **Deployer gas (Chain 138):** ≥ ~0.006 ETH (recommended 1–2 ETH). Check: `./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh`. -- **Env from smom-dbis-138/.env only:** Required: `PRIVATE_KEY`, `RPC_URL_138`. For PMM: `DODO_PMM_INTEGRATION_ADDRESS`, `DODO_PMM_PROVIDER_ADDRESS`, pool addresses. Verify: `cd smom-dbis-138 && ./scripts/deployment/check-env-required.sh`. +- **Env from smom-dbis-138/.env only:** Required: `PRIVATE_KEY`, `RPC_URL_138`. For PMM: `DODO_PMM_INTEGRATION_ADDRESS`, `DODO_PMM_PROVIDER_ADDRESS`, pool addresses. For explorer address/runtime references, use `explorer-monorepo/config/address-inventory.json`, `explorer-monorepo/config/runtime-env.json`, and `explorer-monorepo/config/ccip-destination-matrix.json` instead of rebuilding address-heavy `.env` files. Verify: `cd smom-dbis-138 && ./scripts/deployment/check-env-required.sh`. - **POOL_MANAGER_ROLE:** Deployer must have this role on DODOPMMIntegration for pool creation and DODOPMMProvider registration. - **TRANSACTION_MIRROR_ADDRESS:** Set in `smom-dbis-138/.env` after deploy (from script output). diff --git a/docs/00-meta/TODOS_CONSOLIDATED.md b/docs/00-meta/TODOS_CONSOLIDATED.md index a370bbe..6a15853 100644 --- a/docs/00-meta/TODOS_CONSOLIDATED.md +++ b/docs/00-meta/TODOS_CONSOLIDATED.md @@ -1,7 +1,7 @@ # TODOs — Consolidated Task List -**Last Updated:** 2026-03-24 -**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). +**Last Updated:** 2026-03-28 +**Last verification run:** 2026-03-28 — completable ✅ (61/61 on-chain), operator `--skip-backup` ✅ (NPMplus 40 hosts updated, Blockscout verify batch). Prior 2026-03-06 run: validate-config ✅, check-contracts, PMM pool balances ✅ (Pool 1: 2M/2M), preflight ✅, token-aggregation build ✅, E2E routing ✅ (37 domains, 0 failed). **Mint + add-liquidity** 2026-03-06: 1M each minted, 500k each added. **Next-steps check:** [NEXT_STEPS_LIST.md](NEXT_STEPS_LIST.md); B.1/B.2/B.3 partially blocked (WEMIX tabled; LINK relay runbook pending). **Purpose:** Single checklist of all next steps and remaining tasks. **Indonesia / HYBX-BATCH-001 zip (4.995 ship-ready):** [HYBX-BATCH-001 — transaction package ship-ready](#hybx-batch-001--transaction-package-ship-ready-4995) below. **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). diff --git a/docs/03-deployment/RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md b/docs/03-deployment/RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md index 7f219b5..071adca 100644 --- a/docs/03-deployment/RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md +++ b/docs/03-deployment/RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md @@ -20,7 +20,7 @@ These must be satisfied before **any** Chain 138 deployment. Run preflight once; | **1.1** | **Run preflight** | From repo root: `./scripts/deployment/preflight-chain138-deploy.sh [--cost]`. Verifies: dotenv exists, required env keys, RPC returns chainId 0x8a (138), deployer nonce (warns if stuck). Use `--cost` for gas/cost estimate. | | **1.2** | **Core RPC = IP:port, not FQDN** | In `smom-dbis-138/.env` set `RPC_URL_138=http://192.168.11.211:8545` (Core RPC, VMID 2101). Do **not** use `https://rpc-core.d-bis.org` for deployment (DNS/tunnel can fail). See [RPC_ENDPOINTS_MASTER](../04-configuration/RPC_ENDPOINTS_MASTER.md), [TODOS_CONSOLIDATED](../00-meta/TODOS_CONSOLIDATED.md) § 0b. | | **1.3** | **Deployer gas (Chain 138)** | Ensure deployer has ≥ ~0.006 ETH (recommended 1–2 ETH). Check: `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`. | -| **1.4** | **Env from smom-dbis-138/.env only** | All deploy secrets from **`smom-dbis-138/.env`** only. Required: `PRIVATE_KEY`, `RPC_URL_138`. For PMM: `DODO_PMM_INTEGRATION_ADDRESS=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d`, `DODO_PMM_PROVIDER_ADDRESS=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`. Optional: `GAS_PRICE_138`, `GAS_PRICE` (default 1 gwei). Verify: `cd smom-dbis-138 && ./scripts/deployment/check-env-required.sh`. | +| **1.4** | **Env from smom-dbis-138/.env only** | All deploy secrets from **`smom-dbis-138/.env`** only. Required: `PRIVATE_KEY`, `RPC_URL_138`. For PMM: `DODO_PMM_INTEGRATION_ADDRESS=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d`, `DODO_PMM_PROVIDER_ADDRESS=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`. Optional: `GAS_PRICE_138`, `GAS_PRICE` (default 1 gwei). For explorer/runtime inventories, prefer the checked-in JSON references under `explorer-monorepo/config/` instead of repopulating address-heavy `.env` files. Verify: `cd smom-dbis-138 && ./scripts/deployment/check-env-required.sh`. | | **1.5** | **No stuck transactions** | If nonce has pending txs or you see "Replacement transaction underpriced": run `./scripts/clear-all-transaction-pools.sh` then wait **~60s** before deploying. Prefer scripts that check nonce (e.g. `deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh`). | | **1.6** | **RPC 2101 (Core) writable** | If Core was read-only: `./scripts/maintenance/make-rpc-vmids-writable-via-ssh.sh` then `./scripts/maintenance/health-check-rpc-2101.sh`. See [RPC_2101_READONLY_FIX.md](RPC_2101_READONLY_FIX.md). | | **1.7** | **Test all contracts** | Run **before** any deploy: `./scripts/deployment/test-all-contracts-before-deploy.sh`. Use `--dry-run` to print commands; `--no-match "Fork|Mainnet|Integration|e2e"` for unit-only; `--alltra` to include alltra-lifi-settlement. See [DEPLOYMENT_ORDER_OF_OPERATIONS](DEPLOYMENT_ORDER_OF_OPERATIONS.md) § Phase 0.8. | diff --git a/docs/03-deployment/UNDEPLOYED_CONTRACTS_PRE_DEPLOYMENT_TASKS.md b/docs/03-deployment/UNDEPLOYED_CONTRACTS_PRE_DEPLOYMENT_TASKS.md index 887bd74..0cab193 100644 --- a/docs/03-deployment/UNDEPLOYED_CONTRACTS_PRE_DEPLOYMENT_TASKS.md +++ b/docs/03-deployment/UNDEPLOYED_CONTRACTS_PRE_DEPLOYMENT_TASKS.md @@ -5,13 +5,13 @@ **Last Updated:** 2026-02-28 **Execution summary (2026-02-27):** On-chain verification **36/38**. Two missing: TransactionMirror (set `TRANSACTION_MIRROR_ADDRESS` in .env from script output) and DODO cUSDT/cUSDC pool (0x9fcB...). **Deploy uses Core RPC only.** Before deploy: if Core was read-only, run `./scripts/maintenance/make-rpc-vmids-writable-via-ssh.sh` then `./scripts/maintenance/health-check-rpc-2101.sh`. See [REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md](REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md), [RPC_2101_READONLY_FIX.md](RPC_2101_READONLY_FIX.md). -**Execution summary (2026-02-26):** **All runnable tasks executed.** Env check, unified deploy dry-run, PMM pool dry-run, on-chain verification (36/36), deploy-optional-future-all --dry-run, fund-ccip-bridges-with-link --dry-run, check-balances-gas-and-deploy.sh, get-multichain-gas-prices.sh all completed. Mainnet dry-run and TransactionMirror simulate started (mainnet compiles CCIP bridges; run to completion when mainnet RPC is responsive). Previous: 1.x wallet/gas, 2.x gas API and estimates, 3.1 unified deploy dry-run (RPC + init fixes in smom-dbis-138), 3.2 DeployDeterministicCore simulated, 3.3 PMM pool script dry-run, 3.4 TransactionMirror, 3.6 optional-future, 3.7 fund-ccip dry-run, 4.6 on-chain verification (36/36). Optional env vars added to `smom-dbis-138/.env` when missing: `DODO_PMM_INTEGRATION_ADDRESS`, `QUOTE_TOKEN_ADDRESS`, `WETH_ADDRESS_138` (public addresses only). PMM and unified deploy dry-runs now work with .env only (no inline env). Remaining: 3.5 mainnet dry-run (run when mainnet RPC is reachable); 4.1–4.5 post-deploy validation when components are deployed. +**Execution summary (2026-02-26):** **All runnable tasks executed.** Env check, unified deploy dry-run, PMM pool dry-run, on-chain verification (36/36), deploy-optional-future-all --dry-run, fund-ccip-bridges-with-link --dry-run, check-balances-gas-and-deploy.sh, get-multichain-gas-prices.sh all completed. Mainnet dry-run and TransactionMirror simulate started (mainnet compiles CCIP bridges; run to completion when mainnet RPC is responsive). Previous: 1.x wallet/gas, 2.x gas API and estimates, 3.1 unified deploy dry-run (RPC + init fixes in smom-dbis-138), 3.2 DeployDeterministicCore simulated, 3.3 PMM pool script dry-run, 3.4 TransactionMirror, 3.6 optional-future, 3.7 fund-ccip dry-run, 4.6 on-chain verification (36/36). Optional env vars added to `smom-dbis-138/.env` when missing: `DODO_PMM_INTEGRATION_ADDRESS` and `QUOTE_TOKEN_ADDRESS` (public addresses only). PMM and unified deploy dry-runs now work with the hardened env loader (no inline env). Remaining: 3.5 mainnet dry-run (run when mainnet RPC is reachable); 4.1–4.5 post-deploy validation when components are deployed. **Source:** [AI_AGENTS_57XX_MCP_CONTRACTS_AND_CHAINS.md](../02-architecture/AI_AGENTS_57XX_MCP_CONTRACTS_AND_CHAINS.md), [DEX_AND_CROSS_CHAIN_CONTRACTS_NEEDED.md](../11-references/DEX_AND_CROSS_CHAIN_CONTRACTS_NEEDED.md), [DEPLOYED_CONTRACTS_OVERVIEW](../../smom-dbis-138/docs/deployment/DEPLOYED_CONTRACTS_OVERVIEW.md), [deployment-status.json](../../cross-chain-pmm-lps/config/deployment-status.json) This checklist covers: **testing** anything not yet deployed, **checking deployer wallet gas**, **using the gas API to estimate deployment costs**, and **dry-running deployments** before live execution. -**Optional env vars (add/set when needed):** In `smom-dbis-138/.env`, if missing, add (public addresses only): `DODO_PMM_INTEGRATION_ADDRESS=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d`, `DODO_PMM_PROVIDER_ADDRESS=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`, `QUOTE_TOKEN_ADDRESS=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`, `WETH_ADDRESS_138=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` so PMM pool script and dry-runs work with .env only. Check: `./scripts/deployment/check-env-required.sh`. +**Optional env vars (add/set when needed):** In `smom-dbis-138/.env`, if missing, add (public addresses only): `DODO_PMM_INTEGRATION_ADDRESS=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d`, `DODO_PMM_PROVIDER_ADDRESS=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`, `QUOTE_TOKEN_ADDRESS=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` so PMM pool script and dry-runs work with the current env flow. Check: `./scripts/deployment/check-env-required.sh`. --- diff --git a/docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md b/docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md index 49da758..648c26e 100644 --- a/docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md +++ b/docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md @@ -101,3 +101,4 @@ curl -sk --resolve rpc-http-pub.d-bis.org:443:192.168.11.167 \ - **MetaMask network JSON**: `docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG.json` - **Chain list (chainlist.org)**: `pr-workspace/chains/_data/chains/eip155-138.json` - **Token list (chain 138)**: `token-lists/chainlists/chain-138.json` +- **Testnet (2138) wallet doc**: `docs/04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md` diff --git a/docs/04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md b/docs/04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md new file mode 100644 index 0000000..f62edbf --- /dev/null +++ b/docs/04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md @@ -0,0 +1,78 @@ +# Chain 2138 – Wallet & SDK Config (Defi Oracle Meta Testnet) + +**Last Updated:** 2026-03-27 +**Document Version:** 1.0 +**Status:** Active Documentation + +--- + +**Purpose:** Wallet and SDK settings for **Defi Oracle Meta Testnet** (chain ID **2138**). +**RPC (public, chainlist):** `https://rpc.public-2138.defi-oracle.io` +**WS (chainlist):** `wss://rpc.public-2138.defi-oracle.io` +**Explorer (chainlist):** `https://public-2138.defi-oracle.io` +**Chain ID:** 2138 (`0x85a`) +**CAIP-2:** `eip155:2138` + +Use LAN or staging RPC in place of the public URLs when testing privately. + +--- + +## 1. MetaMask (custom network) + +| Field | Value | +|-------|--------| +| **Network name** | Defi Oracle Meta Testnet | +| **RPC URL** | `https://rpc.public-2138.defi-oracle.io` (or your node) | +| **Chain ID** | `2138` | +| **Currency symbol** | tETH | +| **Block explorer** | `https://public-2138.defi-oracle.io` | + +**JSON** (programmatic add): `docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json`. + +--- + +## 2. ethers.js (v6 example) + +```javascript +const chain2138Testnet = { + chainId: 2138, + name: "Defi Oracle Meta Testnet", + nativeCurrency: { name: "testEther", symbol: "tETH", decimals: 18 }, + rpcUrls: { + default: { http: ["https://rpc.public-2138.defi-oracle.io"] }, + }, + blockExplorers: { + default: { name: "Quorum Explorer", url: "https://public-2138.defi-oracle.io" }, + }, +}; + +import { JsonRpcProvider } from "ethers"; +const provider = new JsonRpcProvider("https://rpc.public-2138.defi-oracle.io"); +const chainId = await provider.getNetwork().then((n) => Number(n.chainId)); // 2138 +``` + +--- + +## 3. Frontend DApp (Vite) + +- Enable the chain in Wagmi: `VITE_ENABLE_CHAIN2138=true` or `1` +- Optional overrides: `VITE_RPC_URL_2138`, `VITE_EXPLORER_URL_2138` +- Trustless bridge L2 side: `VITE_TRUSTLESS_L2_CHAIN_ID=2138` plus lockbox/token env vars (see `smom-dbis-138/frontend-dapp/.env.example`) + +--- + +## 4. Quick verification + +```bash +curl -s -X POST https://rpc.public-2138.defi-oracle.io -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' +# Expected: result "0x85a" +``` + +--- + +## 5. References + +- **Testnet runbook**: `docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md` +- **Mainnet (138) wallet doc**: `docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md` +- **Chain list (this repo)**: `pr-workspace/chains/_data/chains/eip155-2138.json` diff --git a/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json b/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json new file mode 100644 index 0000000..54d94cb --- /dev/null +++ b/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json @@ -0,0 +1,19 @@ +{ + "chainId": "0x85a", + "chainIdDecimal": 2138, + "chainName": "Defi Oracle Meta Testnet", + "rpcUrls": [ + "https://rpc.public-2138.defi-oracle.io" + ], + "nativeCurrency": { + "name": "testEther", + "symbol": "tETH", + "decimals": 18 + }, + "blockExplorerUrls": [ + "https://public-2138.defi-oracle.io" + ], + "iconUrls": [ + "https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png" + ] +} diff --git a/docs/MASTER_INDEX.md b/docs/MASTER_INDEX.md index eae0d74..ab8b91a 100644 --- a/docs/MASTER_INDEX.md +++ b/docs/MASTER_INDEX.md @@ -59,7 +59,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) | | **02-architecture** | [02-architecture/](02-architecture/) — **Public sector + Phoenix catalog baseline:** [02-architecture/PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md](02-architecture/PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md); **non-goals (incl. catalog vs marketing §9):** [02-architecture/NON_GOALS.md](02-architecture/NON_GOALS.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), **Public sector live checklist:** [03-deployment/PUBLIC_SECTOR_LIVE_DEPLOYMENT_CHECKLIST.md](03-deployment/PUBLIC_SECTOR_LIVE_DEPLOYMENT_CHECKLIST.md), **Proxmox VE ops template:** [03-deployment/PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md](03-deployment/PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md) · [`config/proxmox-operational-template.json`](config/proxmox-operational-template.json) | -| **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); **OMNL Indonesia / HYBX-BATCH-001:** [04-configuration/mifos-omnl-central-bank/HYBX_BATCH_001_OPERATOR_CHECKLIST.md](04-configuration/mifos-omnl-central-bank/HYBX_BATCH_001_OPERATOR_CHECKLIST.md), [04-configuration/mifos-omnl-central-bank/INDONESIA_PACKAGE_4_995_EVIDENCE_STANDARD.md](04-configuration/mifos-omnl-central-bank/INDONESIA_PACKAGE_4_995_EVIDENCE_STANDARD.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); **Chain 138 wallets:** [04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md](04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md); **Chain 2138 testnet wallets:** [04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md](04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md); **OMNL Indonesia / HYBX-BATCH-001:** [04-configuration/mifos-omnl-central-bank/HYBX_BATCH_001_OPERATOR_CHECKLIST.md](04-configuration/mifos-omnl-central-bank/HYBX_BATCH_001_OPERATOR_CHECKLIST.md), [04-configuration/mifos-omnl-central-bank/INDONESIA_PACKAGE_4_995_EVIDENCE_STANDARD.md](04-configuration/mifos-omnl-central-bank/INDONESIA_PACKAGE_4_995_EVIDENCE_STANDARD.md) | | **06-besu** | [06-besu/MASTER_INDEX.md](06-besu/MASTER_INDEX.md) | | **Testnet (2138)** | [testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md](testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md), [testnet/TESTNET_DEPLOYMENT.md](testnet/TESTNET_DEPLOYMENT.md) | | **07-ccip** | [07-ccip/](07-ccip/), [00-meta/CW_BRIDGE_TASK_LIST.md](00-meta/CW_BRIDGE_TASK_LIST.md) | diff --git a/docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md b/docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md index 8d265b3..172d7de 100644 --- a/docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md +++ b/docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md @@ -88,8 +88,8 @@ Update **`eip155-2138.json`** `explorers` when the canonical explorer URL is fin | E1 | Env for RPC and chain ID | Copy `smom-dbis-138/terraform/phases/phase1/config/env.chain2138.example` → `.env.chain2138` (or merge into `smom-dbis-138/.env`); set `CHAIN_ID=2138`, `RPC_URL=…` | | E2 | Deploy / verify | Forge scripts under `smom-dbis-138/script/` (mirror mainnet flow in [DEPLOYMENT_ORDER_OF_OPERATIONS.md](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md), [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md)); use `--rpc-url` for testnet | | E3 | Bridge / CCIP | Only after Chainlink / router support for **2138** exists: fill selectors and addresses like `env.chain138.example` pattern in `env.chain2138.example` | -| E4 | Frontend / Wagmi | `smom-dbis-138/frontend-dapp/src/config/networks.ts` exports `chain2138Testnet`; set `VITE_ENABLE_CHAIN2138=true` or `1`, optional `VITE_RPC_URL_2138` / `VITE_EXPLORER_URL_2138` (see `frontend-dapp/.env.example`) | -| E5 | Wallet docs | Mirror [CHAIN138_WALLET_CONFIG_VALIDATION.md](../04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md) with name **Defi Oracle Meta Testnet**, chain ID **2138**, `0x85a`, and testnet RPC/explorer URLs | +| E4 | Frontend / Wagmi | `networks.ts`, `wagmi.ts`, `trustlessL2.ts`, `TrustlessBridgeForm` — `VITE_ENABLE_CHAIN2138`, optional RPC/explorer; for testnet lockbox deposits set `VITE_TRUSTLESS_L2_CHAIN_ID=2138` and `VITE_LOCKBOX_2138` / token env vars (`frontend-dapp/.env.example`) | +| E5 | Wallet docs | [CHAIN2138_WALLET_CONFIG_VALIDATION.md](../04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md), MetaMask JSON [METAMASK_NETWORK_CONFIG_2138.json](../04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json) | --- diff --git a/scripts/besu/restart-besu-reload-node-lists.sh b/scripts/besu/restart-besu-reload-node-lists.sh index f8f4896..c5fe36f 100755 --- a/scripts/besu/restart-besu-reload-node-lists.sh +++ b/scripts/besu/restart-besu-reload-node-lists.sh @@ -11,18 +11,18 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true +SSH_OPTS="-o ConnectTimeout=20 -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -o StrictHostKeyChecking=accept-new" + DRY_RUN=false [[ "${1:-}" == "--dry-run" ]] && DRY_RUN=true # Same VMID -> host as deploy-besu-node-lists-to-all.sh declare -A HOST_BY_VMID -for v in 1000 1001 1002 1500 1501 1502 2101 2500 2501 2502 2503 2504 2505; do HOST_BY_VMID[$v]="${PROXMOX_R630_01:-${PROXMOX_HOST_R630_01:-192.168.11.11}}"; done +for v in 1000 1001 1002 1500 1501 1502 2101; do HOST_BY_VMID[$v]="${PROXMOX_R630_01:-${PROXMOX_HOST_R630_01:-192.168.11.11}}"; done for v in 2201 2303 2401; do HOST_BY_VMID[$v]="${PROXMOX_R630_02:-${PROXMOX_HOST_R630_02:-192.168.11.12}}"; done for v in 1003 1004 1503 1504 1505 1506 1507 1508 2102 2301 2304 2305 2306 2307 2308 2400 2402 2403; do HOST_BY_VMID[$v]="${PROXMOX_ML110:-${PROXMOX_HOST_ML110:-192.168.11.10}}"; done -BESU_VMIDS=(1000 1001 1002 1003 1004 1500 1501 1502 1503 1504 1505 1506 1507 1508 2101 2102 2201 2301 2303 2304 2305 2306 2307 2308 2400 2401 2402 2403 2500 2501 2502 2503 2504 2505) - -SSH_OPTS="-o ConnectTimeout=8 -o StrictHostKeyChecking=accept-new" +BESU_VMIDS=(1000 1001 1002 1003 1004 1500 1501 1502 1503 1504 1505 1506 1507 1508 2101 2102 2201 2301 2303 2304 2305 2306 2307 2308 2400 2401 2402 2403) echo "Restarting Besu on all nodes (to reload static-nodes.json and permissions-nodes.toml)" if $DRY_RUN; then echo " [dry-run]"; fi diff --git a/scripts/deploy-besu-node-lists-to-all.sh b/scripts/deploy-besu-node-lists-to-all.sh index ef68322..6159478 100755 --- a/scripts/deploy-besu-node-lists-to-all.sh +++ b/scripts/deploy-besu-node-lists-to-all.sh @@ -11,6 +11,8 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true +SSH_OPTS=(-o ConnectTimeout=20 -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -o StrictHostKeyChecking=accept-new) + DRY_RUN=false [[ "${1:-}" == "--dry-run" ]] && DRY_RUN=true @@ -27,14 +29,14 @@ fi # VMID -> Proxmox host (per BESU_VMIDS_FROM_PROXMOX / list-besu-vmids-from-proxmox.sh) declare -A HOST_BY_VMID -# r630-01 (192.168.11.11) -for v in 1000 1001 1002 1500 1501 1502 2101 2500 2501 2502 2503 2504 2505; do HOST_BY_VMID[$v]="${PROXMOX_R630_01:-${PROXMOX_HOST_R630_01:-192.168.11.11}}"; done +# r630-01 (192.168.11.11) — 2500-2505 removed (destroyed; see ALL_VMIDS_ENDPOINTS.md) +for v in 1000 1001 1002 1500 1501 1502 2101; do HOST_BY_VMID[$v]="${PROXMOX_R630_01:-${PROXMOX_HOST_R630_01:-192.168.11.11}}"; done # r630-02 (192.168.11.12) for v in 2201 2303 2401; do HOST_BY_VMID[$v]="${PROXMOX_R630_02:-${PROXMOX_HOST_R630_02:-192.168.11.12}}"; done # ml110 (192.168.11.10) for v in 1003 1004 1503 1504 1505 1506 1507 1508 2102 2301 2304 2305 2306 2307 2308 2400 2402 2403; do HOST_BY_VMID[$v]="${PROXMOX_ML110:-${PROXMOX_HOST_ML110:-192.168.11.10}}"; done -BESU_VMIDS=(1000 1001 1002 1003 1004 1500 1501 1502 1503 1504 1505 1506 1507 1508 2101 2102 2201 2301 2303 2304 2305 2306 2307 2308 2400 2401 2402 2403 2500 2501 2502 2503 2504 2505) +BESU_VMIDS=(1000 1001 1002 1003 1004 1500 1501 1502 1503 1504 1505 1506 1507 1508 2101 2102 2201 2301 2303 2304 2305 2306 2307 2308 2400 2401 2402 2403) echo "Deploying Besu node lists from config/besu-node-lists/ to all nodes" echo " static-nodes.json -> /etc/besu/static-nodes.json" @@ -56,15 +58,16 @@ for host in "${!VMIDS_ON_HOST[@]}"; do echo " [dry-run] would scp and pct push to:${vmids}" continue fi - scp -o StrictHostKeyChecking=accept-new -q "$STATIC" "$PERMS" "root@${host}:/tmp/" || { echo " Failed to scp to $host"; continue; } + scp "${SSH_OPTS[@]}" -q "$STATIC" "$PERMS" "root@${host}:/tmp/" || { echo " Failed to scp to $host"; continue; } for vmid in $vmids; do - if ssh -o StrictHostKeyChecking=accept-new "root@${host}" "pct status $vmid 2>/dev/null | grep -q running" 2>/dev/null; then - ssh -o StrictHostKeyChecking=accept-new "root@${host}" "pct push $vmid /tmp/static-nodes.json /etc/besu/static-nodes.json && pct push $vmid /tmp/permissions-nodes.toml /etc/besu/permissions-nodes.toml && pct exec $vmid -- chown besu:besu /etc/besu/static-nodes.json /etc/besu/permissions-nodes.toml 2>/dev/null || pct exec $vmid -- chown root:root /etc/besu/static-nodes.json /etc/besu/permissions-nodes.toml 2>/dev/null" 2>/dev/null && echo " OK VMID $vmid" || echo " Skip/fail VMID $vmid" + if ssh "${SSH_OPTS[@]}" "root@${host}" "pct status $vmid 2>/dev/null | grep -q running" 2>/dev/null; then + # timeout: pct push can hang on slow storage; do not block the whole fleet deploy + ssh "${SSH_OPTS[@]}" "root@${host}" "timeout 180 bash -c 'pct push $vmid /tmp/static-nodes.json /etc/besu/static-nodes.json && pct push $vmid /tmp/permissions-nodes.toml /etc/besu/permissions-nodes.toml && (pct exec $vmid -- chown besu:besu /etc/besu/static-nodes.json /etc/besu/permissions-nodes.toml 2>/dev/null || pct exec $vmid -- chown root:root /etc/besu/static-nodes.json /etc/besu/permissions-nodes.toml 2>/dev/null)'" 2>/dev/null && echo " OK VMID $vmid" || echo " Skip/fail VMID $vmid" else echo " Skip VMID $vmid (not running)" fi done - ssh -o StrictHostKeyChecking=accept-new "root@${host}" "rm -f /tmp/static-nodes.json /tmp/permissions-nodes.toml" 2>/dev/null || true + ssh "${SSH_OPTS[@]}" "root@${host}" "rm -f /tmp/static-nodes.json /tmp/permissions-nodes.toml" 2>/dev/null || true done echo ""