Compare commits

...

61 Commits

Author SHA1 Message Date
defiQUG
207f088b39 docs(release): cross-link pricing rollout checklist and notes
Some checks failed
AI Code Review / claude-review (pull_request) Failing after 1m1s
Validate (PR) / run-all-validation (pull_request) Failing after 25s
2026-04-26 00:03:48 -07:00
defiQUG
240fec0c8e chore(release): record explorer pricing rollout and advance repo revisions
Some checks failed
AI Code Review / claude-review (pull_request) Failing after 1m5s
Validate (PR) / run-all-validation (pull_request) Failing after 27s
2026-04-25 23:45:28 -07:00
defiQUG
4b0512e66d repo: advance smom-dbis-138 for besu class templates 2026-04-25 12:42:36 -07:00
defiQUG
529f819b0f chore: add shared devin workspace tooling 2026-04-25 12:42:36 -07:00
defiQUG
2b5a039931 docs: harden canonical besu inventory references 2026-04-25 12:05:53 -07:00
defiQUG
0a0365f73d docs: wire dbis rail and gru specs into ura program 2026-04-25 11:37:15 -07:00
defiQUG
a894b1dd50 docs: add ura operational readiness and production gates 2026-04-25 11:37:05 -07:00
defiQUG
5688f474c3 docs: add dbis ecosystem umbrella master plan 2026-04-25 11:36:38 -07:00
defiQUG
4203f83e11 ops: align chain138 besu runtime audit and generated configs 2026-04-25 08:14:07 -07:00
defiQUG
566cecd8f9 feat: add universal resource activation policy profile flow 2026-04-24 22:06:26 -07:00
defiQUG
0035a787fe ops: align besu template audit and thirdweb sentry configs 2026-04-24 22:02:47 -07:00
defiQUG
fa4161cf58 docs: codify live public routing coverage and gaps 2026-04-24 21:52:49 -07:00
defiQUG
aba8ca5700 feat: add universal resource activation manifest wiring
Some checks failed
Deploy to Phoenix / validate (push) Failing after 28s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-24 18:31:54 -07:00
defiQUG
60b8fb9ddc ops: schedule gitea tls expiry monitoring
Some checks failed
Deploy to Phoenix / validate (push) Failing after 30s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-24 18:25:28 -07:00
defiQUG
01c36a5489 ops: add gitea tls handoff and expiry check
Some checks failed
Deploy to Phoenix / validate (push) Failing after 29s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-24 16:30:18 -07:00
defiQUG
a4738c1376 Merge remote-tracking branch 'gitea/master'
Some checks failed
Deploy to Phoenix / validate (push) Has been cancelled
Deploy to Phoenix / deploy (push) Has been cancelled
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been cancelled
Deploy to Phoenix / cloudflare (push) Has been cancelled
# Conflicts:
#	docs/04-configuration/README.md
#	docs/MASTER_INDEX.md
#	phoenix-deploy-api/deploy-targets.json
#	scripts/deployment/phoenix-deploy-explorer-live-from-workspace.sh
2026-04-24 16:12:08 -07:00
defiQUG
c23fdf4614 repo: align explorer submodule to remote master 2026-04-24 16:10:04 -07:00
defiQUG
7e2d9c58e3 repo: update the-order hook fix 2026-04-24 12:59:55 -07:00
defiQUG
64d2e550a1 repo: update cleaned nested repos 2026-04-24 12:56:52 -07:00
defiQUG
7572444b8f docs: index universal resource activation schema 2026-04-24 12:40:52 -07:00
defiQUG
83482d6d13 docs: add blocker cleanup runbook and resource activation pack 2026-04-24 12:40:35 -07:00
defiQUG
219247b872 ops: clear besu verifier gaps and health monitor noise 2026-04-24 12:36:26 -07:00
defiQUG
780648a2ee config: add thirdweb besu sentries to allowlists and template 2026-04-24 12:31:17 -07:00
defiQUG
1336253f8d docs: promote thirdweb besu sentries into canonical inventory 2026-04-24 12:27:10 -07:00
defiQUG
a1eacd3098 ops: destroy duplicate besu cts and add cluster inventory audit 2026-04-24 11:52:46 -07:00
defiQUG
91ba6f4f2f docs: finalize besu host placement reconciliation 2026-04-24 11:45:04 -07:00
defiQUG
21ad898c6b docs: reconcile besu rpc inventory after duplicate retirement 2026-04-24 11:30:46 -07:00
defiQUG
a14a683b9b verify: skip non-evm lane status when inventory inputs are missing 2026-04-24 11:02:26 -07:00
defiQUG
984900deba repo: ignore generated deployment and inventory report outputs 2026-04-24 10:58:54 -07:00
defiQUG
d8ff571c60 repo: ignore generated validation and inventory artifacts 2026-04-24 10:58:21 -07:00
defiQUG
e27ec30ab1 docs: add planning and terminology notes 2026-04-24 10:56:05 -07:00
defiQUG
1927058a95 feat: add inventory and validation builders 2026-04-24 10:56:01 -07:00
defiQUG
c65b896fad ops: add chain138 and rpc diagnostic tooling 2026-04-24 10:55:55 -07:00
defiQUG
454aeda9d5 ops: add new deployment and operator automation scripts 2026-04-24 10:55:50 -07:00
defiQUG
996d45d1ba feat: add phoenix deploy and x402 service updates 2026-04-24 10:55:45 -07:00
defiQUG
c5ec42d3d2 ci: update gitea workflows and contributor guidance 2026-04-24 10:55:42 -07:00
defiQUG
afde88ff9a config: refresh operational templates and network mappings 2026-04-24 10:55:39 -07:00
defiQUG
fc32d51ca7 docs: update operator, endpoint, and deployment references 2026-04-24 10:55:35 -07:00
defiQUG
9f60311ef1 docs: mark historical references to removed cleanup helpers 2026-04-24 10:47:02 -07:00
defiQUG
3743d20f49 repo: prune obsolete helpers and backup artifacts 2026-04-24 10:47:01 -07:00
defiQUG
58ca82bbe3 chain138: harden besu txpool recovery and runbooks 2026-04-24 10:46:40 -07:00
Codex
453ccc8d12 Add explorer-live deploy target and operator handoff
Some checks failed
Deploy to Phoenix / validate (push) Failing after 13s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-23 09:53:49 -07:00
defiQUG
77d40201a3 ci: prefer gitea remote for workflow parity checks
Some checks failed
Deploy to Phoenix / validate (push) Failing after 12s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-22 21:48:58 -07:00
defiQUG
0e7200f1b8 ci: lock deploy workflows across main and master
Some checks failed
Deploy to Phoenix / validate (push) Failing after 13s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-22 21:47:57 -07:00
defiQUG
725dcd180d phoenix: automate CurrenciCombo e2e deploys
Some checks failed
Deploy to Phoenix / validate (push) Successful in 13s
Deploy to Phoenix / deploy (push) Successful in 37s
phoenix-deploy Phoenix deployment in progress
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Failing after 30s
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-22 20:05:26 -07:00
773c83e6c6 ci(validate): materialize cross-chain-pmm-lps via anon clone + guard step 3
Some checks failed
Deploy to Phoenix / validate (push) Successful in 14s
Deploy to Phoenix / deploy (push) Failing after 9s
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Failing after 9s
Deploy to Phoenix / cloudflare (push) Has been skipped
phoenix-deploy Deployed to atomic-swap-dapp-live
Unblocks the Gitea Actions validate gate so pushes to master can run deploy-to-phoenix -> deploy-atomic-swap-dapp.

Co-authored-by: Nakamoto, S <nsatoshi2007@hotmail.com>
Co-committed-by: Nakamoto, S <nsatoshi2007@hotmail.com>
2026-04-22 22:08:03 +00:00
defiQUG
d9a3053a58 Harden deployment env flows and surface external blockers
Some checks failed
Deploy to Phoenix / validate (push) Failing after 10s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-22 14:47:52 -07:00
defiQUG
dc123ff647 Wire Phoenix deploy path for atomic swap dapp
Some checks failed
Deploy to Phoenix / validate (push) Failing after 11s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
2026-04-22 13:49:46 -07:00
defiQUG
d06af63700 Rewire atomic swap dapp submodule to Gitea
Some checks failed
Deploy to Phoenix / validate (push) Failing after 14s
Deploy to Phoenix / deploy (push) Has been skipped
2026-04-22 10:01:17 -07:00
defiQUG
f0f0a4bb84 docs(AGENTS): mcp-proxmox Gitea URL and pmm-lops-publish worktree note
Some checks failed
Deploy to Phoenix / validate (push) Failing after 12s
Deploy to Phoenix / deploy (push) Has been skipped
Made-with: Cursor
2026-04-21 22:04:30 -07:00
defiQUG
deba4f9f00 chore: pin metamask-integration to logo commit; ignore vendor checkouts
Some checks failed
Deploy to Phoenix / validate (push) Failing after 14s
Deploy to Phoenix / deploy (push) Has been skipped
Made-with: Cursor
2026-04-21 22:04:13 -07:00
defiQUG
8e3d2e1ddb fix(submodules): mcp-proxmox on Gitea, drop spurious pmm-lps-publish link, ignore local secrets
Some checks failed
Deploy to Phoenix / validate (push) Failing after 13s
Deploy to Phoenix / deploy (push) Has been skipped
- Point mcp-proxmox URL to gitea.d-bis.org and pin to 2b629ba (incl. test_auth)
- Remove cross-chain-pmm-lps-publish from index (worktree, not a parent submodule)
- .gitignore: worktree path, tmp/codex, operator env exports, select output/ noise

Made-with: Cursor
2026-04-21 22:03:32 -07:00
defiQUG
b8613905bd chore: sync workspace — configs, docs, scripts, CI, pnpm, submodules
Some checks failed
Deploy to Phoenix / validate (push) Failing after 15s
Deploy to Phoenix / deploy (push) Has been skipped
- Submodule pins: dbis_core, cross-chain-pmm-lps, mcp-proxmox (local, push may be pending), metamask-integration, smom-dbis-138
- Atomic swap + cross-chain-pmm-lops-publish, deploy-portal workflow, phoenix deploy-targets, routing/aggregator matrices
- Docs, token-lists, forge proxy, phoenix API, runbooks, verify scripts

Made-with: Cursor
2026-04-21 22:01:33 -07:00
defiQUG
e6bc7a6d7c chore(verify): PR validation workflow, pnpm Solana peer, lockfile check, backup SSH
- Gitea: add validate-on-pr.yml (run-all-validation only; no deploy)
- .env.master.example: document NPM_EMAIL/NPM_PASSWORD for backup-npmplus
- pnpm: allowedVersions for @solana/sysvars to quiet thirdweb/x402 peer drift
- AGENTS + verify README: CI pointers and .env.master.example for env
- backup-npmplus: npm_lxc_ssh helper; keep prior timeout/BatchMode behavior
- check-pnpm-workspace-lockfile + run-all-validation step 1b (from prior work in same commit set)

Made-with: Cursor
2026-04-21 21:56:49 -07:00
defiQUG
4fab998e51 chore: sync workspace docs, configs, and submodules
All checks were successful
Deploy to Phoenix / deploy (push) Successful in 9s
2026-04-18 12:07:15 -07:00
defiQUG
d63efcb315 fix(ops): map dev VM 5700 to r630-04; add phoenix-deploy-api deploy script
All checks were successful
Deploy to Phoenix / deploy (push) Successful in 9s
Sync get_host_for_vmid with live placement for VMID 5700 (dev-vm). Add
deploy-phoenix-deploy-api-to-dev-vm.sh for pct-based install to CT 5700.

Made-with: Cursor
2026-04-17 04:51:47 -07:00
1892827711 chore: merge upstream sync — Mission Control launchpad, runbooks, ProxmoxVE React 19 build fix
All checks were successful
Deploy to Phoenix / deploy (push) Successful in 6s
- Merge origin/main into master (already applied).
- Regenerate doc-manifest.json for new RUNBOOK markdown (60 entries).
- Launchpad: E2E endpoints doc, docs.d-bis.org, Gitea, Chain 138 dapp + env overrides.
- ProxmoxVE submodule: fix react-syntax-highlighter JSX types for Next 15 / React 19.

Made-with: Cursor
2026-04-07 16:28:44 +08:00
820174d556 merge: sync local master with origin/main 2026-04-07 16:07:16 +08:00
252b766a53 feat(mission-control): sync launchpad and runbooks with upstream main
- Merge-aligned doc-manifest regeneration (58 doc-derived runbooks)

- Launchpad: Phoenix Deploy API, Meta testnet 2138 runbook, aggregator route matrix

- Curated runbook: check-chain138-rpc-health.sh; README env vars; catalog test threshold

Made-with: Cursor
2026-03-29 10:13:59 +08:00
fa5de3ba01 merge origin/main: sync upstream with Mission Control 2026-03-29 10:11:51 +08:00
18767b7d8b feat: add Mission Control operator console and workspace wiring
- New mission-control Next.js app: runbook catalog, GO execution, SSE stream, audit ZIP export

- Generated doc-manifest from docs runbooks; curated JSON specs; health-check script

- pnpm workspace package, root scripts, README updates

- Resilience: Windows-safe path checks, optional MISSION_CONTROL_PROJECT_ROOT fallback, system fonts

- Bump mcp-proxmox submodule to tracked main

Made-with: Cursor
2026-03-28 14:50:11 +08:00
1295 changed files with 209633 additions and 111266 deletions

18
.devin/README.md Normal file
View File

@@ -0,0 +1,18 @@
# Devin for Terminal in Cursor
This project is configured to use Devin for Terminal as a local CLI companion inside Cursor.
- Cursor config import is enabled through `.cursor/rules/` and `.cursor/mcp.json` if present.
- Windsurf config import is disabled for this project.
- `AGENTS.md` remains the canonical shared project guidance.
- Personal Devin overrides and secrets belong in `.devin/config.local.json`, which is gitignored.
- Run `devin auth login` interactively before first use.
Useful commands:
```bash
devin
devin -- "review this repo and suggest the next safe task"
devin auth status
devin mcp list
```

View File

@@ -0,0 +1,21 @@
---
name: reviewer
description: Read-only reviewer for Cursor/Devin handoffs
allowed-tools:
- read
- grep
- glob
- exec
permissions:
allow:
- Exec(git status)
- Exec(git diff)
- Exec(git log)
deny:
- write
- edit
---
You are a read-only review subagent for this Cursor workspace.
Review changes for correctness, security, operational risk, and consistency with `AGENTS.md` and relevant `.cursor/rules/` guidance. Do not modify files. Report only actionable findings first, ordered by severity, with exact file paths.

38
.devin/config.json Normal file
View File

@@ -0,0 +1,38 @@
{
// Devin for Terminal project config optimized for Cursor as the primary IDE.
"read_config_from": {
"cursor": true,
"windsurf": false,
"claude": true
},
"permissions": {
"allow": [
"Read(**)",
"Exec(git status)",
"Exec(git diff)",
"Exec(git log)",
"Exec(pnpm run)",
"Exec(bash scripts/verify)",
"Exec(bash scripts/validation)"
],
"ask": [
"Write(**)",
"Exec(git commit)",
"Exec(git push)",
"Exec(docker)",
"Exec(docker compose)",
"mcp__*"
],
"deny": [
"Exec(rm)",
"Exec(sudo)",
"Exec(chmod -R)",
"Exec(chown -R)",
"Write(.env*)",
"Write(**/.env*)",
"Write(reports/secrets/**)",
"Write(config/production/*did-secrets.env)"
]
},
"mcpServers": {}
}

14
.devin/hooks.v1.json Normal file
View File

@@ -0,0 +1,14 @@
{
"PreToolUse": [
{
"matcher": "exec",
"hooks": [
{
"type": "command",
"command": "bash scripts/devin/block-dangerous-command.sh",
"timeout": 10
}
]
}
]
}

View File

@@ -0,0 +1,22 @@
---
name: cursor-handoff
description: Align Devin for Terminal work with this Cursor workspace and project rules
allowed-tools:
- read
- grep
- glob
- exec
triggers:
- user
- model
---
Use this skill when starting or resuming work in this repository from Devin for Terminal.
1. Treat Cursor as the primary IDE context and read `.cursor/rules/` when relevant.
2. Read `AGENTS.md` first for canonical project guidance.
3. Do not rely on Windsurf rules, skills, workflows, or MCP settings for this project.
4. Check `git status --short` before editing and preserve unrelated user changes.
5. Prefer dry-run flags for operator, deployment, DNS, Proxmox, and LAN-sensitive scripts.
6. Never write secrets or runtime credentials into tracked files.
7. When using MCP servers, assume Cursor and Devin maintain separate authentication sessions.

View File

@@ -0,0 +1,28 @@
---
name: review
description: Review code changes before commit or handoff
allowed-tools:
- read
- grep
- glob
- exec
permissions:
allow:
- Exec(git status)
- Exec(git diff)
- Exec(git log)
deny:
- write
- edit
triggers:
- user
- model
---
Review the current changes with a correctness-first stance.
1. Run `git status --short`.
2. Run `git diff` and, if staged changes exist, `git diff --staged`.
3. Focus on bugs, security regressions, deployment risk, missing validation, and secret exposure.
4. Cite exact file paths and keep findings ordered by severity.
5. If no issues are found, say so and call out any test or validation gaps.

View File

@@ -20,6 +20,8 @@ PROXMOX_ALLOW_ELEVATED=
# Prefer CLOUDFLARE_API_TOKEN scoped to Zone:DNS:Edit on the zones you use (avoid global Account API key when possible).
# Bulk DNS script: scripts/update-all-dns-to-public-ip.sh — use --dry-run and --zone-only=sankofa.nexus (etc.) before wide updates.
CLOUDFLARE_API_TOKEN=
# Set to 1 if token has no DNS:Edit and you need Global API key for scripts/cloudflare/provision-d-bis-mail-dns-and-npmplus.sh etc.
CLOUDFLARE_DNS_PREFER_GLOBAL_KEY=
CLOUDFLARE_EMAIL=
CLOUDFLARE_API_KEY=
CLOUDFLARE_ZONE_ID=
@@ -40,6 +42,10 @@ CLOUDNS_AUTH_ID=
CLOUDNS_AUTH_PASSWORD=
# --- NPM / NPMplus ---
# For scripts/verify/backup-npmplus.sh: NPM_EMAIL and NPM_PASSWORD are both required
# (no in-script defaults); see AGENTS.md operator / backup row.
# PMG (LXC 100) web UI — optional: run scripts/operator/sync-pmg-webui-password-to-dotenv.sh to pull from /root/PMG_WEBUI_password.txt
PMG_WEBUI_PASSWORD=
NPM_URL=
NPM_EMAIL=
NPM_PASSWORD=
@@ -94,13 +100,66 @@ AZURE_STORAGE_CONTAINER=
# --- Blockchain / SMOM-DBIS-138 (use smom-dbis-138/.env for PRIVATE_KEY) ---
PRIVATE_KEY=
DEPLOYER_ADDRESS=
RPC_URL_138=
RPC_URL_138_PUBLIC=
ETHEREUM_MAINNET_RPC=
# Clear scripts/verify/check-external-dependencies.sh — use real service URLs when split; example interim health target:
# DBIS_CORE_URL=https://dbis-api.d-bis.org/health
DBIS_CORE_URL=
CC_PAYMENT_ADAPTERS_URL=
CC_AUDIT_LEDGER_URL=
CC_SHARED_EVENTS_URL=
CC_SHARED_SCHEMAS_URL=
FIN_GATEWAY_URL=
ALLIANCE_ACCESS_URL=
# cast must be in PATH; use a runner-reachable Chain 138 RPC, e.g.:
# CHAIN138_CI_RPC_URL=https://rpc.public-0138.defi-oracle.io
CHAIN138_CI_RPC_URL=
ALL_MAINNET_RPC=
# Alltra / Wemix / Etherlink: set for production; for local read-only checks, deployer-gas-auto-route.sh falls back to public RPCs documented in scripts/deployment/deployer-gas-auto-route.sh
CHAIN_651940_RPC_URL=
# ALLTRA_MAINNET_RPC=https://mainnet-rpc.alltra.global
# WEMIX_RPC_URL=https://api.wemix.com
# ETHERLINK_RPC_URL=https://node.mainnet.etherlink.com
CHAIN_1_UNISWAP_V2_FACTORY=0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
CHAIN_1_UNISWAP_V2_ROUTER=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
CHAIN_1_UNISWAP_V2_START_BLOCK=0
CHAIN_10_UNISWAP_V2_FACTORY=0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf
CHAIN_10_UNISWAP_V2_ROUTER=0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2
CHAIN_10_UNISWAP_V2_START_BLOCK=0
CHAIN_25_UNISWAP_V2_FACTORY=0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15
CHAIN_25_UNISWAP_V2_ROUTER=0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae
CHAIN_25_UNISWAP_V2_START_BLOCK=0
CHAIN_56_UNISWAP_V2_FACTORY=0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73
CHAIN_56_UNISWAP_V2_ROUTER=0x10ED43C718714eb63d5aA57B78B54704E256024E
CHAIN_56_UNISWAP_V2_START_BLOCK=0
CHAIN_100_UNISWAP_V2_FACTORY=0xc35DADB65012eC5796536bD9864eD8773aBc74C4
CHAIN_100_UNISWAP_V2_ROUTER=0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
CHAIN_100_UNISWAP_V2_START_BLOCK=0
CHAIN_137_UNISWAP_V2_FACTORY=0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32
CHAIN_137_UNISWAP_V2_ROUTER=0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff
CHAIN_137_UNISWAP_V2_START_BLOCK=0
CHAIN_42220_UNISWAP_V2_FACTORY=0x62d5b84bE28a183aBB507E125B384122D2C25fAE
CHAIN_42220_UNISWAP_V2_ROUTER=0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121
CHAIN_42220_UNISWAP_V2_START_BLOCK=0
CHAIN_43114_UNISWAP_V2_FACTORY=0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10
CHAIN_43114_UNISWAP_V2_ROUTER=0x60aE616a2155Ee3d9A68541Ba4544862310933d4
CHAIN_43114_UNISWAP_V2_START_BLOCK=0
CHAIN_8453_UNISWAP_V2_FACTORY=0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E
CHAIN_8453_UNISWAP_V2_ROUTER=0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb
CHAIN_8453_UNISWAP_V2_START_BLOCK=0
CHAIN_42161_UNISWAP_V2_FACTORY=0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E
CHAIN_42161_UNISWAP_V2_ROUTER=0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb
CHAIN_42161_UNISWAP_V2_START_BLOCK=0
# Optional / scaffold-only until Wemix UniV2 routing is promoted
CHAIN_1111_UNISWAP_V2_FACTORY=
CHAIN_1111_UNISWAP_V2_ROUTER=
CHAIN_1111_UNISWAP_V2_START_BLOCK=0
ETHERLINK_RPC_URL=
TEZOS_RPC_URL=
ETHERSCAN_API_KEY=
WEMIXSCAN_API_KEY=
ETHERLINK_CCIP_SELECTOR=
TEZOS_BRIDGE_ENABLED=
ETHERLINK_BRIDGE_ENABLED=

View File

@@ -6,6 +6,10 @@
2. Make changes, ensure tests pass
3. Open a pull request
Deploy workflow policy:
`main` and `master` are both deploy-triggering branches, so `.gitea/workflow-sources/deploy-to-phoenix.yml` and `.gitea/workflow-sources/validate-on-pr.yml` must stay identical across both branches.
Use `bash scripts/verify/sync-gitea-workflows.sh` after editing workflow-source files, and `bash scripts/verify/run-all-validation.sh --skip-genesis` to catch workflow drift before push.
## Pull Requests
- Use the PR template when opening a PR

View File

@@ -0,0 +1,81 @@
# Canonical deploy workflow. Keep source and checked-in workflow copies byte-identical.
# Validation checks both file sync and main/master parity.
name: Deploy to Phoenix
on:
push:
branches: [main, master]
workflow_dispatch:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Fetch deploy branches for workflow parity check
run: |
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
if git remote | grep -qx gitea; then
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
fi
git fetch --depth=1 "$REMOTE" main master
- name: Run repo validation gate
run: |
bash scripts/verify/run-all-validation.sh --skip-genesis
deploy:
needs: validate
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Trigger Phoenix deployment
run: |
SHA="$(git rev-parse HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}"
deploy-atomic-swap-dapp:
needs: validate
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Trigger Atomic Swap dApp deployment (Phoenix)
run: |
SHA="$(git rev-parse HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"atomic-swap-dapp-live\"}"
# After app deploy, ask Phoenix to run path-gated Cloudflare DNS sync on the host that has
# PHOENIX_REPO_ROOT + .env (not on this runner). Skips unless PHOENIX_CLOUDFLARE_SYNC=1 on that host.
# continue-on-error: first-time or missing opt-in should not block the main deploy.
cloudflare:
needs:
- deploy
- deploy-atomic-swap-dapp
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Request Cloudflare DNS sync (Phoenix)
run: |
SHA="$(git rev-parse HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"cloudflare-sync\"}"

View File

@@ -0,0 +1,29 @@
# Canonical PR validation workflow. Keep source and checked-in workflow copies byte-identical.
# Validation checks both file sync and main/master parity.
# PR-only: push validation already runs in deploy-to-phoenix.yml; this gives PRs the same
# no-LAN checks without the deploy job (and without deploy secrets).
name: Validate (PR)
on:
pull_request:
types: [opened, synchronize, reopened]
branches: [main, master]
workflow_dispatch:
jobs:
run-all-validation:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Fetch deploy branches for workflow parity check
run: |
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
if git remote | grep -qx gitea; then
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
fi
git fetch --depth=1 "$REMOTE" main master
# Optional: set org/repo variable URA_STRICT_CLOSURE=1 to fail PRs while pilot placeholders
# remain in manifest (see scripts/ura/validate-manifest-closure.mjs). Not enabled by default.
- name: run-all-validation (no LAN, no genesis)
env:
URA_STRICT_CLOSURE: ${{ vars.URA_STRICT_CLOSURE }}
run: bash scripts/verify/run-all-validation.sh --skip-genesis

View File

@@ -0,0 +1,31 @@
name: Deploy Sankofa Portal Live
on:
workflow_dispatch:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run repo validation gate
run: |
bash scripts/verify/run-all-validation.sh --skip-genesis
deploy:
needs: validate
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Trigger portal-live deployment
run: |
SHA="$(git rev-parse HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"portal-live\"}"

View File

@@ -1,11 +1,33 @@
# Canonical deploy workflow. Keep source and checked-in workflow copies byte-identical.
# Validation checks both file sync and main/master parity.
name: Deploy to Phoenix
on:
push:
branches: [main, master]
workflow_dispatch:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Fetch deploy branches for workflow parity check
run: |
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
if git remote | grep -qx gitea; then
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
fi
git fetch --depth=1 "$REMOTE" main master
- name: Run repo validation gate
run: |
bash scripts/verify/run-all-validation.sh --skip-genesis
deploy:
needs: validate
runs-on: ubuntu-latest
steps:
- name: Checkout code
@@ -13,8 +35,47 @@ jobs:
- name: Trigger Phoenix deployment
run: |
SHA="$(git rev-parse HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${{ gitea.sha }}\",\"branch\":\"${{ gitea.ref_name }}\"}"
continue-on-error: true
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}"
deploy-atomic-swap-dapp:
needs: validate
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Trigger Atomic Swap dApp deployment (Phoenix)
run: |
SHA="$(git rev-parse HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"atomic-swap-dapp-live\"}"
# After app deploy, ask Phoenix to run path-gated Cloudflare DNS sync on the host that has
# PHOENIX_REPO_ROOT + .env (not on this runner). Skips unless PHOENIX_CLOUDFLARE_SYNC=1 on that host.
# continue-on-error: first-time or missing opt-in should not block the main deploy.
cloudflare:
needs:
- deploy
- deploy-atomic-swap-dapp
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Request Cloudflare DNS sync (Phoenix)
run: |
SHA="$(git rev-parse HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"cloudflare-sync\"}"

View File

@@ -0,0 +1,29 @@
# Canonical PR validation workflow. Keep source and checked-in workflow copies byte-identical.
# Validation checks both file sync and main/master parity.
# PR-only: push validation already runs in deploy-to-phoenix.yml; this gives PRs the same
# no-LAN checks without the deploy job (and without deploy secrets).
name: Validate (PR)
on:
pull_request:
types: [opened, synchronize, reopened]
branches: [main, master]
workflow_dispatch:
jobs:
run-all-validation:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Fetch deploy branches for workflow parity check
run: |
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
if git remote | grep -qx gitea; then
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
fi
git fetch --depth=1 "$REMOTE" main master
# Optional: set org/repo variable URA_STRICT_CLOSURE=1 to fail PRs while pilot placeholders
# remain in manifest (see scripts/ura/validate-manifest-closure.mjs). Not enabled by default.
- name: run-all-validation (no LAN, no genesis)
env:
URA_STRICT_CLOSURE: ${{ vars.URA_STRICT_CLOSURE }}
run: bash scripts/verify/run-all-validation.sh --skip-genesis

70
.gitignore vendored
View File

@@ -26,6 +26,9 @@ Thumbs.db
# Local-only Cursor session / context (exclude from Gitea)
.cursor/local/
# Devin for Terminal personal overrides / secrets
.devin/config.local.json
# IDE files
.vscode/
.idea/
@@ -74,3 +77,70 @@ reconciliation/
*.payload.json
*.payload.sha256
audit_log.jsonl
# cross-chain-pmm-lps-publish: git worktree under that repo — not a parent submodule
cross-chain-pmm-lps-publish/
# Local scratch (never commit)
.tmp-*.cjs
.codex
.codex/
.venv-checkjson/
.env.bak.pmg.*
# Teammate / third-party onboarding (API token handoffs; never commit)
reports/secrets/
# Operator / runtime env snapshots under reports/ (sensitive; regenerate from hosts)
reports/status/operator-*.env
reports/status/operator-runtime*.env
reports/status/chain138_aave_runtime.env
reports/status/*runtime-env*.env
reports/status/ei-matrix-eth-send*
reports/status/token-aggregation-*.tar.gz
config/production/*did-secrets.env
# Bulky one-off local outputs (re-run scripts to restore)
output/omnl-e2e-*.zip
output/omnl-e2e-*/
output/office22-*.zip
output/settlement-events/
output/transaction-package-*/
output/cw-assets-usd-quote-dump.json
output/jvmtm-evidence/
# Generated verification evidence snapshots (keep curated evidence, ignore rerunnable timestamped dumps)
docs/04-configuration/verification-evidence/e2e-verification-*/
# Generated deployment and inventory machine outputs
reports/deployment/*_20[0-9][0-9]-[0-9][0-9]-[0-9][0-9].md
reports/deployment/check-deployer-lp-balances-*.json
reports/inventory/container_inventory_*.csv
reports/inventory/contract-inventory-*.json
reports/inventory/DEPLOYED_CONTRACTS_*.md
reports/inventory/INCOMPLETE_DUPLICATE_ANALYSIS.md
reports/inventory/INVENTORY_COVERAGE_GAPS.md
reports/inventory/deployed-contracts-completion-matrix.json
reports/inventory/incomplete-duplicate-bytecode-analysis.json
# Generated status artifacts (rerunnable from wrappers/validation scripts)
reports/status/MULTI_NETWORK_DEPLOYMENT_AUDIT_*.md
reports/status/*-latest.json
reports/status/*-latest.md
reports/status/*-latest.csv
reports/status/hardware_poll_*.txt
reports/status/lxc_cluster_health_*.json
reports/status/lxc_cluster_health_*.txt
reports/status/mainnet-cwusdc-usdc-preflight-*.json
reports/status/mainnet-cwusdc-usdc-repeg-plan-*.json
reports/status/live_inventory_*.json
reports/status/drift_*.json
# Large optional vendor trees and local checkouts (keep out of main clone)
smom-dbis-138-publish/
third-party/
thirdweb-core-2103-test/
tmp/
token-aggregation-build/
transaction-composer/
vendor/

6
.gitmodules vendored
View File

@@ -4,7 +4,7 @@
# Primary integration remote is Gitea; use GitHub only as an optional mirror when available.
[submodule "mcp-proxmox"]
path = mcp-proxmox
url = https://github.com/gilby125/mcp-proxmox.git
url = https://gitea.d-bis.org/d-bis/mcp-proxmox.git
[submodule "smom-dbis-138"]
path = smom-dbis-138
url = git@github.com:Order-of-Hospitallers/smom-dbis-138.git
@@ -64,3 +64,7 @@
[submodule "MEV_Bot"]
path = MEV_Bot
url = https://gitea.d-bis.org/d-bis/MEV_Bot.git
[submodule "atomic-swap-dapp"]
path = atomic-swap-dapp
url = https://gitea.d-bis.org/d-bis/atomic-swap-dapp.git
# Local bootstrap remote for initial scaffolding; replace with canonical hosted remote before team-wide clone use.

View File

@@ -11,15 +11,20 @@ Orchestration for Proxmox VE, Chain 138 (`smom-dbis-138/`), explorers, NPMplus,
| Need | Location |
|------|-----------|
| Doc index | `docs/MASTER_INDEX.md` |
| Canonical ecosystem master plan | `docs/02-architecture/DBIS_ECOSYSTEM_TECHNICAL_MASTER_PLAN.md` — umbrella root; subordinate roots: `dbis_chain_138_technical_master_plan.md`, `docs/03-deployment/DBIS_RTGS_MASTER_PLAN_IMPLEMENTATION_TRACKER.md`, `docs/04-configuration/universal-resource-activation/URA_MANIFEST_AUTOMATION_IMPLEMENTATION_TRACKER.md` |
| Universal resource activation (manifest, CI, Phoenix) | `UNIVERSAL_RESOURCE_WIRING.md`, `URA_MANIFEST_AUTOMATION_IMPLEMENTATION_TRACKER.md`, `URA_OPERATIONAL_READINESS_CHECKLIST.md` (under `docs/04-configuration/universal-resource-activation/`); `config/universal-resource-activation/{manifest.json,policy-profiles.json,integration/}`; `pnpm ura:ops-readiness` / `ura:ops-readiness:full`, `ura:production-ready` / `ura:production-ready:connectivity`, `ura:validate`, `ura:validate-profiles`, `ura:merge-manifest`, `ura:validate-ledger-mapping`, `ura:writer:ledger`, `ura:writer:settlement`, `ura:profile-hash`, `ura:validate-closure`, `ura:keccak`, `ura:smoke`; `URA_STRICT_CLOSURE` / Gitea `vars.URA_STRICT_CLOSURE`; `smom-dbis-138/contracts/universal-resource/PolicyProfileRegistry.sol` (scoped forge test); Phoenix `PUBLIC_V1_NO_PARTNER_KEY_PATHS` |
| Multi-jurisdiction compliance (matrices, onboarding) | `docs/04-configuration/compliance-matrices/README.md`, `INSTITUTION_ONBOARDING_CHARTER.md`, `INSTITUTION_ONBOARDING_PLAYBOOK.md`, `docs/04-configuration/jurisdictions/JURISDICTION_CATALOG.md`, `config/jurisdictions/catalog.v1.json`, `docs/dbis-rail/DBIS_RAIL_JURISDICTION_TRACEABILITY.md`, `docs/03-deployment/DBIS_RTGS_MASTER_PLAN_IMPLEMENTATION_TRACKER.md` |
| cXAUC/cXAUT unit | 1 full token = 1 troy oz Au — `docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md` (section 5.1) |
| PMM mesh 6s tick | `smom-dbis-138/scripts/reserve/pmm-mesh-6s-automation.sh``docs/integration/ORACLE_AND_KEEPER_CHAIN138.md` (PMM mesh automation) |
| VMID / IP / FQDN | `docs/04-configuration/ALL_VMIDS_ENDPOINTS.md` |
| Ops template + JSON | `docs/03-deployment/PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md`, `config/proxmox-operational-template.json` |
| Live vs template (read-only SSH) | `bash scripts/verify/audit-proxmox-operational-template.sh` |
| Config validation | `bash scripts/validation/validate-config-files.sh` |
| pnpm lockfile vs workspace (prevents `pnpm outdated` / importer bugs) | `bash scripts/verify/check-pnpm-workspace-lockfile.sh` — also run as **step 1b** in `run-all-validation.sh` |
| CI validation (no LAN) + cW* mesh matrix | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` — same gate as **Gitea** push/PR: `run-all-validation` in `.gitea/workflows/deploy-to-phoenix.yml` (push) and `.gitea/workflows/validate-on-pr.yml` (PR only). After deploy, optional **Cloudflare** `cloudflare-sync` (Phoenix + `PHOENIX_REPO_ROOT`; set `PHOENIX_CLOUDFLARE_SYNC=1` on that host) via `scripts/deployment/gitea-cloudflare-sync.sh`. Steps: dependencies, **pnpm workspace/lockfile check**, config, cW* mesh (when pair-discovery exists), **`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs`**, optional genesis. Manual only: `bash scripts/verify/build-cw-mesh-deployment-matrix.sh [--json-out …]` |
| FQDN / NPM E2E verifier | `bash scripts/verify/verify-end-to-end-routing.sh --profile=public` — inventory: `docs/04-configuration/E2E_ENDPOINTS_LIST.md`. Gitea Actions URLs (no API): `bash scripts/verify/print-gitea-actions-urls.sh` |
| Submodule trees clean (CI / post-merge) | `bash scripts/verify/submodules-clean.sh` |
| Submodule + explorer remotes | `docs/00-meta/SUBMODULE_HYGIENE.md` |
| Submodule + explorer remotes | `docs/00-meta/SUBMODULE_HYGIENE.md``mcp-proxmox` uses **Gitea** `https://gitea.d-bis.org/d-bis/mcp-proxmox.git` (not the old GitHub-only URL). `cross-chain-pmm-lps-publish` is a **worktree** of `cross-chain-pmm-lps`, not a submodule. |
| smom-dbis-138 `.env` in bash scripts | Prefer `source smom-dbis-138/scripts/lib/deployment/dotenv.sh` + `load_deployment_env --repo-root "$PROJECT_ROOT"` (trims RPC URL line endings). From an interactive shell: `source smom-dbis-138/scripts/load-env.sh`. Proxmox root scripts: `source scripts/lib/load-project-env.sh` (also trims common RPC vars). |
| Sankofa portal → CT 7801 (build + restart) | `./scripts/deployment/sync-sankofa-portal-7801.sh` (`--dry-run` first); sets `NEXTAUTH_URL` on CT via `sankofa-portal-ensure-nextauth-on-ct.sh` |
| CCIP relay (r630-01 host) | Unit: `config/systemd/ccip-relay.service``/etc/systemd/system/ccip-relay.service`; `systemctl enable --now ccip-relay` |
@@ -27,7 +32,13 @@ Orchestration for Proxmox VE, Chain 138 (`smom-dbis-138/`), explorers, NPMplus,
| The Order portal (`https://the-order.sankofa.nexus`) | OSJ management UI (secure auth); source repo **the_order** at `~/projects/the_order`. NPM upstream defaults to **order-haproxy** CT **10210** (`IP_ORDER_HAPROXY:80`); use `THE_ORDER_UPSTREAM_*` to point at the Sankofa portal if 10210 is down. Provision HAProxy: `scripts/deployment/provision-order-haproxy-10210.sh`. **`www.the-order.sankofa.nexus`** → **301** apex (same as www.sankofa / www.phoenix). |
| Portal login + Keycloak systemd + `.env` (prints password once) | `./scripts/deployment/enable-sankofa-portal-login-7801.sh` (`--dry-run` first) |
| Completable (no LAN) | `./scripts/run-completable-tasks-from-anywhere.sh` |
| Operator (LAN + secrets) | `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` unset) |
| smom-dbis-138 root `forge test` | Uses `foundry.toml` `[profile.default] skip` for legacy Uniswap V2 vendor trees (0.5/0.6 solc); scoped work still uses `bash scripts/forge/scope.sh …` |
| cWUSDT Mainnet USD pricing (on-chain + runbook) | `./scripts/deployment/price-cw-token-mainnet.sh``docs/03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md` |
| Deployer LP balances (mesh inventory) | `python3 scripts/deployment/check-deployer-lp-balances.py` — scans `deployment-status.json` + `reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json`; **UniV2** `lpToken` = pair; **DODO DVM** LP shares = `balanceOf(pool)`; on failure, probes `_BASE_TOKEN_` / `_BASE_CAPITAL_TOKEN_` / `_QUOTE_CAPITAL_TOKEN_` + extra public RPCs (`--no-resolve-dodo` skips; `--chain-id N` for one chain). JSON: `lpTokenAddress`, `lpResolution`, `lpBalances[]`. Use `--deployer` / `DEPLOYER_ADDRESS` if no `PRIVATE_KEY` |
| Etherscan Value $0 for Mainnet `cW*` | Listing path (CoinGecko/CMC), not a contract toggle — `docs/04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md` |
| Verify contracts on explorers (all networks) | `cd smom-dbis-138 && ./scripts/deployment/verify-all-networks-explorers.sh` — Blockscout 138, Etherscan + multichain `cW*`, Avax/Arb bridges, optional Cronos/Wemix/CCIPLogger |
| Operator (LAN + secrets) | `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` unset; backup also needs `NPM_EMAIL` in `.env`) |
| Remote SSH to dev VM (5700 / `192.168.11.59`) for runner & deploy API | [docs/04-configuration/DEV_VM_SSH_REMOTE_ACCESS.md](docs/04-configuration/DEV_VM_SSH_REMOTE_ACCESS.md) (Cloudflare Access + tunnel, or UDM allowlist) |
| Cloudflare bulk DNS → `PUBLIC_IP` | `./scripts/update-all-dns-to-public-ip.sh` — use **`--dry-run`** and **`--zone-only=sankofa.nexus`** (or `d-bis.org` / `mim4u.org` / `defi-oracle.io`) to limit scope; see script header. Prefer scoped **`CLOUDFLARE_API_TOKEN`** (see `.env.master.example`). |
## Git submodules

Submodule MEV_Bot updated: 682bd76349...f126ae50b4

View File

@@ -90,6 +90,14 @@ From the root directory, you can run:
- `pnpm frontend:build` - Build the ProxmoxVE frontend for production
- `pnpm frontend:start` - Start the production frontend server
### Mission Control (unified operator console)
- `pnpm mission-control:dev` - Next.js console on **http://localhost:3010** (launchpad + guided runbooks + live run trace + audit ZIP)
- `pnpm mission-control:build` / `pnpm mission-control:start` - Production build and server
- `pnpm mission-control:test` - Executor smoke test (real allowlisted child process)
See [mission-control/README.md](mission-control/README.md) and [mission-control/TIMELINE.md](mission-control/TIMELINE.md).
### Testing
- `pnpm test` - Run tests (if available)

1
atomic-swap-dapp Submodule

Submodule atomic-swap-dapp added at 44a731b606

View File

@@ -20,7 +20,5 @@ liveBridgeRoute,138-WETH-25-ccip,live,bridge,138,25,WETH,0xC02aaA39b223FE8D0A0e5
liveBridgeRoute,138-WETH-42220-ccip,live,bridge,138,42220,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,,
liveBridgeRoute,138-WETH-651940-alltra,live,bridge,138,651940,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,ALT,0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc,LiFi,,,,
liveBridgeRoute,138-WETH10-1-ccip,live,bridge,138,1,WETH10,0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f,WETH10,0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f,,CCIP,0xe0E93247376aa097dB308B92e6Ba36bA015535D0,LiFi,,,,
blockedOrPlannedRoute,138-compliant-stable-to-weth-bridgeable,blocked,swap-bridge-swap,138,1,cUSDT|cUSDC|cEURT,,,,,,,,,,,"No live public cUSDT/WETH, cUSDC/WETH, or cEURT/WETH pool on Chain 138."
blockedOrPlannedRoute,651940-public-dex-routes,planned,swap,651940,651940,,,,,,,,,,,,Uniswap V2/V3 and DODO are env placeholders only; no pool addresses are documented in-repo.
blockedOrPlannedRoute,cw-edge-pools-public-chains,planned,swap,1,43114,,,,,,,,,,,,"cW* token addresses exist on several public chains, but deployment-status.json contains no PMM pools."
blockedOrPlannedRoute,138-weth-1111-ccip,planned,bridge,138,1111,,,,,,,,,,,,Wemix bridge is pending funding and deployment.
blockedOrPlannedRoute,651940-public-dex-routes,planned,swap,651940,651940,,,,,,,,,,,,Alltra same-chain settlement remains documentation-only: no deployed PMM or Uniswap venue inventory is published in canonical deployment status, and HYDX/AlltraDEX router-factory-pool addresses are still not committed in-repo.
blockedOrPlannedRoute,138-weth-1111-ccip,planned,bridge,138,1111,,,,,,,,,,,,"Wemix bridge contracts are deployed and destinations are wired, but the current Chain 138 CCIP router still rejects the Wemix selector with `CCIPRouter: chain not supported`; the WEMIX-side LINK balances are also zero and no successful proof transfer has been recorded."
1 kind routeId status routeType fromChainId toChainId tokenInSymbol tokenInAddress tokenOutSymbol tokenOutAddress hopCount bridgeType bridgeAddress aggregatorFamilies tags intermediateSymbols legRefs notesOrReason
20 liveBridgeRoute 138-WETH-42220-ccip live bridge 138 42220 WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 CCIP 0xcacfd227A040002e49e2e01626363071324f820a LiFi
21 liveBridgeRoute 138-WETH-651940-alltra live bridge 138 651940 WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 ALT 0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc LiFi
22 liveBridgeRoute 138-WETH10-1-ccip live bridge 138 1 WETH10 0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f WETH10 0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f CCIP 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 LiFi
23 blockedOrPlannedRoute 138-compliant-stable-to-weth-bridgeable 651940-public-dex-routes blocked planned swap-bridge-swap swap 138 651940 1 651940 cUSDT|cUSDC|cEURT No live public cUSDT/WETH, cUSDC/WETH, or cEURT/WETH pool on Chain 138. Alltra same-chain settlement remains documentation-only: no deployed PMM or Uniswap venue inventory is published in canonical deployment status
24 blockedOrPlannedRoute 651940-public-dex-routes 138-weth-1111-ccip planned swap bridge 651940 138 651940 1111 Uniswap V2/V3 and DODO are env placeholders only; no pool addresses are documented in-repo. Wemix bridge contracts are deployed and destinations are wired, but the current Chain 138 CCIP router still rejects the Wemix selector with `CCIPRouter: chain not supported`; the WEMIX-side LINK balances are also zero and no successful proof transfer has been recorded.
blockedOrPlannedRoute cw-edge-pools-public-chains planned swap 1 43114 cW* token addresses exist on several public chains, but deployment-status.json contains no PMM pools.
blockedOrPlannedRoute 138-weth-1111-ccip planned bridge 138 1111 Wemix bridge is pending funding and deployment.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,161 @@
{
"name": "ALL Mainnet Non-DODO Protocol Surface",
"version": "0.1.0",
"updated": "2026-04-21",
"chainId": 651940,
"network": "ALL Mainnet (Alltra)",
"status": "bridge_live_swap_inventory_pending",
"summary": {
"bridgeOnlyLive": true,
"sameChainSwapInventoryPublished": false,
"notes": [
"The Chain 138 <-> 651940 AlltraAdapter bridge is live.",
"This file documents the known non-DODO Alltra protocol and token surface without asserting live routable pool inventory.",
"Promote protocols here into canonical route inventory only after real factory/router/pool addresses are committed and verified."
]
},
"documentedTokens": [
{
"symbol": "AUSDT",
"address": "0x015B1897Ed5279930bC2Be46F661894d219292A6",
"decimals": 18,
"category": "stablecoin",
"status": "verified"
},
{
"symbol": "USDT",
"address": "0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e",
"decimals": 18,
"category": "stablecoin",
"status": "verified"
},
{
"symbol": "USDC",
"address": "0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881",
"decimals": 18,
"category": "stablecoin",
"status": "verified"
},
{
"symbol": "WETH",
"address": "0x798F6762BB40d6801A593459d08F890603D3979C",
"decimals": 18,
"category": "wrapped-native",
"status": "verified"
},
{
"symbol": "WALL",
"address": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4",
"decimals": 18,
"category": "wrapped-native",
"status": "verified"
},
{
"symbol": "HYDX",
"address": "0x0d9793861AEB9244AD1B34375a83A6730F6AdD38",
"decimals": 18,
"category": "dex-token",
"status": "verified"
},
{
"symbol": "HYBX",
"address": "0x1839f77eBed7F388c7035f7061B4B8Ef0E72317a",
"decimals": 8,
"category": "defi-token",
"status": "verified"
},
{
"symbol": "CHT",
"address": "0xE59Bb804F4884FcEA183a4A67B1bb04f4a4567bc",
"decimals": 8,
"category": "defi-token",
"status": "verified"
},
{
"symbol": "AUDA",
"address": "0x690740f055A41FA7669f5a379Bf71B0cDF353073",
"decimals": 18,
"category": "defi-token",
"status": "verified"
}
],
"protocols": [
{
"name": "AlltraDEX / EnhancedSwapRouter",
"family": "custom_router",
"status": "documented_inventory_pending",
"factoryAddress": null,
"routerAddress": null,
"notes": [
"Documented in docs/11-references/ALL_MAINNET_ROUTING_ENGINE.md as the intended same-chain swap surface.",
"No committed canonical factory/router/pool inventory is currently published in-repo."
]
},
{
"name": "HYDX",
"family": "custom_router",
"status": "token_present_protocol_surface_pending",
"factoryAddress": null,
"routerAddress": null,
"envKeys": [
"CHAIN_651940_HYDX_FACTORY",
"CHAIN_651940_HYDX_ROUTER",
"CHAIN_651940_HYDX_START_BLOCK",
"CHAIN_651940_HYDX_PAIR_CREATED_EVENT"
],
"notes": [
"The HYDX token is documented and verified on ALL Mainnet.",
"The repo expects factory/router discovery via env, but no canonical pool inventory is currently committed."
]
},
{
"name": "Uniswap V2",
"family": "uniswap_v2",
"status": "env_placeholder_only",
"factoryAddress": null,
"routerAddress": null,
"notes": [
"Referenced in token-aggregation dex-factory config and docs as an env-driven surface.",
"Do not treat as routable until real factory/router/pair addresses are committed."
]
},
{
"name": "Uniswap V3",
"family": "uniswap_v3",
"status": "env_placeholder_only",
"factoryAddress": null,
"routerAddress": null,
"notes": [
"Referenced in token-aggregation dex-factory config and docs as an env-driven surface.",
"Do not treat as routable until real factory/router/pool addresses are committed."
]
},
{
"name": "DODO PMM",
"family": "dodo_pmm",
"status": "env_placeholder_only",
"factoryAddress": null,
"routerAddress": null,
"notes": [
"Mentioned in docs as placeholder-only for ALL Mainnet.",
"No committed DODO PMM pool inventory is currently published for chain 651940."
]
}
],
"bridgeSurface": {
"adapter": {
"name": "AlltraAdapter",
"address": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc",
"status": "live"
},
"supportedBridgeAssets": [
"cUSDC",
"cUSDT"
]
},
"nextTasks": [
"Publish real same-chain pool inventory before promoting ALL Mainnet beyond bridge-live inventory.",
"Commit canonical factory/router metadata once HYDX or AlltraDEX routing addresses are confirmed.",
"Add pool-level addresses and verification artifacts before enabling public route generation from this protocol surface."
]
}

View File

@@ -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 — 34 enodes (incl. Putu RPC 2307/2308 .237/.238).
# Generated by scripts/besu/collect-enodes-from-all-besu-nodes.sh — 37 enodes after live adds of 2103 (.217), 1509 (.219), and 1510 (.220).
nodes-allowlist=[
"enode://2221dd9fc65c9082d4a937832cba9f6759981888df6798407c390bd153f4332c152ea5d03dd9d9cda74d7990fb3479a5c4ba7166269322be9790eed9ebdcfe24@192.168.11.100:30303",
@@ -17,8 +17,11 @@ nodes-allowlist=[
"enode://5f048208071f2a3036128433e1e4a647a7683abd8bc0f27d063e2933ced983accdfc44998666f3be711e4eff27511142d9989775b86cdbe28c79b74409fc36bb@192.168.11.214:30303",
"enode://8da1b586e2e98f521f07148d3bb5d81fde151ce3d5738b51bc36e2c81de1aaa5404ce31e991b4393bbe471934f0a9a31f78d1d7c17c1899c3e2dde5e9f16eb24@192.168.11.244:30303",
"enode://acd46d31913b8379f075467cd88d2ea650d33474d2f9546426da4a414fe92233584c9d8c2e1ea9962fa4257c20b66c9434d0488e51c632f285205d6a379cfbd6@192.168.11.245:30303",
"enode://8a3337adcc2d177caf3aee26b3b6077d9adf126c580e12f352743ca07828f056ceb1d5fb1a06287e2dbbe19043fcc4b9bdd2ca9ae2a2c9142cf0cc3a549bfc68@192.168.11.219:30303",
"enode://09fe518689c54a34c3dac8aebf3c94bfc390f4bae143a80c57d92a502414df0689d12a2243ff9376c2f44a419894d934b4f47783ced31ea9668522078854e58f@192.168.11.220:30303",
"enode://6cdc892fa09afa2b05c21cc9a1193a86cf0d195ce81b02a270d8bb987f78ca98ad90d907670796c90fc6e4eaf3b4cae6c0c15871e2564de063beceb4bbfc6532@192.168.11.211:30303",
"enode://e53713bb77ad9f39e8a04b9c82aadddd3449220167f546bca8e9f36f6ebf60ae003e48ac293790e2bd7b0aca382777db9eca61d6f048c04f9dbe65eedb79d893@192.168.11.212:30303?discport=0",
"enode://e871ff3b1f58b9a87122e552b2404e1893bf92ae74d4fa6bc2bd002d0350c506ea452f4aefa1a3497ef32694c4beb48bf8a006d2b82f57649c90b22f59044aad@192.168.11.217:30303?discport=0",
"enode://07daf3d64079faa3982bc8be7aa86c24ef21eca4565aae4a7fd963c55c728de0639d80663834634edf113b9f047d690232ae23423c64979961db4b6449aa6dfd@192.168.11.221:30303",
"enode://868bd957d6d887944deac0190161a3db7d1316a022e40a2383d5c334aa3fb8bc7ca36f165b6fb377b77d202fec46f3840f2f659b6a47807b7ce9b944b8382f10@192.168.11.232:30303",
"enode://688f271d94c7995600ae36d25aa2fb92fea0c52e50e86c598be8966515458c1408b67fba76e1f771073e4774a6e399588443da63394ea25d56e6ca36f2288e00@192.168.11.233:30303",

View File

@@ -13,8 +13,11 @@
"enode://5f048208071f2a3036128433e1e4a647a7683abd8bc0f27d063e2933ced983accdfc44998666f3be711e4eff27511142d9989775b86cdbe28c79b74409fc36bb@192.168.11.214:30303",
"enode://8da1b586e2e98f521f07148d3bb5d81fde151ce3d5738b51bc36e2c81de1aaa5404ce31e991b4393bbe471934f0a9a31f78d1d7c17c1899c3e2dde5e9f16eb24@192.168.11.244:30303",
"enode://acd46d31913b8379f075467cd88d2ea650d33474d2f9546426da4a414fe92233584c9d8c2e1ea9962fa4257c20b66c9434d0488e51c632f285205d6a379cfbd6@192.168.11.245:30303",
"enode://8a3337adcc2d177caf3aee26b3b6077d9adf126c580e12f352743ca07828f056ceb1d5fb1a06287e2dbbe19043fcc4b9bdd2ca9ae2a2c9142cf0cc3a549bfc68@192.168.11.219:30303",
"enode://09fe518689c54a34c3dac8aebf3c94bfc390f4bae143a80c57d92a502414df0689d12a2243ff9376c2f44a419894d934b4f47783ced31ea9668522078854e58f@192.168.11.220:30303",
"enode://6cdc892fa09afa2b05c21cc9a1193a86cf0d195ce81b02a270d8bb987f78ca98ad90d907670796c90fc6e4eaf3b4cae6c0c15871e2564de063beceb4bbfc6532@192.168.11.211:30303",
"enode://e53713bb77ad9f39e8a04b9c82aadddd3449220167f546bca8e9f36f6ebf60ae003e48ac293790e2bd7b0aca382777db9eca61d6f048c04f9dbe65eedb79d893@192.168.11.212:30303?discport=0",
"enode://e871ff3b1f58b9a87122e552b2404e1893bf92ae74d4fa6bc2bd002d0350c506ea452f4aefa1a3497ef32694c4beb48bf8a006d2b82f57649c90b22f59044aad@192.168.11.217:30303?discport=0",
"enode://07daf3d64079faa3982bc8be7aa86c24ef21eca4565aae4a7fd963c55c728de0639d80663834634edf113b9f047d690232ae23423c64979961db4b6449aa6dfd@192.168.11.221:30303",
"enode://868bd957d6d887944deac0190161a3db7d1316a022e40a2383d5c334aa3fb8bc7ca36f165b6fb377b77d202fec46f3840f2f659b6a47807b7ce9b944b8382f10@192.168.11.232:30303",
"enode://688f271d94c7995600ae36d25aa2fb92fea0c52e50e86c598be8966515458c1408b67fba76e1f771073e4774a6e399588443da63394ea25d56e6ca36f2288e00@192.168.11.233:30303",

View File

@@ -0,0 +1,166 @@
{
"schemaVersion": "1.0.0",
"updated": "2026-04-24",
"canonicalRootDoc": "docs/02-architecture/DBIS_ECOSYSTEM_TECHNICAL_MASTER_PLAN.md",
"workstreams": [
{
"id": "W1",
"title": "Besu / Chain 138 infrastructure and RPC topology",
"status": "live",
"horizon": "near_term",
"ownerClass": "mixed",
"dependsOn": [],
"sourceDocs": [
"docs/06-besu/BESU_NODE_CONFIGURATION_MAP_20260424.md",
"dbis_chain_138_technical_master_plan.md",
"docs/03-deployment/PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md"
],
"acceptanceGate": "Canonical Besu inventory reconciled across all active cluster hosts, block production healthy, and no unexplained canonical node gaps remain.",
"evidenceArtifact": "scripts/verify/check-cluster-besu-inventory.sh --json"
},
{
"id": "W2",
"title": "Liquidity, PMM, bridge, and public routing coverage",
"status": "partially live",
"horizon": "near_term",
"ownerClass": "mixed",
"dependsOn": [
"W1"
],
"sourceDocs": [
"docs/11-references/DEPLOYER_TO_PUBLIC_STABLECOIN_ROUTES.md",
"docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md",
"reports/status/LIVE_ECOSYSTEM_FINANCIAL_INVENTORY_AND_ROUTING_GAPS_20260424.md"
],
"acceptanceGate": "Machine-readable route coverage is current and can distinguish live, partial, and blocked routing paths for stablecoins and top assets.",
"evidenceArtifact": "config/public-routing-coverage-matrix.json"
},
{
"id": "W3",
"title": "Phoenix deploy/control-plane integration",
"status": "partially live",
"horizon": "near_term",
"ownerClass": "mixed",
"dependsOn": [
"W1",
"W2",
"W4"
],
"sourceDocs": [
"docs/04-configuration/PHOENIX_SANKOFA_OPERATOR_HANDOFF.md",
"docs/02-architecture/DBIS_ECOSYSTEM_TECHNICAL_MASTER_PLAN.md"
],
"acceptanceGate": "Phoenix deploy/control APIs expose current canonical manifests and validated deploy targets without drifting from repo truth.",
"evidenceArtifact": "scripts/validation/validate-config-files.sh"
},
{
"id": "W4",
"title": "URA manifest, policy profiles, registry, and route confidence",
"status": "repo-implemented",
"horizon": "near_term",
"ownerClass": "repo",
"dependsOn": [
"W2",
"W3"
],
"sourceDocs": [
"docs/04-configuration/universal-resource-activation/URA_MANIFEST_AUTOMATION_IMPLEMENTATION_TRACKER.md",
"docs/04-configuration/universal-resource-activation/README.md",
"config/universal-resource-activation/manifest.json"
],
"acceptanceGate": "URA manifest and policy profiles validate, registry references are coherent, and route-confidence can be produced as a first-class control-plane artifact.",
"evidenceArtifact": "scripts/validate/validate-universal-resource-activation.mjs"
},
{
"id": "W5",
"title": "DBIS RTGS / DBIS Rail / OMNL / settlement sidecars",
"status": "partially live",
"horizon": "near_term",
"ownerClass": "mixed",
"dependsOn": [
"W4",
"W6"
],
"sourceDocs": [
"docs/03-deployment/DBIS_RTGS_MASTER_PLAN_IMPLEMENTATION_TRACKER.md",
"docs/dbis-rail/DBIS_RAIL_SETTLEMENT_EVENT_SOURCES.md",
"docs/03-deployment/DBIS_RTGS_FIRST_SLICE_ARCHITECTURE.md"
],
"acceptanceGate": "First-slice settlement boundaries, event sources, custody roles, and sidecar responsibilities are explicit enough for production gating.",
"evidenceArtifact": "docs/03-deployment/DBIS_RTGS_MASTER_PLAN_IMPLEMENTATION_TRACKER.md"
},
{
"id": "W6",
"title": "Jurisdiction/compliance and onboarding matrices",
"status": "repo-implemented",
"horizon": "near_term",
"ownerClass": "repo",
"dependsOn": [
"W4"
],
"sourceDocs": [
"docs/04-configuration/compliance-matrices/README.md",
"docs/04-configuration/jurisdictions/JURISDICTION_CATALOG.md",
"docs/dbis-rail/DBIS_RAIL_JURISDICTION_TRACEABILITY.md"
],
"acceptanceGate": "Jurisdiction and onboarding matrices are machine-readable enough to gate policy profiles and institutional activation paths.",
"evidenceArtifact": "config/jurisdictions/catalog.v1.json"
},
{
"id": "W7",
"title": "Identity / Hyperledger / interoperability stack",
"status": "planned",
"horizon": "long_term",
"ownerClass": "external",
"dependsOn": [
"W5",
"W6"
],
"sourceDocs": [
"docs/03-deployment/DBIS_HYPERLEDGER_RUNTIME_STATUS.md",
"docs/03-deployment/DBIS_HYPERLEDGER_IDENTITY_STACK_DECISION.md"
],
"acceptanceGate": "Identity and interoperability slices have explicit runtime ownership, promotion gates, and environment-specific deployment decisions.",
"evidenceArtifact": "docs/03-deployment/DBIS_HYPERLEDGER_RUNTIME_STATUS.md"
},
{
"id": "W8",
"title": "Observability, verification, evidence, and operator readiness",
"status": "live",
"horizon": "near_term",
"ownerClass": "mixed",
"dependsOn": [
"W1",
"W2",
"W3",
"W4",
"W5",
"W6"
],
"sourceDocs": [
"docs/00-meta/OPERATOR_HANDOFF_2026_04_24.md",
"docs/00-meta/OPERATOR_READY_CHECKLIST.md",
"docs/04-configuration/universal-resource-activation/URA_OPERATIONAL_READINESS_CHECKLIST.md"
],
"acceptanceGate": "Validation, health, and operator readiness outputs are current enough to act as production gates rather than ad hoc references.",
"evidenceArtifact": "scripts/verify/run-all-validation.sh"
}
],
"blockedBy": [
{
"id": "B1",
"class": "external",
"description": "Some institutional integrations, custody counterparties, and settlement-sidecar dependencies cannot be closed from repo-only work."
},
{
"id": "B2",
"class": "external",
"description": "Some public-network expansion lanes remain constrained by third-party bridge, exchange, or destination-liquidity realities."
},
{
"id": "B3",
"class": "operator",
"description": "Operator promotion of URA, sidecar, and policy-aware runtime slices still trails repo implementation in several areas."
}
]
}

View File

@@ -0,0 +1,21 @@
{
"registryEntryId": "a5c115dd-e147-4eb5-8cf1-f7d9c38f959e",
"entity_id": "98450070C57395F6B906",
"jurisdiction": "International",
"chain_id": 138,
"address": "0x1ac3F4942a71E86A9682D91837E1E71b7BACdF99",
"addressRole": "token_contract",
"aliases": [
{
"aliasType": "internal_slug",
"aliasValue": "chain138-cusdc-v2",
"validFrom": "2026-03-31T08:22:11Z"
}
],
"blockscout": {
"label": "Chain 138 cUSDC V2 (staged)",
"labelType": "token"
},
"status": "active",
"lastCorrelationId": "deploy-cusdc-v2-2026-03-31"
}

View File

@@ -0,0 +1,21 @@
{
"registryEntryId": "3cc7d52c-26fb-4afb-9508-0c102f8f6f81",
"entity_id": "98450070C57395F6B906",
"jurisdiction": "International",
"chain_id": 138,
"address": "0x8d342d321DdEe97D0c5011DAF8ca0B59DA617D29",
"addressRole": "token_contract",
"aliases": [
{
"aliasType": "internal_slug",
"aliasValue": "chain138-cusdt-v2",
"validFrom": "2026-03-31T08:22:11Z"
}
],
"blockscout": {
"label": "Chain 138 cUSDT V2 (staged)",
"labelType": "token"
},
"status": "active",
"lastCorrelationId": "deploy-cusdt-v2-2026-03-31"
}

View File

@@ -0,0 +1,37 @@
{
"registryVersion": 1,
"purpose": "Authoritative network codes for Elemental Imperium (33×33×6) wallet labels. ASNs are optional; add when assigned.",
"labelSpec": {
"id": "ei-wallet-label-v1",
"cellIdFormat": "EI-L{lpbca:02d}-B{branch:02d}-C{class}",
"labelFormatDefault": "{networkCode}.{cellId}",
"labelFormatWithAsn": "{networkCode}.{cellId}.AS{asn}",
"notes": [
"cellId is stable and never depends on ASN or network reassignment uses.",
"networkCode is lowercase kebab-case; use this registry as the allow-list.",
"When asn is assigned, append .AS{n} with integer n (no leading AS in the number token beyond the literal AS prefix)."
]
},
"defaultNetworkCode": "unassigned",
"overlayExamplePath": "config/elemental-imperium-wallet-overlay.example.json",
"networks": [
{
"code": "unassigned",
"displayName": "Not yet mapped to an operational network",
"asn": null,
"status": "placeholder"
},
{
"code": "chain138-core",
"displayName": "Chain 138 execution / RPC plane (internal)",
"asn": null,
"status": "planned"
},
{
"code": "operator-lan",
"displayName": "Operator management LAN (e.g. 192.168.11.0/24)",
"asn": null,
"status": "planned"
}
]
}

View File

@@ -0,0 +1,23 @@
{
"overlayVersion": 1,
"description": "Optional mapping layered on registry defaults. rangeRules: first matching rule sets networkCode and asn for that wallet. cellOverrides: per cellId, partial overrides win over rangeRules.",
"rangeRules": [
{
"comment": "Example: LPBCA slice 010 on chain138-core; remove or edit when ASNs are assigned",
"match": {
"lpbca": [0, 10],
"branch": [0, 32],
"class": [0, 5]
},
"networkCode": "chain138-core",
"asn": null
}
],
"cellOverrides": {
"EI-L00-B00-C0": {
"comment": "Example single-cell override",
"networkCode": "unassigned",
"asn": null
}
}
}

View File

@@ -0,0 +1,62 @@
{
"template_version": "1.1.0",
"purpose": "Additional on-chain and off-chain inventory for the source-to-CEX execution model.",
"questions_to_fill": [
"All additional EVM EOAs or smart-wallet addresses",
"Any multisigs, vaults, or treasury contracts you want included",
"Any custodial or exchange balances to include off-chain",
"Any LP or staking positions not visible from wallet token balances alone",
"The real production CEX or OTC sink to use for handoff"
],
"wallets": [
{
"label": "primary-deployer-documented",
"address": "0x4A666F96fC8764181194447A7dFdb7d471b301C8",
"chains": [
"1",
"138"
],
"role": "treasury",
"include_in_baseline": true,
"notes": "Canonical documented deployer wallet. Deduplicate against primary baseline if loaded twice."
}
],
"offchain_accounts": [
{
"label": "example-exchange",
"platform": "unknown",
"account_type": "unknown",
"operational_status": "planned",
"enabled_for_production_handoff": false,
"accepted_deposit_assets": [
"USDC"
],
"preferred_deposit_asset": "USDC",
"deposit_chain_id": "1",
"deposit_chain_name": "Ethereum Mainnet",
"deposit_address": "",
"min_packet_usd": 1000,
"max_packet_usd": 250000,
"slippage_ceiling_bps": 100,
"asset_balances": [
{
"symbol": "USDC",
"amount": 0,
"estimated_usd": 0,
"chain_id": "offchain",
"chain_name": "Off-chain / custodial",
"notes": "Replace with a real balance only when you want it counted."
}
],
"include_in_baseline": false,
"notes": "Replace with a real sink before enabling production handoff."
}
],
"risk_preferences": {
"max_drawdown_pct": null,
"liquidity_need_horizon": null,
"bridging_allowed": null,
"lp_allowed": null,
"leverage_allowed": null
}
}

View File

@@ -0,0 +1,62 @@
{
"template_version": "1.1.0",
"purpose": "Additional on-chain and off-chain inventory for the source-to-CEX execution model.",
"questions_to_fill": [
"All additional EVM EOAs or smart-wallet addresses",
"Any multisigs, vaults, or treasury contracts you want included",
"Any custodial or exchange balances to include off-chain",
"Any LP or staking positions not visible from wallet token balances alone",
"The real production CEX or OTC sink to use for handoff"
],
"wallets": [
{
"label": "primary-deployer-documented",
"address": "0x4A666F96fC8764181194447A7dFdb7d471b301C8",
"chains": [
"1",
"138"
],
"role": "treasury",
"include_in_baseline": true,
"notes": "Canonical documented deployer wallet. Deduplicate against primary baseline if loaded twice."
}
],
"offchain_accounts": [
{
"label": "example-exchange",
"platform": "unknown",
"account_type": "unknown",
"operational_status": "planned",
"enabled_for_production_handoff": false,
"accepted_deposit_assets": [
"USDC"
],
"preferred_deposit_asset": "USDC",
"deposit_chain_id": "1",
"deposit_chain_name": "Ethereum Mainnet",
"deposit_address": "",
"min_packet_usd": 1000,
"max_packet_usd": 250000,
"slippage_ceiling_bps": 100,
"asset_balances": [
{
"symbol": "USDC",
"amount": 0,
"estimated_usd": 0,
"chain_id": "offchain",
"chain_name": "Off-chain / custodial",
"notes": "Replace with a real balance only when you want it counted."
}
],
"include_in_baseline": false,
"notes": "Replace with a real sink before enabling production handoff."
}
],
"risk_preferences": {
"max_drawdown_pct": null,
"liquidity_need_horizon": null,
"bridging_allowed": null,
"lp_allowed": null,
"leverage_allowed": null
}
}

View File

@@ -0,0 +1,55 @@
{
"version": "1.0.0",
"updated": "2026-04-18",
"rail": "mainnet_cwusdc_usdc",
"network": {
"chainId": 1,
"name": "Ethereum Mainnet",
"rpcEnvKeys": [
"ETHEREUM_MAINNET_RPC"
]
},
"publicPair": {
"base": "cWUSDC",
"quote": "USDC",
"role": "discovery_lane",
"venue": "uniswap_v2_pair",
"poolAddress": "0xC28706F899266b36BC43cc072b3a921BDf2C48D9"
},
"defendedVenue": {
"base": "cWUSDC",
"quote": "USDC",
"role": "primary_defense",
"venue": "dodo_pmm",
"poolAddress": "0x69776fc607e9edA8042e320e7e43f54d06c68f0E",
"managedCycleScript": "smom-dbis-138/script/flash/RunManagedMainnetAaveCwusdcUsdcQuotePushCycle.s.sol:RunManagedMainnetAaveCwusdcUsdcQuotePushCycle"
},
"thresholds": {
"warnDeviationBps": 25,
"interveneDeviationBps": 75,
"criticalDeviationBps": 150,
"minBaseReserveUnits": 2500,
"minQuoteReserveUnits": 2500
},
"managedCycle": {
"defaultHarvestSurplus": true,
"defaultGasHoldbackTargetRaw": 0,
"maxAutomatedFlashQuoteAmountRaw": 2964298,
"quoteAmountByDeviationBps": [
{
"minDeviationBps": 150,
"flashQuoteAmountRaw": 2964298
},
{
"minDeviationBps": 75,
"flashQuoteAmountRaw": 1482149
}
]
},
"notes": [
"The public Uniswap V2 pair is for visible routing and discovery, not for hard parity guarantees on its own.",
"When the public pair drifts beyond the intervention corridor, use the managed DODO quote-push stack as the first automated defense path.",
"Do not trust POOL_CWUSDC_USDC_MAINNET from dotenv blindly; this policy is the canonical defended venue binding.",
"Automation is capped to the currently tested safe tranche until the defended lane is explicitly re-sized from fresh liquidity measurements."
]
}

View File

@@ -0,0 +1,83 @@
{
"program_name": "Mr. Promod Uniswap V2 cW Deep Liquidity Program",
"purpose": "Define the desired-state Uniswap V2 or Uniswap-V2-compatible liquidity rollout for cW* and cWAUSDT rails on bridged public networks.",
"operator_rule": "When canonical USDC or USDT depth is scarce, concentrate depth first in wrapped support rails and then expand into canonical settlement rails.",
"mainnet_funding_posture": {
"mode": "triple-rail-support",
"required_deployer_assets": [
"cWUSDC",
"cWUSDT",
"cWAUSDT"
],
"notes": [
"cWUSDC and cWUSDT remain the core settlement-adjacent rails.",
"cWAUSDT is the wrapped-depth support asset when canonical USDC or USDT inventory is not yet deep enough."
]
},
"priority_tiers": {
"tier_1": [
"1",
"8453",
"42161",
"10",
"137"
],
"tier_2": [
"56",
"43114",
"100",
"42220",
"25"
],
"tier_3": [
"1111"
]
},
"wrapped_depth_phase": {
"preferred_pairs_in_order": [
"cWAUSDT/cWUSDC",
"cWAUSDT/cWUSDT",
"cWUSDT/cWUSDC"
],
"allocation_share_pct": {
"flagship_pair": 50,
"second_pair": 30,
"third_pair": 20
},
"notes": [
"This phase is for creating visibly deep wrapped-to-wrapped liquidity before canonical settlement rails are deep enough.",
"Wrapped-depth pools strengthen routing and inventory transfer between the cW settlement rails and cWAUSDT support inventory.",
"These pools do not replace the eventual need for direct canonical settlement rails."
]
},
"settlement_phase": {
"preferred_pairs_by_hub": {
"USDC": [
"cWUSDC/USDC",
"cWUSDT/USDC",
"cWAUSDT/USDC"
],
"USDT": [
"cWUSDT/USDT",
"cWUSDC/USDT",
"cWAUSDT/USDT"
]
},
"notes": [
"Settlement-phase pools remain the preferred terminal rails for exchange and OTC normalization.",
"Promote settlement rails only after wrapped-depth support is stable and enough canonical stable inventory is available."
]
},
"uniswap_v2_requirements": {
"required_env_suffixes": [
"UNISWAP_V2_FACTORY",
"UNISWAP_V2_ROUTER",
"UNISWAP_V2_START_BLOCK"
],
"required_registry_updates": [
"cross-chain-pmm-lps/config/deployment-status.json",
"token-aggregation env for the target chain",
"MCP allowlist or indexer visibility for new pairs"
]
}
}

View File

@@ -0,0 +1,35 @@
{
"version": "1.0.0",
"last_updated": "2026-04-17",
"purpose": "Operator policy for Chain 138 -> Mainnet normalization -> CEX handoff.",
"production_enabled": false,
"default_route_model": "Chain 138 inventory -> canonical bridge -> Mainnet normalization -> CEX handoff",
"operator_defaults": {
"primary_same_day_feeder": "cUSDC",
"secondary_same_day_feeder": "cUSDT",
"stable_lp_mode": "unwind_first",
"immediate_assets": [
"cWUSDC",
"cWUSDT"
],
"reject_non_promoted_assets": true
},
"normalization_policy": {
"preferred_settlement_assets": [
"USDC",
"USDT"
],
"default_settlement_asset": "USDC",
"allow_usdt_only_with_operator_approval": true,
"post_bridge_aggregation_only": true
},
"packetization_policy": {
"bridge_packet_usd_max": 250000,
"normalization_packet_usd_max": 100000,
"direct_cwusdc_usdc_usage_cap_usd": 213.102461,
"direct_cwusdt_usdt_usage_cap_usd": 2.182358,
"force_cwusdt_via_cwusdc_threshold_usd": 10,
"default_slippage_ceiling_bps": 100,
"chunking_mode": "bridge_in_chunks_then_normalize_then_continuous_cex_handoff"
}
}

View File

@@ -0,0 +1,52 @@
# Besu Configuration for besu-sentry-1 (VMID: 1500)
# Generated baseline sentry config promoted into first-class repo coverage.
data-path="/data/besu"
genesis-file=""
# Network
network-id=138
p2p-host="192.168.11.150"
p2p-port=30303
max-peers=32
discovery-enabled=true
# RPC
rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-port=8545
rpc-http-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
rpc-http-cors-origins=["*"]
rpc-http-api-enable-unsafe-txsigning=true
rpc-ws-enabled=true
rpc-ws-host="0.0.0.0"
rpc-ws-port=8546
rpc-ws-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
# GraphQL
graphql-http-enabled=true
graphql-http-host="0.0.0.0"
graphql-http-port=8547
# Metrics
metrics-enabled=true
metrics-host="0.0.0.0"
metrics-port=9545
# Logging
logging="INFO"
log-destination="CONSOLE"
# Sync
sync-mode="FULL"
fast-sync-min-peers=2
# Privacy
privacy-enabled=false
# Mining
miner-enabled=false
# QBFT
qbft-enabled=true

View File

@@ -0,0 +1,52 @@
# Besu Configuration for besu-sentry-2 (VMID: 1501)
# Generated baseline sentry config promoted into first-class repo coverage.
data-path="/data/besu"
genesis-file=""
# Network
network-id=138
p2p-host="192.168.11.151"
p2p-port=30303
max-peers=32
discovery-enabled=true
# RPC
rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-port=8545
rpc-http-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
rpc-http-cors-origins=["*"]
rpc-http-api-enable-unsafe-txsigning=true
rpc-ws-enabled=true
rpc-ws-host="0.0.0.0"
rpc-ws-port=8546
rpc-ws-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
# GraphQL
graphql-http-enabled=true
graphql-http-host="0.0.0.0"
graphql-http-port=8547
# Metrics
metrics-enabled=true
metrics-host="0.0.0.0"
metrics-port=9545
# Logging
logging="INFO"
log-destination="CONSOLE"
# Sync
sync-mode="FULL"
fast-sync-min-peers=2
# Privacy
privacy-enabled=false
# Mining
miner-enabled=false
# QBFT
qbft-enabled=true

View File

@@ -0,0 +1,52 @@
# Besu Configuration for besu-sentry-3 (VMID: 1502)
# Generated baseline sentry config promoted into first-class repo coverage.
data-path="/data/besu"
genesis-file=""
# Network
network-id=138
p2p-host="192.168.11.152"
p2p-port=30303
max-peers=32
discovery-enabled=true
# RPC
rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-port=8545
rpc-http-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
rpc-http-cors-origins=["*"]
rpc-http-api-enable-unsafe-txsigning=true
rpc-ws-enabled=true
rpc-ws-host="0.0.0.0"
rpc-ws-port=8546
rpc-ws-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
# GraphQL
graphql-http-enabled=true
graphql-http-host="0.0.0.0"
graphql-http-port=8547
# Metrics
metrics-enabled=true
metrics-host="0.0.0.0"
metrics-port=9545
# Logging
logging="INFO"
log-destination="CONSOLE"
# Sync
sync-mode="FULL"
fast-sync-min-peers=2
# Privacy
privacy-enabled=false
# Mining
miner-enabled=false
# QBFT
qbft-enabled=true

View File

@@ -0,0 +1,52 @@
# Besu Configuration for besu-sentry-4 (VMID: 1503)
# Generated baseline sentry config promoted into first-class repo coverage.
data-path="/data/besu"
genesis-file=""
# Network
network-id=138
p2p-host="192.168.11.153"
p2p-port=30303
max-peers=32
discovery-enabled=true
# RPC
rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-port=8545
rpc-http-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
rpc-http-cors-origins=["*"]
rpc-http-api-enable-unsafe-txsigning=true
rpc-ws-enabled=true
rpc-ws-host="0.0.0.0"
rpc-ws-port=8546
rpc-ws-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
# GraphQL
graphql-http-enabled=true
graphql-http-host="0.0.0.0"
graphql-http-port=8547
# Metrics
metrics-enabled=true
metrics-host="0.0.0.0"
metrics-port=9545
# Logging
logging="INFO"
log-destination="CONSOLE"
# Sync
sync-mode="FULL"
fast-sync-min-peers=2
# Privacy
privacy-enabled=false
# Mining
miner-enabled=false
# QBFT
qbft-enabled=true

View File

@@ -0,0 +1,52 @@
# Besu Configuration for besu-sentry-ali (VMID: 1504)
# Generated baseline sentry config promoted into first-class repo coverage.
data-path="/data/besu"
genesis-file=""
# Network
network-id=138
p2p-host="192.168.11.154"
p2p-port=30303
max-peers=32
discovery-enabled=true
# RPC
rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-port=8545
rpc-http-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
rpc-http-cors-origins=["*"]
rpc-http-api-enable-unsafe-txsigning=true
rpc-ws-enabled=true
rpc-ws-host="0.0.0.0"
rpc-ws-port=8546
rpc-ws-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
# GraphQL
graphql-http-enabled=true
graphql-http-host="0.0.0.0"
graphql-http-port=8547
# Metrics
metrics-enabled=true
metrics-host="0.0.0.0"
metrics-port=9545
# Logging
logging="INFO"
log-destination="CONSOLE"
# Sync
sync-mode="FULL"
fast-sync-min-peers=2
# Privacy
privacy-enabled=false
# Mining
miner-enabled=false
# QBFT
qbft-enabled=true

View File

@@ -8,7 +8,7 @@ genesis-file=""
network-id=138
p2p-host="192.168.11.244"
p2p-port=30303
max-peers=32
max-peers=40
discovery-enabled=true
# RPC
@@ -40,6 +40,7 @@ log-destination="CONSOLE"
# Sync
sync-mode="FULL"
tx-pool-max-future-by-sender=1
fast-sync-min-peers=2
# Privacy

View File

@@ -8,7 +8,7 @@ genesis-file=""
network-id=138
p2p-host="192.168.11.245"
p2p-port=30303
max-peers=32
max-peers=40
discovery-enabled=true
# RPC
@@ -40,6 +40,7 @@ log-destination="CONSOLE"
# Sync
sync-mode="FULL"
tx-pool-max-future-by-sender=1
fast-sync-min-peers=2
# Privacy

View File

@@ -0,0 +1,53 @@
# Besu Configuration for besu-sentry-thirdweb-01 (VMID: 1509)
# Generated canonical per-node config for promoted sentry inventory.
data-path="/data/besu"
genesis-file=""
# Network
network-id=138
p2p-host="192.168.11.219"
p2p-port=30303
max-peers=40
discovery-enabled=true
# RPC
rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-port=8545
rpc-http-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
rpc-http-cors-origins=["*"]
rpc-http-api-enable-unsafe-txsigning=true
rpc-ws-enabled=true
rpc-ws-host="0.0.0.0"
rpc-ws-port=8546
rpc-ws-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
# GraphQL
graphql-http-enabled=true
graphql-http-host="0.0.0.0"
graphql-http-port=8547
# Metrics
metrics-enabled=true
metrics-host="0.0.0.0"
metrics-port=9545
# Logging
logging="INFO"
log-destination="CONSOLE"
# Sync
sync-mode="FULL"
tx-pool-max-future-by-sender=1
fast-sync-min-peers=2
# Privacy
privacy-enabled=false
# Mining
miner-enabled=false
# QBFT
qbft-enabled=true

View File

@@ -0,0 +1,53 @@
# Besu Configuration for besu-sentry-thirdweb-02 (VMID: 1510)
# Generated canonical per-node config for promoted sentry inventory.
data-path="/data/besu"
genesis-file=""
# Network
network-id=138
p2p-host="192.168.11.220"
p2p-port=30303
max-peers=40
discovery-enabled=true
# RPC
rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-port=8545
rpc-http-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
rpc-http-cors-origins=["*"]
rpc-http-api-enable-unsafe-txsigning=true
rpc-ws-enabled=true
rpc-ws-host="0.0.0.0"
rpc-ws-port=8546
rpc-ws-api=["ETH","NET","WEB3","ADMIN","PERSONAL","MINER","DEBUG"]
# GraphQL
graphql-http-enabled=true
graphql-http-host="0.0.0.0"
graphql-http-port=8547
# Metrics
metrics-enabled=true
metrics-host="0.0.0.0"
metrics-port=9545
# Logging
logging="INFO"
log-destination="CONSOLE"
# Sync
sync-mode="FULL"
tx-pool-max-future-by-sender=1
fast-sync-min-peers=2
# Privacy
privacy-enabled=false
# Mining
miner-enabled=false
# QBFT
qbft-enabled=true

View File

@@ -9,8 +9,8 @@ genesis-file=""
network-id=138
p2p-host="192.168.11.172"
p2p-port=30303
max-peers=32
discovery-enabled=true
max-peers=40
discovery-enabled=false
# RPC - Full Function (can deploy contracts, execute writes)
rpc-http-enabled=true

View File

@@ -9,8 +9,8 @@ genesis-file=""
network-id=138
p2p-host="192.168.11.173"
p2p-port=30303
max-peers=32
discovery-enabled=true
max-peers=40
discovery-enabled=false
# RPC - Standard Base (read-only, no admin APIs)
rpc-http-enabled=true

View File

@@ -9,8 +9,8 @@ genesis-file=""
network-id=138
p2p-host="192.168.11.174"
p2p-port=30303
max-peers=32
discovery-enabled=true
max-peers=40
discovery-enabled=false
# RPC - Standard Base (read-only, no admin APIs)
rpc-http-enabled=true

View File

@@ -9,8 +9,8 @@ genesis-file=""
network-id=138
p2p-host="192.168.11.246"
p2p-port=30303
max-peers=32
discovery-enabled=true
max-peers=40
discovery-enabled=false
# RPC - Full Function (can deploy contracts, execute writes)
rpc-http-enabled=true

View File

@@ -9,8 +9,8 @@ genesis-file=""
network-id=138
p2p-host="192.168.11.247"
p2p-port=30303
max-peers=32
discovery-enabled=true
max-peers=40
discovery-enabled=false
# RPC - Standard Base (read-only, no admin APIs)
rpc-http-enabled=true

View File

@@ -9,8 +9,8 @@ genesis-file=""
network-id=138
p2p-host="192.168.11.248"
p2p-port=30303
max-peers=32
discovery-enabled=true
max-peers=40
discovery-enabled=false
# RPC - Standard Base (read-only, no admin APIs)
rpc-http-enabled=true

View File

@@ -0,0 +1,16 @@
[Unit]
Description=Hyperledger Besu
After=network.target
[Service]
Type=simple
User=besu
Group=besu
ExecStart=/opt/besu/bin/besu --config-file=/etc/besu/config.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,16 @@
[Unit]
Description=Hyperledger Besu
After=network.target
[Service]
Type=simple
User=besu
Group=besu
ExecStart=/opt/besu/bin/besu --config-file=/etc/besu/config.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,16 @@
[Unit]
Description=Hyperledger Besu
After=network.target
[Service]
Type=simple
User=besu
Group=besu
ExecStart=/opt/besu/bin/besu --config-file=/etc/besu/config.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,16 @@
[Unit]
Description=Hyperledger Besu
After=network.target
[Service]
Type=simple
User=besu
Group=besu
ExecStart=/opt/besu/bin/besu --config-file=/etc/besu/config.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,16 @@
[Unit]
Description=Hyperledger Besu
After=network.target
[Service]
Type=simple
User=besu
Group=besu
ExecStart=/opt/besu/bin/besu --config-file=/etc/besu/config.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,16 @@
[Unit]
Description=Hyperledger Besu
After=network.target
[Service]
Type=simple
User=besu
Group=besu
ExecStart=/opt/besu/bin/besu --config-file=/etc/besu/config.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,16 @@
[Unit]
Description=Hyperledger Besu
After=network.target
[Service]
Type=simple
User=besu
Group=besu
ExecStart=/opt/besu/bin/besu --config-file=/etc/besu/config.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

View File

@@ -77,6 +77,8 @@ BLOCKSCOUT_API_URL="http://${IP_BLOCKSCOUT}:${BLOCKSCOUT_API_PORT}"
FORGE_VERIFIER_PROXY_PORT="${FORGE_VERIFIER_PROXY_PORT:-3080}"
IP_NPMPLUS="192.168.11.167"
IP_NPMPLUS_SECONDARY="192.168.11.168"
# Proxmox Mail Gateway (LXC 100, VMID 100) — PMG web UI; SMTP 25/587 on same host
IP_PMG="${IP_PMG:-192.168.11.32}"
IP_NGINX_LEGACY="192.168.11.26"
IP_ORDER_OPENSEARCH="192.168.11.48"
IP_ORDER_HAPROXY="192.168.11.39"
@@ -169,6 +171,10 @@ PUBLIC_IP_MIFOS="76.53.10.41"
# DApp LXC (VMID 5801) — frontend-dapp for Chain 138 bridge. See docs/03-deployment/DAPP_LXC_DEPLOYMENT.md; E2E: tunnel + NPMplus dapp.d-bis.org
IP_DAPP_LXC="192.168.11.58"
# CurrenciCombo Phoenix CT (VMID 8604) on r630-01 — internal Phoenix app deployment on VLAN 160
IP_CURRENCICOMBO_PHOENIX="${IP_CURRENCICOMBO_PHOENIX:-10.160.0.14}"
CURRENCICOMBO_PHOENIX_VMID="${CURRENCICOMBO_PHOENIX_VMID:-8604}"
# Phoenix / Sankofa public edge (NPMplus → CT 7800 API, 7801 portal). Legacy scripts use IP_SERVICE_50 / IP_SERVICE_51.
# SolaceScanScout / Blockscout is IP_BLOCKSCOUT:80 — do NOT point sankofa.nexus or phoenix.sankofa.nexus there.
IP_SERVICE_50="${IP_SERVICE_50:-192.168.11.50}"

View File

@@ -0,0 +1,44 @@
{
"schemaVersion": "1.0.0",
"updatedAt": "2026-04-25T18:00:00Z",
"description": "Canonical jurisdiction catalog for multi-institution onboarding. Add rows as jurisdictions are formally in-scope. Legal review required before marking status production_ready.",
"jurisdictions": [
{
"id": "ID",
"label": "Indonesia",
"governingLawNote": "Indonesian law; BI and sector regulators — detail in compliance matrix, not legal advice.",
"regulatorsNote": "Bank Indonesia (BI); OJK where applicable — confirm with counsel.",
"activitiesInScope": ["payments_omnl", "server_funds_treasury", "rtgs_sidecars", "chain138_settlement_evidence"],
"activitiesExcluded": ["generic_securities_issuance_unless_scoped"],
"complianceMatrixPath": "docs/04-configuration/compliance-matrices/ID-INDONESIA/banking_v1.md",
"status": "pilot_ready",
"policyProfileIdsReferenced": [
"institutional_custody_skr_v1",
"server_funds_treasury_v1",
"infra_capacity_ops_v1"
]
},
{
"id": "GENERIC-COMMON-LAW-STUB",
"label": "Generic common-law banking stub (template)",
"governingLawNote": "Illustrative only — replace with real jurisdiction before production.",
"regulatorsNote": "Placeholder — no regulator list.",
"activitiesInScope": ["template_process_only"],
"activitiesExcluded": ["all_production_until_replaced"],
"complianceMatrixPath": "docs/04-configuration/compliance-matrices/GENERIC-COMMON-LAW-STUB/banking_v1.md",
"status": "template_only",
"policyProfileIdsReferenced": []
},
{
"id": "US-DELAWARE-CORP-STUB",
"label": "US Delaware corporate stub (draft second jurisdiction)",
"governingLawNote": "Illustrative corporate/treasury stub — not legal advice; replace with real federal/state matrix.",
"regulatorsNote": "Placeholder.",
"activitiesInScope": ["draft_matrix_training_only"],
"activitiesExcluded": ["all_production_until_replaced"],
"complianceMatrixPath": "docs/04-configuration/compliance-matrices/US-DELAWARE-CORP-STUB/banking_v1.md",
"status": "draft",
"policyProfileIdsReferenced": []
}
]
}

View File

@@ -18,6 +18,8 @@
"enode://17413a9ab0f570c72e9d7d511a856cd5b5abb58b70d0b9635524220a5354ee275429bf5d630025dbbb0d67c6ae24510e6560bf8b38a7e226e24a00cd181d6ae6@192.168.11.174:30303",
"enode://ab7f104acbcb254ced2653122f80b2c93b541467edc8f5b4bc90c4d3794cbbb1b2cbea69f9fe5e89f848e46a158e6ce45d76901e64801669321ce62172048eb8@192.168.11.244:30303",
"enode://237e27eb3a8738189e266615e7d613da18f86018a76080e18dbb9856baeab6454b1aebff889bc0790f2d791dd277121ee76a4fc0a0d1bc1001c2811b42518618@192.168.11.245:30303",
"enode://8a3337adcc2d177caf3aee26b3b6077d9adf126c580e12f352743ca07828f056ceb1d5fb1a06287e2dbbe19043fcc4b9bdd2ca9ae2a2c9142cf0cc3a549bfc68@192.168.11.219:30303",
"enode://09fe518689c54a34c3dac8aebf3c94bfc390f4bae143a80c57d92a502414df0689d12a2243ff9376c2f44a419894d934b4f47783ced31ea9668522078854e58f@192.168.11.220:30303",
"enode://89570ba8882ea1d383afb97d0d82eb3cf5d0c5fec7ae2acfe39487e5335ee91c36cd4b5e9aa05110d99b51a16b869f7531e6f89ec63476cba7f928356c437348@192.168.11.246:30303",
"enode://0fdbda7b6916973e598b7c9ff6e4e2da6f8bcce2ca46bb11c58368a9fbcfcb303a4955a563b2f71a51a813abeed3b44da220ad1488d19c9483f733548a7b7765@192.168.11.247:30303",
"enode://0c710ae1e4eaf7ee9d375c404798625c5165e1699a24aedadcfb69fa8fcde41c822d3576b1a180c3251aeba9782ceb43cb32c300c4e1a205905728d72b94cfe9@192.168.11.248:30303",

View File

@@ -18,6 +18,8 @@
"enode://17413a9ab0f570c72e9d7d511a856cd5b5abb58b70d0b9635524220a5354ee275429bf5d630025dbbb0d67c6ae24510e6560bf8b38a7e226e24a00cd181d6ae6@192.168.11.174:30303",
"enode://ab7f104acbcb254ced2653122f80b2c93b541467edc8f5b4bc90c4d3794cbbb1b2cbea69f9fe5e89f848e46a158e6ce45d76901e64801669321ce62172048eb8@192.168.11.244:30303",
"enode://237e27eb3a8738189e266615e7d613da18f86018a76080e18dbb9856baeab6454b1aebff889bc0790f2d791dd277121ee76a4fc0a0d1bc1001c2811b42518618@192.168.11.245:30303",
"enode://8a3337adcc2d177caf3aee26b3b6077d9adf126c580e12f352743ca07828f056ceb1d5fb1a06287e2dbbe19043fcc4b9bdd2ca9ae2a2c9142cf0cc3a549bfc68@192.168.11.219:30303",
"enode://09fe518689c54a34c3dac8aebf3c94bfc390f4bae143a80c57d92a502414df0689d12a2243ff9376c2f44a419894d934b4f47783ced31ea9668522078854e58f@192.168.11.220:30303",
"enode://89570ba8882ea1d383afb97d0d82eb3cf5d0c5fec7ae2acfe39487e5335ee91c36cd4b5e9aa05110d99b51a16b869f7531e6f89ec63476cba7f928356c437348@192.168.11.246:30303",
"enode://0fdbda7b6916973e598b7c9ff6e4e2da6f8bcce2ca46bb11c58368a9fbcfcb303a4955a563b2f71a51a813abeed3b44da220ad1488d19c9483f733548a7b7765@192.168.11.247:30303",
"enode://0c710ae1e4eaf7ee9d375c404798625c5165e1699a24aedadcfb69fa8fcde41c822d3576b1a180c3251aeba9782ceb43cb32c300c4e1a205905728d72b94cfe9@192.168.11.248:30303",

View File

@@ -0,0 +1,41 @@
# Standard Chain Config Parameters
[rollup_config]
# alt_da must be nil
seq_window_size = [3600, 3600]
block_time = [1, 2]
[optimism_portal_2]
proof_maturity_delay_seconds = [604800, 604800] # 7 days
dispute_game_finality_delay_seconds = [302400, 302400] # 3.5 days
respected_game_type = 0
[resource_config]
max_resource_limit = 20000000
elasticity_multiplier = 10
base_fee_max_change_denominator = 8
minimum_base_fee = 1000000000
system_tx_max_gas = 1000000
maximum_base_fee = "340_282_366_920_938_463_463_374_607_431_768_211_455"
[gas_price_oracle.pre-ecotone]
decimals = [6, 6]
overhead = [188, 188]
scalar = [684_000, 684_000]
[gas_price_oracle.ecotone]
decimals = [6, 6]
blob_base_fee_scalar = [0, 10_000_000]
base_fee_scalar = [0, 10_000_000]
[system_config]
gas_limit = [8_000_000, 200_000_000]
operator_fee_scalar = [0, 0]
operator_fee_constant = [0, 0]
minimum_base_fee = [0, 10_000_000_000] # 10 Gwei
[proofs.permissioned]
game_type = 1
max_game_depth = 73
split_depth = 30
max_clock_duration = 302400
clock_extension = 10800

View File

@@ -0,0 +1,8 @@
guardian = "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2"
challenger = "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A"
l1ProxyAdminOwner = "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A"
protocolVersionsOwner = "0x847B5c174615B1B7fDF770882256e2D3E95b9D92"
# This is the ALIASED address of the L1 2/2 Safe between the Optimism Foundation and the Security Council.
# To compute the aliased address, add 0x1111000000000000000000000000000000001111
l2ProxyAdminOwner = "0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b"

View File

@@ -0,0 +1,446 @@
# Contracts which are
# * unproxied singletons: specify a standard "address"
# * proxied : specify a standard "implementation_address"
# * neither : specify neither a standard "address" nor "implementation_address"
["op-contracts/v6.0.0"]
system_config = { version = "3.13.1", implementation_address = "0xd392c27b84b1ca776528f2704bc67b82a62132d2" }
fault_dispute_game = { version = "2.2.0" }
permissioned_dispute_game = { version = "2.2.0" }
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
optimism_portal = { version = "5.2.0", implementation_address = "0x97cebbf8959e2a5476fbe9b98a21806ec234609b" }
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
anchor_state_registry = { version = "3.7.0", implementation_address = "0x36398155cd17cfe804f69b233edda800dd4d5aa5" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.4.0", implementation_address = "0xc040f392e52cb6970ca8e110c280fe24e07c5e2c" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
op_contracts_manager = { version = "6.0.0", address = "0x50f47b43c24f40b92c873fa0704d4207586d0c9f" }
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
# The L1 contracts are unchanged from Upgrade 18 / v6.0.0-rc.1, this entry is required for a release of op-deployer
# with updates to L2 contracts only.
["op-contracts/v6.0.0-rc.2"]
system_config = { version = "3.13.1", implementation_address = "0xd392c27b84b1ca776528f2704bc67b82a62132d2" }
fault_dispute_game = { version = "2.2.0" }
permissioned_dispute_game = { version = "2.2.0" }
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
optimism_portal = { version = "5.2.0", implementation_address = "0x97cebbf8959e2a5476fbe9b98a21806ec234609b" }
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
anchor_state_registry = { version = "3.7.0", implementation_address = "0x36398155cd17cfe804f69b233edda800dd4d5aa5" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.4.0", implementation_address = "0xc040f392e52cb6970ca8e110c280fe24e07c5e2c" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
op_contracts_manager = { version = "6.0.0", address = "0x50f47b43c24f40b92c873fa0704d4207586d0c9f" }
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
# Upgrade 18 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv6.0.0-rc.1
["op-contracts/v6.0.0-rc.1"]
system_config = { version = "3.13.1", implementation_address = "0xd392c27b84b1ca776528f2704bc67b82a62132d2" }
fault_dispute_game = { version = "2.2.0" }
permissioned_dispute_game = { version = "2.2.0" }
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
optimism_portal = { version = "5.2.0", implementation_address = "0x97cebbf8959e2a5476fbe9b98a21806ec234609b" }
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
anchor_state_registry = { version = "3.7.0", implementation_address = "0x36398155cd17cfe804f69b233edda800dd4d5aa5" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.4.0", implementation_address = "0xc040f392e52cb6970ca8e110c280fe24e07c5e2c" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
op_contracts_manager = { version = "6.0.0", address = "0x50f47b43c24f40b92c873fa0704d4207586d0c9f" }
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
# Upgrade 17 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv5.0.0
["op-contracts/v5.0.0"]
system_config = { version = "3.11.0", implementation_address = "0x2fa28989fc559836e9d66dff3010c7f7f41c65ed" }
fault_dispute_game = { version = "1.8.0" }
permissioned_dispute_game = { version = "1.8.0" }
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
optimism_portal = { version = "5.1.1", implementation_address = "0x7cf803296662e8c72a6c1d6450572209acf7f202" }
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.3.0", implementation_address = "0x74fac1d45b98bae058f8f566201c9a81b85c7d50" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
op_contracts_manager = { version = "4.2.0", address = "0xfa1ef97fb02b0da2ee2346b8e310907ab5519449" }
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
# Upgrade 17 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv5.0.0-rc.2
["op-contracts/v5.0.0-rc.2"]
system_config = { version = "3.11.0", implementation_address = "0x2fa28989fc559836e9d66dff3010c7f7f41c65ed" }
fault_dispute_game = { version = "1.8.0" }
permissioned_dispute_game = { version = "1.8.0" }
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
optimism_portal = { version = "5.1.1", implementation_address = "0x7cf803296662e8c72a6c1d6450572209acf7f202" }
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.3.0", implementation_address = "0x74fac1d45b98bae058f8f566201c9a81b85c7d50" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
op_contracts_manager = { version = "4.2.0", address = "0xfa1ef97fb02b0da2ee2346b8e310907ab5519449" }
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
# Upgrade 16a https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.1.0
["op-contracts/v4.1.0"]
system_config = { version = "3.7.0", implementation_address = "0x2bfe4a5bd5a41e9d848d843ebcdfa15954e9a557" }
fault_dispute_game = { version = "1.7.0" }
permissioned_dispute_game = { version = "1.7.0" }
mips = { version = "1.8.0", address = "0x07babe08ee4d07dba236530183b24055535a7011" }
optimism_portal = { version = "5.0.0", implementation_address = "0x381e729ff983fa4bced820e7b922d79bf653b999" }
optimism_portal_interop = { version = "5.0.0+interop", implementation_address = "0xb0eb854fd842e0e564d49d2fe6b2ac25d035523c" }
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.10.0", implementation_address = "0x22d12e0faebd62d429514a65ebae32dd316c12d6" }
l1_erc721_bridge = { version = "2.8.0", implementation_address = "0x7f1d12fb2911eb095278085f721e644c1f675696" }
l1_standard_bridge = { version = "2.7.0", implementation_address = "0xe32b192fb1dca88fcb1c56b3acb429e32238adcb" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
op_contracts_manager = { version = "3.2.0", address = "0x8123739c1368c2dedc8c564255bc417feeebff9d" }
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
# Upgrade 16a https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.1.0-rc.3
["op-contracts/v4.1.0-rc.3"]
system_config = { version = "3.7.0", implementation_address = "0x2bfe4a5bd5a41e9d848d843ebcdfa15954e9a557" }
fault_dispute_game = { version = "1.7.0" }
permissioned_dispute_game = { version = "1.7.0" }
mips = { version = "1.8.0", address = "0x07babe08ee4d07dba236530183b24055535a7011" }
optimism_portal = { version = "5.0.0", implementation_address = "0x381e729ff983fa4bced820e7b922d79bf653b999" }
optimism_portal_interop = { version = "5.0.0+interop", implementation_address = "0xb0eb854fd842e0e564d49d2fe6b2ac25d035523c" }
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.10.0", implementation_address = "0x22d12e0faebd62d429514a65ebae32dd316c12d6" }
l1_erc721_bridge = { version = "2.8.0", implementation_address = "0x7f1d12fb2911eb095278085f721e644c1f675696" }
l1_standard_bridge = { version = "2.7.0", implementation_address = "0xe32b192fb1dca88fcb1c56b3acb429e32238adcb" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
op_contracts_manager = { version = "3.2.0", address = "0x8123739c1368c2dedc8c564255bc417feeebff9d" }
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
# Upgrade 16 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.0.0
["op-contracts/v4.0.0"]
system_config = { version = "3.4.0", implementation_address = "0xfaa660bf783cbaa55e1b7f3475c20db74a53b9fa" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.7.0" }
mips = { version = "1.4.0-patch.2", address = "0xa1b54d89e305bcd322ba0c9c094093173c0d6b3a" }
optimism_portal = { version = "4.6.0", implementation_address = "0xefed7f38bb9be74bba583a1a5b7d0fe7c9d5787a" }
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.9.0", implementation_address = "0xd26bb3aaaa4cb5638a8581a4c4b1d937d8e05c54" }
l1_erc721_bridge = { version = "2.7.0", implementation_address = "0x25d6cedeb277ad7ebee71226ed7877768e0b7a2f" }
l1_standard_bridge = { version = "2.6.0", implementation_address = "0x44afb7722af276a601d524f429016a18b6923df0" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
op_contracts_manager = { version = "2.4.0", address = "0x56ebc5c4870f5367b836081610592241ad3e0734" }
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
# Upgrade 16 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.0.0-rc.8
["op-contracts/v4.0.0-rc.8"]
system_config = { version = "3.4.0", implementation_address = "0xfaa660bf783cbaa55e1b7f3475c20db74a53b9fa" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.7.0" }
mips = { version = "1.4.0-patch.2", address = "0xa1b54d89e305bcd322ba0c9c094093173c0d6b3a" }
optimism_portal = { version = "4.6.0", implementation_address = "0xefed7f38bb9be74bba583a1a5b7d0fe7c9d5787a" }
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.9.0", implementation_address = "0xd26bb3aaaa4cb5638a8581a4c4b1d937d8e05c54" }
l1_erc721_bridge = { version = "2.7.0", implementation_address = "0x25d6cedeb277ad7ebee71226ed7877768e0b7a2f" }
l1_standard_bridge = { version = "2.6.0", implementation_address = "0x44afb7722af276a601d524f429016a18b6923df0" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
op_contracts_manager = { version = "2.4.0", address = "0x56ebc5c4870f5367b836081610592241ad3e0734" }
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
# Upgrade 16 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.0.0-rc.7
["op-contracts/v4.0.0-rc.7"]
system_config = { version = "3.4.0", implementation_address = "0xfaa660bf783cbaa55e1b7f3475c20db74a53b9fa" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.7.0" }
mips = { version = "1.4.0", address = "0x8a4e5594662775f71b05977a6c90590dd14e3c8f" }
optimism_portal = { version = "4.6.0", implementation_address = "0xefed7f38bb9be74bba583a1a5b7d0fe7c9d5787a" }
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.9.0", implementation_address = "0xd26bb3aaaa4cb5638a8581a4c4b1d937d8e05c54" }
l1_erc721_bridge = { version = "2.7.0", implementation_address = "0x25d6cedeb277ad7ebee71226ed7877768e0b7a2f" }
l1_standard_bridge = { version = "2.6.0", implementation_address = "0x44afb7722af276a601d524f429016a18b6923df0" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
op_contracts_manager = { version = "2.4.0", address = "0x4fefd0c327d08143be8037c45f8a29fa0d711e50" }
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
# Upgrade 16 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.0.0-rc.6
["op-contracts/v4.0.0-rc.6"]
system_config = { version = "3.4.0", implementation_address = "0xfaa660bf783cbaa55e1b7f3475c20db74a53b9fa" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.7.0" }
mips = { version = "1.4.0", address = "0x8a4e5594662775f71b05977a6c90590dd14e3c8f" }
optimism_portal = { version = "4.6.0", implementation_address = "0xefed7f38bb9be74bba583a1a5b7d0fe7c9d5787a" }
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.9.0", implementation_address = "0xd26bb3aaaa4cb5638a8581a4c4b1d937d8e05c54" }
l1_erc721_bridge = { version = "2.7.0", implementation_address = "0x25d6cedeb277ad7ebee71226ed7877768e0b7a2f" }
l1_standard_bridge = { version = "2.6.0", implementation_address = "0x44afb7722af276a601d524f429016a18b6923df0" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
op_contracts_manager = { version = "2.4.0", address = "0x4fefd0c327d08143be8037c45f8a29fa0d711e50" }
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
# Only the DeployOPChain.s.sol script changed between v3.0.0 and v3.0.1
["op-contracts/v3.0.1"]
system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.4.1" }
mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0
optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" }
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" }
l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" }
l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" }
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
# Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0
# Only the L2 predeploys changed between rc.1 and rc.2. See https://github.com/ethereum-optimism/optimism/pull/14848.
["op-contracts/v3.0.0"]
system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.4.1" }
mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0
optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" }
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" }
l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" }
l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" }
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
# Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0-rc.2
# Only the L2 predeploys changed between rc.1 and rc.2. See https://github.com/ethereum-optimism/optimism/pull/14848.
["op-contracts/v3.0.0-rc.2"]
system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.4.1" }
mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0
optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" }
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" }
l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" }
l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" }
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
# Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0-rc.1
["op-contracts/v3.0.0-rc.1"]
system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.4.1" }
mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0
optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" }
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" }
l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" }
l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" }
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
# OPCM https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv2.2.0
["op-contracts/v2.2.0"]
system_config = { version = "2.4.0", implementation_address = "0x760c48c62a85045a6b69f07f4a9f22868659cbcc" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.4.1" }
mips = { version = "1.3.0", address = "0xaa59a0777648bc75cd10364083e878c1ccd6112a" }
optimism_portal = { version = "3.13.0", implementation_address = "0x2d7e764a0d9919e16983a46595cfa81fc34fa7cd" }
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.5.0", implementation_address = "0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231" }
l1_erc721_bridge = { version = "2.3.1", implementation_address = "0x276d3730f219f7ec22274f7263180b8452b46d47" }
l1_standard_bridge = { version = "2.2.2", implementation_address = "0x78972E88Ab8BBB517a36cAea23b931BAB58AD3c6" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
op_contracts_manager = { version = "1.7.0", address = "0x1c7bfa38a25ad22cafc556a9bd827e1da7ec1791" }
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
# OPCM https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv2.0.0
["op-contracts/v2.0.0"]
system_config = { version = "2.4.0", implementation_address = "0x760c48c62a85045a6b69f07f4a9f22868659cbcc" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.4.1" }
mips = { version = "1.3.0", address = "0xaa59a0777648bc75cd10364083e878c1ccd6112a" }
optimism_portal = { version = "3.13.0", implementation_address = "0x2d7e764a0d9919e16983a46595cfa81fc34fa7cd" }
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.5.0", implementation_address = "0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231" }
l1_erc721_bridge = { version = "2.3.1", implementation_address = "0x276d3730f219f7ec22274f7263180b8452b46d47" }
l1_standard_bridge = { version = "2.2.2", implementation_address = "0x78972E88Ab8BBB517a36cAea23b931BAB58AD3c6" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
op_contracts_manager = { version = "1.6.0", address = "0x026b2f158255beac46c1e7c6b8bbf29a4b6a7b76" }
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
# OPCM https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv2.0.0-rc.1
["op-contracts/v2.0.0-rc.1"]
system_config = { version = "2.4.0", implementation_address = "0x760c48c62a85045a6b69f07f4a9f22868659cbcc" }
fault_dispute_game = { version = "1.4.1" }
permissioned_dispute_game = { version = "1.4.1" }
mips = { version = "1.3.0", address = "0xaa59a0777648bc75cd10364083e878c1ccd6112a" }
optimism_portal = { version = "3.13.0", implementation_address = "0x2d7e764a0d9919e16983a46595cfa81fc34fa7cd" }
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
l1_cross_domain_messenger = { version = "2.5.0", implementation_address = "0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231" }
l1_erc721_bridge = { version = "2.3.1", implementation_address = "0x276d3730f219f7ec22274f7263180b8452b46d47" }
l1_standard_bridge = { version = "2.2.2", implementation_address = "0x78972E88Ab8BBB517a36cAea23b931BAB58AD3c6" }
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
op_contracts_manager = { version = "1.6.0", address = "0x026b2f158255beac46c1e7c6b8bbf29a4b6a7b76" }
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
# Holocene https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.8.0
["op-contracts/v1.8.0"]
# Updated in this release
system_config = { version = "2.3.0", implementation_address = "0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375" } # UPDATED IN THIS RELEASE
fault_dispute_game = { version = "1.3.1" } # UPDATED IN THIS RELEASE
permissioned_dispute_game = { version = "1.3.1" } # UPDATED IN THIS RELEASE
mips = { version = "1.2.1", address = "0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C" } # UPDATED IN THIS RELEASE
# Unchanged in this release
optimism_portal = { version = "3.10.0", implementation_address = "0xe2F826324b2faf99E513D16D266c3F80aE87832B" }
anchor_state_registry = { version = "2.0.0" }
delayed_weth = { version = "1.1.0", implementation_address = "0x71e966Ae981d1ce531a7b6d23DC0f27B38409087" }
dispute_game_factory = { version = "1.0.0", implementation_address = "0xc641A33cab81C559F2bd4b21EA34C290E2440C2B" }
preimage_oracle = { version = "1.1.2", address = "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277" }
l1_cross_domain_messenger = { version = "2.3.0", implementation_address = "0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65" }
l1_erc721_bridge = { version = "2.1.0", implementation_address = "0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d" }
l1_standard_bridge = { version = "2.1.0", implementation_address = "0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF" }
# l2_output_oracle -- This contract not used in fault proofs
optimism_mintable_erc20_factory = { version = "1.9.0", implementation_address = "0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846" }
op_contracts_manager = { version = "1.0.0-beta.21", implementation_address = "0x5269eed89b0d04d909a0973439e2587e815ba932" }
# Holocene https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.8.0-rc.4
["op-contracts/v1.8.0-rc.4"]
# Updated in this release
system_config = { version = "2.3.0", implementation_address = "0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375" } # UPDATED IN THIS RELEASE
fault_dispute_game = { version = "1.3.1" } # UPDATED IN THIS RELEASE
permissioned_dispute_game = { version = "1.3.1" } # UPDATED IN THIS RELEASE
mips = { version = "1.2.1", address = "0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C" } # UPDATED IN THIS RELEASE
# Unchanged in this release
optimism_portal = { version = "3.10.0", implementation_address = "0xe2F826324b2faf99E513D16D266c3F80aE87832B" }
anchor_state_registry = { version = "2.0.0" }
delayed_weth = { version = "1.1.0", implementation_address = "0x71e966Ae981d1ce531a7b6d23DC0f27B38409087" }
dispute_game_factory = { version = "1.0.0", implementation_address = "0xc641A33cab81C559F2bd4b21EA34C290E2440C2B" }
preimage_oracle = { version = "1.1.2", address = "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277" }
l1_cross_domain_messenger = { version = "2.3.0", implementation_address = "0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65" }
l1_erc721_bridge = { version = "2.1.0", implementation_address = "0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d" }
l1_standard_bridge = { version = "2.1.0", implementation_address = "0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF" }
# l2_output_oracle -- This contract not used in fault proofs
optimism_mintable_erc20_factory = { version = "1.9.0", implementation_address = "0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846" }
op_contracts_manager = { version = "1.0.0-beta.21", implementation_address = "0x5269eed89b0d04d909a0973439e2587e815ba932" }
# Fault Proofs https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.6.0
["op-contracts/v1.6.0"]
optimism_portal = { version = "3.10.0", implementation_address = "0xe2F826324b2faf99E513D16D266c3F80aE87832B" }
system_config = { version = "2.2.0", implementation_address = "0xF56D96B2535B932656d3c04Ebf51baBff241D886" }
anchor_state_registry = { version = "2.0.0" }
delayed_weth = { version = "1.1.0", implementation_address = "0x71e966Ae981d1ce531a7b6d23DC0f27B38409087" }
dispute_game_factory = { version = "1.0.0", implementation_address = "0xc641A33cab81C559F2bd4b21EA34C290E2440C2B" }
fault_dispute_game = { version = "1.3.0" }
permissioned_dispute_game = { version = "1.3.0" }
mips = { version = "1.1.0", address = "0x16e83cE5Ce29BF90AD9Da06D2fE6a15d5f344ce4" }
preimage_oracle = { version = "1.1.2", address = "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277" }
l1_cross_domain_messenger = { version = "2.3.0", implementation_address = "0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65" }
l1_erc721_bridge = { version = "2.1.0", implementation_address = "0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d" }
l1_standard_bridge = { version = "2.1.0", implementation_address = "0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF" }
# l2_output_oracle -- This contract not used in fault proofs
optimism_mintable_erc20_factory = { version = "1.9.0", implementation_address = "0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846" }
op_contracts_manager = { version = "1.0.0-beta.21", implementation_address = "0x9BC0A1eD534BFb31a6Be69e5b767Cba332f14347" }
# Fault Proofs https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.4.0
["op-contracts/v1.4.0"]
optimism_portal = { version = "3.10.0", implementation_address = "0xe2F826324b2faf99E513D16D266c3F80aE87832B" }
system_config = { version = "2.2.0", implementation_address = "0xF56D96B2535B932656d3c04Ebf51baBff241D886" }
anchor_state_registry = { version = "1.0.0" }
delayed_weth = { version = "1.0.0", implementation_address = "0x97988d5624F1ba266E1da305117BCf20713bee08" }
dispute_game_factory = { version = "1.0.0", implementation_address = "0xc641A33cab81C559F2bd4b21EA34C290E2440C2B" }
fault_dispute_game = { version = "1.2.0" }
permissioned_dispute_game = { version = "1.2.0" }
mips = { version = "1.0.1", address = "0x0f8EdFbDdD3c0256A80AD8C0F2560B1807873C9c" }
preimage_oracle = { version = "1.0.0", address = "0xD326E10B8186e90F4E2adc5c13a2d0C137ee8b34" }
# MCP https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.3.0
["op-contracts/v1.3.0"]
l1_cross_domain_messenger = { version = "2.3.0", implementation_address = "0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65" }
l1_erc721_bridge = { version = "2.1.0", implementation_address = "0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d" }
l1_standard_bridge = { version = "2.1.0", implementation_address = "0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF" }
l2_output_oracle = { version = "1.8.0", implementation_address = "0xF243BEd163251380e78068d317ae10f26042B292" }
optimism_mintable_erc20_factory = { version = "1.9.0", implementation_address = "0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846" }
optimism_portal = { version = "2.5.0", implementation_address = "0x2D778797049FE9259d947D1ED8e5442226dFB589" }
system_config = { version = "1.12.0", implementation_address = "0xba2492e52F45651B60B8B38d4Ea5E2390C64Ffb1" }

File diff suppressed because it is too large Load Diff

View File

@@ -47,6 +47,20 @@
"role": "firefly_npmplus_secondary_mim4u_mifos_support",
"ui_url": "https://192.168.11.12:8006",
"cluster_name": "h"
},
{
"hostname": "r630-03",
"mgmt_ipv4": "192.168.11.13",
"role": "besu_chain138_secondary_rpc_sentry_host",
"ui_url": "https://192.168.11.13:8006",
"cluster_name": "h"
},
{
"hostname": "r630-04",
"mgmt_ipv4": "192.168.11.14",
"role": "besu_chain138_additional_capacity_host",
"ui_url": "https://192.168.11.14:8006",
"cluster_name": "h"
}
],
"cluster_peering": {
@@ -65,7 +79,7 @@
},
"besu_chain138_peering_model": {
"chain_id": 138,
"summary": "Validators (1000\u20131004) \u2194 Sentries (1500\u20131506) \u2194 RPC tier (2101 core, 2201 public, 230x named, 240x thirdweb). Use canonical roles doc for allowed adjacencies and ops.",
"summary": "Validators (1000\u20131004) \u2194 Sentries (1500\u20131510) \u2194 RPC tier (2101,2102,2103 core/admin, 2201 public, 2301,2303\u20132308 named/private, 2400\u20132403 thirdweb, 2500\u20132505 alltra/hybx). Use canonical roles doc for allowed adjacencies and ops.",
"p2p_port_tcp_udp": 30303,
"doc_ref": "docs/02-architecture/CHAIN138_CANONICAL_NETWORK_ROLES_VALIDATORS_SENTRY_AND_RPC.md"
},
@@ -1250,7 +1264,10 @@
"port": 80
}
],
"fqdns": []
"fqdns": [
"tsunamiswap.com",
"app.tsunamiswap.com"
]
},
{
"vmid": 10070,
@@ -1459,7 +1476,41 @@
"vmid": 1508,
"hostname": "besu-sentry-hybx-2",
"ipv4": "192.168.11.245",
"preferred_node": "ml110",
"preferred_node": "r630-04",
"category": "besu_sentry",
"ports": [
{
"port": 30303
},
{
"port": 9545
}
],
"peering_layer": "sentry_boundary",
"fqdns": []
},
{
"vmid": 1509,
"hostname": "besu-sentry-thirdweb-01",
"ipv4": "192.168.11.219",
"preferred_node": "r630-03",
"category": "besu_sentry",
"ports": [
{
"port": 30303
},
{
"port": 9545
}
],
"peering_layer": "sentry_boundary",
"fqdns": []
},
{
"vmid": 1510,
"hostname": "besu-sentry-thirdweb-02",
"ipv4": "192.168.11.220",
"preferred_node": "r630-03",
"category": "besu_sentry",
"ports": [
{
@@ -1617,7 +1668,9 @@
"port": 80
}
],
"fqdns": []
"fqdns": [
"tsunamiswap.com"
]
},
{
"vmid": 5201,

View File

@@ -0,0 +1,116 @@
{
"schemaVersion": "1.0.0",
"updated": "2026-04-24",
"scope": "Current live Chain 138 ecosystem coverage for public stablecoins, top public assets, and near-term integration priorities.",
"homeChain": {
"chainId": 138,
"network": "DeFi Oracle Meta Mainnet",
"publicExitPrimitive": "WETH",
"publicExitStatus": "live_via_pmm_and_ccip"
},
"supportedBridgeDestinations": [
{ "chainId": 1, "name": "Ethereum Mainnet", "status": "live" },
{ "chainId": 10, "name": "Optimism", "status": "live" },
{ "chainId": 25, "name": "Cronos", "status": "live" },
{ "chainId": 56, "name": "BSC", "status": "live" },
{ "chainId": 100, "name": "Gnosis", "status": "live" },
{ "chainId": 137, "name": "Polygon", "status": "live" },
{ "chainId": 8453, "name": "Base", "status": "live" },
{ "chainId": 42161, "name": "Arbitrum One", "status": "live" },
{ "chainId": 42220, "name": "Celo", "status": "live" },
{ "chainId": 43114, "name": "Avalanche C-Chain", "status": "live" },
{ "chainId": 651940, "name": "ALL Mainnet", "status": "bridge_live_swap_inventory_pending" },
{ "chainId": 1111, "name": "Wemix", "status": "blocked_selector_not_supported" }
],
"stablecoinCoverage": [
{ "symbol": "USDT", "reachability": "strong", "mode": "direct_mirror_and_public_evm" },
{ "symbol": "USDC", "reachability": "strong", "mode": "direct_mirror_and_public_evm" },
{ "symbol": "DAI", "reachability": "strong", "mode": "indirect_via_weth_to_ethereum" },
{ "symbol": "USDS", "reachability": "strong", "mode": "indirect_via_weth_to_ethereum" },
{ "symbol": "PYUSD", "reachability": "medium", "mode": "destination_dex_dependent" },
{ "symbol": "USDe", "reachability": "medium", "mode": "destination_dex_dependent" },
{ "symbol": "USD1", "reachability": "medium", "mode": "destination_dex_dependent" },
{ "symbol": "USDG", "reachability": "medium", "mode": "destination_dex_dependent" },
{ "symbol": "RLUSD", "reachability": "medium", "mode": "destination_dex_dependent" },
{ "symbol": "USDF", "reachability": "medium", "mode": "destination_dex_dependent" },
{ "symbol": "BUIDL", "reachability": "low", "mode": "institutional_non_dex" },
{ "symbol": "USYC", "reachability": "low", "mode": "institutional_non_dex" },
{ "symbol": "JTRSY", "reachability": "low", "mode": "institutional_non_dex" },
{ "symbol": "XAUT", "reachability": "strong", "mode": "native_gold_family_on_home_chain" },
{ "symbol": "PAXG", "reachability": "medium", "mode": "destination_dex_dependent" }
],
"topAssetCoverage": [
{ "symbol": "ETH", "reachability": "strong", "mode": "direct_evm" },
{ "symbol": "LINK", "reachability": "strong", "mode": "direct_evm" },
{ "symbol": "AAVE", "reachability": "strong", "mode": "destination_dex_dependent" },
{ "symbol": "UNI", "reachability": "strong", "mode": "destination_dex_dependent" },
{ "symbol": "AVAX", "reachability": "strong", "mode": "destination_dex_dependent" },
{ "symbol": "BNB", "reachability": "strong", "mode": "destination_dex_dependent" },
{ "symbol": "CRO", "reachability": "strong", "mode": "destination_dex_dependent" },
{ "symbol": "BTC", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "SOL", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "TRX", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "XRP", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "ADA", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "XMR", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "ZEC", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "XLM", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "HBAR", "reachability": "weak", "mode": "non_evm_expansion_required" },
{ "symbol": "SUI", "reachability": "weak", "mode": "non_evm_expansion_required" }
],
"shortIntegrationLeaps": [
{
"id": "doc-chain138-live-weth-exits",
"title": "Normalize docs around live Chain 138 c* -> WETH exits",
"status": "done_now",
"impact": "high"
},
{
"id": "publish-destination-route-registry",
"title": "Publish per-chain destination route registry for supported EVM stablecoins and cW* surfaces",
"status": "todo",
"impact": "high"
},
{
"id": "promote-additional-public-stables",
"title": "Promote PYUSD, USDe, RLUSD, USD1, and USDG into named route-target review",
"status": "todo",
"impact": "high"
},
{
"id": "canonicalize-allmainnet-swap-surface",
"title": "Commit canonical ALL Mainnet router/factory/pool inventory",
"status": "todo",
"impact": "high"
},
{
"id": "publish-top50-coverage-matrix",
"title": "Track top public assets by direct, indirect, wrapped-only, or unsupported status",
"status": "done_now",
"impact": "medium"
}
],
"additionalComponentsRequired": [
{
"id": "non-evm-bridge-expansion",
"title": "Bridge and swap adapters for BTC, SOL, XRP, ADA, XLM, HBAR, SUI classes",
"status": "future"
},
{
"id": "wemix-ccip-selector-support",
"title": "Enable Wemix lane by resolving Chain 138 CCIP selector support",
"status": "blocked_external"
},
{
"id": "route-confidence-api",
"title": "Expose live route confidence in quote/build systems",
"status": "future"
}
],
"references": {
"ecosystemReport": "reports/status/LIVE_ECOSYSTEM_FINANCIAL_INVENTORY_AND_ROUTING_GAPS_20260424.md",
"routingStatusDoc": "docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md",
"stablecoinRoutesDoc": "docs/11-references/DEPLOYER_TO_PUBLIC_STABLECOIN_ROUTES.md",
"allMainnetSurfaceConfig": "config/allmainnet-non-dodo-protocol-surface.json"
}
}

View File

@@ -35,10 +35,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0xc9901ce2Ddb6490FAA183645147a87496d8b20B6",
"bridgeChainId": 1,
"label": "CCIPWETH9Bridge",
"note": "Set to MAINNET_CCIP_WETH9_BRIDGE from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -54,10 +53,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4",
"bridgeChainId": 56,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_BSC from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -73,10 +71,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0xF7736443f02913e7e0773052103296CfE1637448",
"bridgeChainId": 137,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_POLYGON from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -92,10 +89,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0x6e94e53F73893b2a6784Df663920D31043A6dE07",
"bridgeChainId": 10,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_OPTIMISM from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -111,10 +107,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0x937824f2516fa58f25aeAb92E7BFf7D74F463B4c",
"bridgeChainId": 42161,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_ARBITRUM from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -130,10 +125,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4",
"bridgeChainId": 43114,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_AVALANCHE from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -149,10 +143,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4",
"bridgeChainId": 8453,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_BASE from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -168,10 +161,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0xc8656F24488cb90c452058da92d1a25BA464eaAE",
"bridgeChainId": 100,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_GNOSIS from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -187,10 +179,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab",
"bridgeChainId": 25,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_CRONOS from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -206,10 +197,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0xAb57BF30F1354CA0590af22D8974c7f24DB2DbD7",
"bridgeChainId": 42220,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_CELO from .env"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,
@@ -225,10 +215,9 @@
"toChain": 138,
"asset": "WETH",
"pathType": "CCIP",
"bridgeAddress": "0x0000000000000000000000000000000000000000",
"bridgeAddress": "0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04",
"bridgeChainId": 1111,
"label": "CCIPWETH9Bridge",
"note": "Set to CCIPWETH9_BRIDGE_WEMIX from .env when deployed"
"label": "CCIPWETH9Bridge"
},
{
"fromChain": 138,

View File

@@ -0,0 +1,160 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Operator lineup: Chain 138 canonical GRU assets plus live-confirmed Solana corridor evidence → Solana SPL bridge targets (cW* / WETH). Populate solanaMint when mints exist. Source addresses: docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md §2.",
"version": "1.0.0",
"updated": "2026-04-19",
"status": "partial_live_causdt_lane_confirmed_lineup_and_mints_still_outstanding",
"references": {
"canonicalCrosscheck": "docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md",
"tokenMapping": "config/token-mapping-multichain.json",
"nonEvmFramework": "config/non-evm-bridge-framework.json",
"runbook": "docs/03-deployment/CHAIN138_TO_SOLANA_GRU_TOKEN_DEPLOYMENT_LINEUP.md"
},
"chain138": {
"chainId": 138,
"rpcEnv": "RPC_URL_138"
},
"solana": {
"caip2": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"cluster": "mainnet-beta",
"hubStablesNote": "Resolve SPL USDC (primary) and USDT mints for edge liquidity; not EVM hub addresses — see cross-chain-pmm-lps/config/chains.json nonEvm.Solana"
},
"liveBridgeEvidence": {
"chain138Symbol": "cAUSDT",
"solanaSymbol": "cWAUSDT",
"chain138Address": "0x5fdDF65733e3d590463F68f93Cf16E8c04081271",
"solanaAdapter": "0x8244a5c27C0eA32fb8cB324131a04dC9F4E433f7",
"evidenceDate": "2026-04-16",
"mintedRaw": "22000000",
"bridgedRaw": "9000000",
"bridgeRequestId": "0x69035dfb7c0af5447da6104a8c09aa6bac7b19695517441014dda3c687d4550d",
"finalStatus": 2,
"finalStatusLabel": "Confirmed",
"transactions": {
"mint": "0x8d18b8df7024418bf167cc80d11e0425b0c81507ace13326973951f3dfd0f6f8",
"bridge": "0x4f6368754a5b55a43f8dae4e645bf67e9cf6c9c64bfdadb4625508c351d64319",
"confirm": "0x6cce9a740d170278c95e494052e1b031b394d1d807df05ba3bad55030a36fc68"
},
"notes": "Confirmed live Chain 138 -> Solana send/confirm for the AUSDT corridor. Full canonical Solana SPL mint inventory is still being populated."
},
"bridgeModel": {
"sourceRole": "canonical c* (and WETH) on Chain 138",
"destinationRole": "SPL mints for bridge-wrapped symbols per token-mapping nonEvmNetworks.Solana.assetRepresentationModel",
"naming": "c* on 138 → cW* on Solana for fiat-stable GRU assets; WETH remains WETH (wrapped ETH representation on Solana)"
},
"assets": [
{
"chain138Symbol": "cAUSDT",
"solanaSymbol": "cWAUSDT",
"decimals": 6,
"chain138Address": "0x5fdDF65733e3d590463F68f93Cf16E8c04081271",
"solanaMint": null,
"deploymentStatus": "confirmed_live_send_confirm_mint_address_pending",
"evidenceRef": "liveBridgeEvidence"
},
{
"chain138Symbol": "WETH",
"solanaSymbol": "WETH",
"decimals": 18,
"chain138Address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cUSDT",
"solanaSymbol": "cWUSDT",
"decimals": 6,
"chain138Address": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cUSDC",
"solanaSymbol": "cWUSDC",
"decimals": 6,
"chain138Address": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cEURC",
"solanaSymbol": "cWEURC",
"decimals": 6,
"chain138Address": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cEURT",
"solanaSymbol": "cWEURT",
"decimals": 6,
"chain138Address": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cGBPC",
"solanaSymbol": "cWGBPC",
"decimals": 6,
"chain138Address": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cGBPT",
"solanaSymbol": "cWGBPT",
"decimals": 6,
"chain138Address": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cAUDC",
"solanaSymbol": "cWAUDC",
"decimals": 6,
"chain138Address": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cJPYC",
"solanaSymbol": "cWJPYC",
"decimals": 6,
"chain138Address": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cCHFC",
"solanaSymbol": "cWCHFC",
"decimals": 6,
"chain138Address": "0x873990849DDa5117d7C644f0aF24370797C03885",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cCADC",
"solanaSymbol": "cWCADC",
"decimals": 6,
"chain138Address": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cXAUC",
"solanaSymbol": "cWXAUC",
"decimals": 6,
"chain138Address": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"solanaMint": null,
"deploymentStatus": "planned"
},
{
"chain138Symbol": "cXAUT",
"solanaSymbol": "cWXAUT",
"decimals": 6,
"chain138Address": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"solanaMint": null,
"deploymentStatus": "planned"
}
]
}

View File

@@ -1,8 +1,8 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Multi-chain token mapping: Chain 138↔651940 (ALL Mainnet) and 651940↔1,56,137,100,43114,8453,42161,10,25,42220,1111. Single source of truth for bridge/LP tooling. Verify canonical addresses per chain: see docs/07-ccip/EXPLORER_TOKENS_CANONICAL_MAPPING.md.",
"version": "1.1.0",
"updated": "2026-02-27",
"version": "1.2.0",
"updated": "2026-04-19",
"cToCwSymbolMapping": {
"cUSDT": "cWUSDT",
"cUSDC": "cWUSDC",
@@ -26,10 +26,10 @@
"137": "Polygon",
"138": "SMOM-DBIS-138 (DeFi Oracle Meta)",
"1111": "Wemix",
"42793": "Etherlink",
"8453": "Base",
"42161": "Arbitrum One",
"42220": "Celo",
"42793": "Etherlink",
"43114": "Avalanche C-Chain",
"651940": "ALL Mainnet (Alltra)"
},
@@ -146,6 +146,118 @@
}
]
},
{
"fromChainId": 138,
"toChainId": 1,
"notes": "Chain 138 ↔ Ethereum Mainnet (CCIP); direct mapping; c*_cW = c* → cW* on destination",
"tokens": [
{
"key": "WETH9",
"name": "Wrapped Ether",
"addressFrom": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"addressTo": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"notes": "138 WETH9 → Mainnet WETH"
},
{
"key": "Compliant_USDT",
"name": "cUSDT",
"addressFrom": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"addressTo": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"notes": "138 cUSDT → Mainnet USDT (native)"
},
{
"key": "Compliant_USDT_cW",
"name": "cUSDT→cWUSDT",
"addressFrom": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"addressTo": "0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE",
"notes": "138 cUSDT → Mainnet cWUSDT; set when deployed"
},
{
"key": "Compliant_USDC",
"name": "cUSDC",
"addressFrom": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"addressTo": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"notes": "138 cUSDC → Mainnet USDC (native)"
},
{
"key": "Compliant_USDC_cW",
"name": "cUSDC→cWUSDC",
"addressFrom": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"addressTo": "0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a",
"notes": "138 cUSDC → Mainnet cWUSDC; set when deployed"
},
{
"key": "Compliant_EURC_cW",
"name": "cEURC→cWEURC",
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"addressTo": "0xD4aEAa8cD3fB41Dc8437FaC7639B6d91B60A5e8d",
"notes": "138 cEURC → Mainnet cWEURC"
},
{
"key": "Compliant_EURT_cW",
"name": "cEURT→cWEURT",
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"addressTo": "0x855d74FFB6CF75721a9bAbc8B2ed35c8119241dC",
"notes": "138 cEURT → Mainnet cWEURT"
},
{
"key": "Compliant_GBPC_cW",
"name": "cGBPC→cWGBPC",
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"addressTo": "0xc074007dc0bfb384b1cf6426a56287ed23fe4d52",
"notes": "138 cGBPC → Mainnet cWGBPC"
},
{
"key": "Compliant_GBPT_cW",
"name": "cGBPT→cWGBPT",
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"addressTo": "0x1dDF9970F01c76A692Fdba2706203E6f16e0C46F",
"notes": "138 cGBPT → Mainnet cWGBPT"
},
{
"key": "Compliant_AUDC_cW",
"name": "cAUDC→cWAUDC",
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"addressTo": "0x5020Db641B3Fc0dAbBc0c688C845bc4E3699f35F",
"notes": "138 cAUDC → Mainnet cWAUDC"
},
{
"key": "Compliant_JPYC_cW",
"name": "cJPYC→cWJPYC",
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"addressTo": "0x07EEd0D7dD40984e47B9D3a3bdded1c536435582",
"notes": "138 cJPYC → Mainnet cWJPYC"
},
{
"key": "Compliant_CHFC_cW",
"name": "cCHFC→cWCHFC",
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
"addressTo": "0x0F91C5E6Ddd46403746aAC970D05d70FFe404780",
"notes": "138 cCHFC → Mainnet cWCHFC"
},
{
"key": "Compliant_CADC_cW",
"name": "cCADC→cWCADC",
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"addressTo": "0x209FE32fe7B541751D190ae4e50cd005DcF8EDb4",
"notes": "138 cCADC → Mainnet cWCADC"
},
{
"key": "Compliant_XAUC_cW",
"name": "cXAUC→cWXAUC",
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"addressTo": "0x572Be0fa8CA0534d642A567CEDb398B771D8a715",
"notes": "138 cXAUC → Mainnet cWXAUC"
},
{
"key": "Compliant_XAUT_cW",
"name": "cXAUT→cWXAUT",
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"addressTo": "0xACE1DBF857549a11aF1322e1f91F2F64b029c906",
"notes": "138 cXAUT → Mainnet cWXAUT"
}
]
},
{
"fromChainId": 651940,
"toChainId": 138,
@@ -442,70 +554,70 @@
"key": "Compliant_EURC_cW",
"name": "cEURC→cWEURC",
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66",
"addressTo": "0x25603ae4bff0b71d637b3573d1b6657f5f6d17ef",
"notes": "138 cEURC → Gnosis cWEURC; set when deployed"
},
{
"key": "Compliant_EURT_cW",
"name": "cEURT→cWEURT",
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427",
"addressTo": "0x8e54c52d34a684e22865ac9f2d7c27c30561a7b9",
"notes": "138 cEURT → cWEURT"
},
{
"key": "Compliant_GBPC_cW",
"name": "cGBPC→cWGBPC",
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036",
"addressTo": "0x4d9bc6c74ba65e37c4139f0aec9fc5ddff28dcc4",
"notes": "138 cGBPC → cWGBPC"
},
{
"key": "Compliant_GBPT_cW",
"name": "cGBPT→cWGBPT",
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd",
"addressTo": "0x9f6d2578003fe04e58a9819a4943732f2a203a61",
"notes": "138 cGBPT → cWGBPT"
},
{
"key": "Compliant_AUDC_cW",
"name": "cAUDC→cWAUDC",
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29",
"addressTo": "0xddc4063f770f7c49d00b5a10fb552e922aa39b2c",
"notes": "138 cAUDC → cWAUDC"
},
{
"key": "Compliant_JPYC_cW",
"name": "cJPYC→cWJPYC",
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68",
"addressTo": "0x145e8e8c49b6a021969dd9d2c01c8fea44374f61",
"notes": "138 cJPYC → cWJPYC"
},
{
"key": "Compliant_CHFC_cW",
"name": "cCHFC→cWCHFC",
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
"addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B",
"addressTo": "0x46d90d7947f1139477c206c39268923b99cf09e4",
"notes": "138 cCHFC → cWCHFC"
},
{
"key": "Compliant_CADC_cW",
"name": "cCADC→cWCADC",
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB",
"addressTo": "0xa7133c78e0ec74503a5941bcbd44257615b6b4f6",
"notes": "138 cCADC → cWCADC"
},
{
"key": "Compliant_XAUC_cW",
"name": "cXAUC→cWXAUC",
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"addressTo": "0x328Cd365Bb35524297E68ED28c6fF2C9557d1363",
"addressTo": "0x23873b85cfeb343eb952618e8c9e9bfb7f6a0d45",
"notes": "138 cXAUC → cWXAUC"
},
{
"key": "Compliant_XAUT_cW",
"name": "cXAUT→cWXAUT",
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"addressTo": "0x9e6044d730d4183bF7a666293d257d035Fba6d44",
"addressTo": "0xc6189d404dc60cae7b48e2190e44770a03193e5f",
"notes": "138 cXAUT → cWXAUT"
}
]
@@ -554,70 +666,70 @@
"key": "Compliant_EURC_cW",
"name": "cEURC→cWEURC",
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"addressTo": "0x61D642979eD75c1325f35b9275C5A7FE97F22451",
"addressTo": "0x84353ed1f0c7a703a17abad19b0db15bc9a5e3e5",
"notes": "138 cEURC → Avalanche cWEURC; set when deployed"
},
{
"key": "Compliant_EURT_cW",
"name": "cEURT→cWEURT",
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"addressTo": "0x30751782486eed825187C1EAe5DE4b4baD428AaE",
"addressTo": "0xfc7d256e48253f7a7e08f0e55b9ff7039eb2524c",
"notes": "138 cEURT → cWEURT"
},
{
"key": "Compliant_GBPC_cW",
"name": "cGBPC→cWGBPC",
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"addressTo": "0xb0FA7ec4123C7c275B3a89d9239569707Ea3C66A",
"addressTo": "0xbdf0c4ea1d81e8e769b0f41389a2c733e3ff723e",
"notes": "138 cGBPC → cWGBPC"
},
{
"key": "Compliant_GBPT_cW",
"name": "cGBPT→cWGBPT",
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"addressTo": "0x6389a643e71F000FC4ce5a0d58fDC4a40AD68EBE",
"addressTo": "0x4611d3424e059392a52b957e508273bc761c80f2",
"notes": "138 cGBPT → cWGBPT"
},
{
"key": "Compliant_AUDC_cW",
"name": "cAUDC→cWAUDC",
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"addressTo": "0x528376e3a4bAAE78F7F4D0E9aDB75eFA9942373E",
"addressTo": "0x04e1e22b0d41e99f4275bd40a50480219bc9a223",
"notes": "138 cAUDC → cWAUDC"
},
{
"key": "Compliant_JPYC_cW",
"name": "cJPYC→cWJPYC",
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"addressTo": "0xCF9D867DA220c6B4756BeDC6888dDac3a0463AEa",
"addressTo": "0x3714b1a312e0916c7dcdc4edf480fc0339e59a59",
"notes": "138 cJPYC → cWJPYC"
},
{
"key": "Compliant_CHFC_cW",
"name": "cCHFC→cWCHFC",
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
"addressTo": "0x4f6167e9aE79878f6Cd71330eAD7f68a45Ed29DC",
"addressTo": "0xc2fa05f12a75ac84ea778af9d6935ca807275e55",
"notes": "138 cCHFC → cWCHFC"
},
{
"key": "Compliant_CADC_cW",
"name": "cCADC→cWCADC",
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"addressTo": "0x1B051588A33A7d56ed46f7C5C78870175b44F9FA",
"addressTo": "0x1872e033b30f3ce0498847926857433e0146394e",
"notes": "138 cCADC → cWCADC"
},
{
"key": "Compliant_XAUC_cW",
"name": "cXAUC→cWXAUC",
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"addressTo": "0x826d5F3e5713C76a1D13e41A76843A361090c896",
"addressTo": "0x4f95297c23d9f4a1032b1c6a2e553225cb175bee",
"notes": "138 cXAUC → cWXAUC"
},
{
"key": "Compliant_XAUT_cW",
"name": "cXAUT→cWXAUT",
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"addressTo": "0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44",
"addressTo": "0xd2b4dbf2f6bd6704e066d752eec61fb0be953fd3",
"notes": "138 cXAUT → cWXAUT"
}
]
@@ -666,70 +778,70 @@
"key": "Compliant_EURC_cW",
"name": "cEURC→cWEURC",
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"addressTo": "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF",
"addressTo": "0xcb145ba9a370681e3545f60e55621ebf218b1031",
"notes": "138 cEURC → Base cWEURC; set when deployed"
},
{
"key": "Compliant_EURT_cW",
"name": "cEURT→cWEURT",
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"addressTo": "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4",
"addressTo": "0x73e0cf8bf861d376b3a4c87c136f975027f045ff",
"notes": "138 cEURT → cWEURT"
},
{
"key": "Compliant_GBPC_cW",
"name": "cGBPC→cWGBPC",
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66",
"addressTo": "0x2a0023ad5ce1ac6072b454575996dffb1bb11b16",
"notes": "138 cGBPC → cWGBPC"
},
{
"key": "Compliant_GBPT_cW",
"name": "cGBPT→cWGBPT",
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427",
"addressTo": "0x22b98130ab4d9c355512b25ade4c35e75a4e7e89",
"notes": "138 cGBPT → cWGBPT"
},
{
"key": "Compliant_AUDC_cW",
"name": "cAUDC→cWAUDC",
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036",
"addressTo": "0xa846aead3071df1b6439d5d813156ace7c2c1da1",
"notes": "138 cAUDC → cWAUDC"
},
{
"key": "Compliant_JPYC_cW",
"name": "cJPYC→cWJPYC",
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd",
"addressTo": "0x29828e9ab2057cd3df3c9211455ae1f76e53d2af",
"notes": "138 cJPYC → cWJPYC"
},
{
"key": "Compliant_CHFC_cW",
"name": "cCHFC→cWCHFC",
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
"addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29",
"addressTo": "0xc1535e88578d984f12eab55863376b8d8b9fb05a",
"notes": "138 cCHFC → cWCHFC"
},
{
"key": "Compliant_CADC_cW",
"name": "cCADC→cWCADC",
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68",
"addressTo": "0xdc383c489533a4dd9a6bd3007386e25d5078b878",
"notes": "138 cCADC → cWCADC"
},
{
"key": "Compliant_XAUC_cW",
"name": "cXAUC→cWXAUC",
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B",
"addressTo": "0x7e4b4682453bcce19ec903fb69153d3031986bc4",
"notes": "138 cXAUC → cWXAUC"
},
{
"key": "Compliant_XAUT_cW",
"name": "cXAUT→cWXAUT",
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB",
"addressTo": "0xcc6ae6016d564e9ab82aaff44d65e05a9b18951c",
"notes": "138 cXAUT → cWXAUT"
}
]
@@ -778,70 +890,70 @@
"key": "Compliant_EURC_cW",
"name": "cEURC→cWEURC",
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"addressTo": "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4",
"addressTo": "0x2a0023ad5ce1ac6072b454575996dffb1bb11b16",
"notes": "138 cEURC → Arbitrum cWEURC; set when deployed"
},
{
"key": "Compliant_EURT_cW",
"name": "cEURT→cWEURT",
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66",
"addressTo": "0x22b98130ab4d9c355512b25ade4c35e75a4e7e89",
"notes": "138 cEURT → cWEURT"
},
{
"key": "Compliant_GBPC_cW",
"name": "cGBPC→cWGBPC",
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427",
"addressTo": "0xa846aead3071df1b6439d5d813156ace7c2c1da1",
"notes": "138 cGBPC → cWGBPC"
},
{
"key": "Compliant_GBPT_cW",
"name": "cGBPT→cWGBPT",
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036",
"addressTo": "0x29828e9ab2057cd3df3c9211455ae1f76e53d2af",
"notes": "138 cGBPT → cWGBPT"
},
{
"key": "Compliant_AUDC_cW",
"name": "cAUDC→cWAUDC",
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd",
"addressTo": "0xc1535e88578d984f12eab55863376b8d8b9fb05a",
"notes": "138 cAUDC → cWAUDC"
},
{
"key": "Compliant_JPYC_cW",
"name": "cJPYC→cWJPYC",
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29",
"addressTo": "0xdc383c489533a4dd9a6bd3007386e25d5078b878",
"notes": "138 cJPYC → cWJPYC"
},
{
"key": "Compliant_CHFC_cW",
"name": "cCHFC→cWCHFC",
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
"addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68",
"addressTo": "0x7e4b4682453bcce19ec903fb69153d3031986bc4",
"notes": "138 cCHFC → cWCHFC"
},
{
"key": "Compliant_CADC_cW",
"name": "cCADC→cWCADC",
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B",
"addressTo": "0xcc6ae6016d564e9ab82aaff44d65e05a9b18951c",
"notes": "138 cCADC → cWCADC"
},
{
"key": "Compliant_XAUC_cW",
"name": "cXAUC→cWXAUC",
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB",
"addressTo": "0xa7762b63c4871581885ad17c5714ebb286a7480b",
"notes": "138 cXAUC → cWXAUC"
},
{
"key": "Compliant_XAUT_cW",
"name": "cXAUT→cWXAUT",
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"addressTo": "0x328Cd365Bb35524297E68ED28c6fF2C9557d1363",
"addressTo": "0x66568899ffe8f00b25dc470e878b65a478994e76",
"notes": "138 cXAUT → cWXAUT"
}
]
@@ -890,70 +1002,70 @@
"key": "Compliant_EURC_cW",
"name": "cEURC→cWEURC",
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"addressTo": "0x2627177f33968128C7fb916F5B9E1f14cc550A80",
"addressTo": "0x4ab39b5bab7b463435209a9039bd40cf241f5a82",
"notes": "138 cEURC → Optimism cWEURC; set when deployed"
},
{
"key": "Compliant_EURT_cW",
"name": "cEURT→cWEURT",
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"addressTo": "0x07dE1f489E1bfCE2c326066a9DFc10e731CBA0CB",
"addressTo": "0x6f521cd9fcf7884cd4e9486c7790e818638e09dd",
"notes": "138 cEURT → cWEURT"
},
{
"key": "Compliant_GBPC_cW",
"name": "cGBPC→cWGBPC",
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"addressTo": "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB",
"addressTo": "0x3f8c409c6072a2b6a4ff17071927ba70f80c725f",
"notes": "138 cGBPC → cWGBPC"
},
{
"key": "Compliant_GBPT_cW",
"name": "cGBPT→cWGBPT",
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"addressTo": "0x5355148C4740fcc3D7a96F05EdD89AB14851206b",
"addressTo": "0x456373d095d6b9260f01709f93fccf1d8aa14d11",
"notes": "138 cGBPT → cWGBPT"
},
{
"key": "Compliant_AUDC_cW",
"name": "cAUDC→cWAUDC",
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"addressTo": "0x50b073d0D1D2f002745cb9FC28a057d5be84911c",
"addressTo": "0x25603ae4bff0b71d637b3573d1b6657f5f6d17ef",
"notes": "138 cAUDC → cWAUDC"
},
{
"key": "Compliant_JPYC_cW",
"name": "cJPYC→cWJPYC",
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"addressTo": "0x1ED9E491A5eCd53BeF21962A5FCE24880264F63f",
"addressTo": "0x8e54c52d34a684e22865ac9f2d7c27c30561a7b9",
"notes": "138 cJPYC → cWJPYC"
},
{
"key": "Compliant_CHFC_cW",
"name": "cCHFC→cWCHFC",
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
"addressTo": "0x8b6EE72001cAFcb21D56a6c4686D6Db951d499A6",
"addressTo": "0x4d9bc6c74ba65e37c4139f0aec9fc5ddff28dcc4",
"notes": "138 cCHFC → cWCHFC"
},
{
"key": "Compliant_CADC_cW",
"name": "cCADC→cWCADC",
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"addressTo": "0xA6eFb8783C8ad2740ec880e46D4f7E608E893B1B",
"addressTo": "0x9f6d2578003fe04e58a9819a4943732f2a203a61",
"notes": "138 cCADC → cWCADC"
},
{
"key": "Compliant_XAUC_cW",
"name": "cXAUC→cWXAUC",
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"addressTo": "0x7062f35567BBAb4d98dc33af03B0d14Df42294D5",
"addressTo": "0xddc4063f770f7c49d00b5a10fb552e922aa39b2c",
"notes": "138 cXAUC → cWXAUC"
},
{
"key": "Compliant_XAUT_cW",
"name": "cXAUT→cWXAUT",
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"addressTo": "0x5fbCE65524211BC1bFb0309fd9EE09E786c6D097",
"addressTo": "0x145e8e8c49b6a021969dd9d2c01c8fea44374f61",
"notes": "138 cXAUT → cWXAUT"
}
]
@@ -1002,70 +1114,70 @@
"key": "Compliant_EURC_cW",
"name": "cEURC→cWEURC",
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0x7574d37F42528B47c88962931e48FC61608a4050",
"notes": "138 cEURC → Cronos cWEURC; set when deployed"
},
{
"key": "Compliant_EURT_cW",
"name": "cEURT→cWEURT",
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0x9f833b4f1012F52eb3317b09922a79c6EdFca77D",
"notes": "138 cEURT → cWEURT"
},
{
"key": "Compliant_GBPC_cW",
"name": "cGBPC→cWGBPC",
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0xe5c65A76A541368d3061fe9E7A2140cABB903dbF",
"notes": "138 cGBPC → cWGBPC"
},
{
"key": "Compliant_GBPT_cW",
"name": "cGBPT→cWGBPT",
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0xBb58fa16bAc8E789f09C14243adEE6480D8213A2",
"notes": "138 cGBPT → cWGBPT"
},
{
"key": "Compliant_AUDC_cW",
"name": "cAUDC→cWAUDC",
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0xff3084410A732231472Ee9f93F5855dA89CC5254",
"notes": "138 cAUDC → cWAUDC"
},
{
"key": "Compliant_JPYC_cW",
"name": "cJPYC→cWJPYC",
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0x52aD62B8bD01154e2A4E067F8Dc4144C9988d203",
"notes": "138 cJPYC → cWJPYC"
},
{
"key": "Compliant_CHFC_cW",
"name": "cCHFC→cWCHFC",
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0xB55F49D6316322d5caA96D34C6e4b1003BD3E670",
"notes": "138 cCHFC → cWCHFC"
},
{
"key": "Compliant_CADC_cW",
"name": "cCADC→cWCADC",
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0x32aD687F24F77bF8C86605c202c829163Ac5Ab36",
"notes": "138 cCADC → cWCADC"
},
{
"key": "Compliant_XAUC_cW",
"name": "cXAUC→cWXAUC",
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0xf1B771c95573113E993374c0c7cB2dc1a7908B12",
"notes": "138 cXAUC → cWXAUC"
},
{
"key": "Compliant_XAUT_cW",
"name": "cXAUT→cWXAUT",
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"addressTo": "0x0000000000000000000000000000000000000000",
"addressTo": "0xD517C0cF7013f988946A468c880Cc9F8e2A4BCbE",
"notes": "138 cXAUT → cWXAUT"
}
]
@@ -1322,6 +1434,118 @@
}
]
},
{
"fromChainId": 138,
"toChainId": 42220,
"notes": "Chain 138 ↔ Celo (CCIP); direct mapping; c*_cW = c* → cW* on destination",
"tokens": [
{
"key": "WETH9",
"name": "Wrapped Ether",
"addressFrom": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"addressTo": "0xD221812de1BD094f35587EE8E174B07B6167D9Af",
"notes": "138 WETH9 → Celo WETH"
},
{
"key": "Compliant_USDT",
"name": "cUSDT",
"addressFrom": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"addressTo": "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
"notes": "138 cUSDT → Celo USDT (native)"
},
{
"key": "Compliant_USDT_cW",
"name": "cUSDT→cWUSDT",
"addressFrom": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"addressTo": "0x73376eB92c16977B126dB9112936A20Fa0De3442",
"notes": "138 cUSDT → Celo cWUSDT; set when deployed"
},
{
"key": "Compliant_USDC",
"name": "cUSDC",
"addressFrom": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"addressTo": "0xcebA9300f2b948710d2653dD7B07f33A8B32118C",
"notes": "138 cUSDC → Celo USDC (native)"
},
{
"key": "Compliant_USDC_cW",
"name": "cUSDC→cWUSDC",
"addressFrom": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"addressTo": "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3",
"notes": "138 cUSDC → Celo cWUSDC; set when deployed"
},
{
"key": "Compliant_EURC_cW",
"name": "cEURC→cWEURC",
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"addressTo": "0xb6D2f38b9015F32ccE8818509c712264E7fceeD3",
"notes": "138 cEURC → Celo cWEURC"
},
{
"key": "Compliant_EURT_cW",
"name": "cEURT→cWEURT",
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"addressTo": "0x7e6fB8D80f81430e560F8232b2A4fd06249d74ce",
"notes": "138 cEURT → Celo cWEURT"
},
{
"key": "Compliant_GBPC_cW",
"name": "cGBPC→cWGBPC",
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"addressTo": "0xE37c332a88f112F9e039C5d92D821402A89c7052",
"notes": "138 cGBPC → Celo cWGBPC"
},
{
"key": "Compliant_GBPT_cW",
"name": "cGBPT→cWGBPT",
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"addressTo": "0x1dBa81f91f1BeC47FFf60eC3e7DeD780ad9968E3",
"notes": "138 cGBPT → Celo cWGBPT"
},
{
"key": "Compliant_AUDC_cW",
"name": "cAUDC→cWAUDC",
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"addressTo": "0x2d3a2ED4Ca4d69912d217c305EE921609F7906A8",
"notes": "138 cAUDC → Celo cWAUDC"
},
{
"key": "Compliant_JPYC_cW",
"name": "cJPYC→cWJPYC",
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"addressTo": "0x0b39F47D2E68aB0eB18d4b637Bbd1dD8E97cFbB5",
"notes": "138 cJPYC → Celo cWJPYC"
},
{
"key": "Compliant_CHFC_cW",
"name": "cCHFC→cWCHFC",
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
"addressTo": "0x8142BA530B08f3950128601F00DaaA678213DFdf",
"notes": "138 cCHFC → Celo cWCHFC"
},
{
"key": "Compliant_CADC_cW",
"name": "cCADC→cWCADC",
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"addressTo": "0x0C242b513008Cd49C89078F5aFb237A3112251EB",
"notes": "138 cCADC → Celo cWCADC"
},
{
"key": "Compliant_XAUC_cW",
"name": "cXAUC→cWXAUC",
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"addressTo": "0x61D642979eD75c1325f35b9275C5A7FE97F22451",
"notes": "138 cXAUC → Celo cWXAUC"
},
{
"key": "Compliant_XAUT_cW",
"name": "cXAUT→cWXAUT",
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"addressTo": "0x30751782486eed825187C1EAe5DE4b4baD428AaE",
"notes": "138 cXAUT → Celo cWXAUT"
}
]
},
{
"fromChainId": 651940,
"toChainId": 42220,

View File

@@ -0,0 +1,64 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://d-bis.org/schemas/universal-resource-activation.evidence-package.v1.json",
"title": "EvidencePackage",
"type": "object",
"required": ["evidencePackageId", "resourceIds", "actionType", "reconciliationStatus"],
"properties": {
"evidencePackageId": { "type": "string", "minLength": 1 },
"resourceIds": {
"type": "array",
"minItems": 1,
"items": { "type": "string" }
},
"actionType": {
"type": "string",
"enum": [
"REGISTER",
"FUNDING_DRAW",
"CAP_RESERVE",
"MINT_AUTH",
"DEPLOY",
"ALLOCATE",
"REVERSAL"
]
},
"initiator": { "type": "string" },
"timestamp": { "type": "string" },
"jurisdiction": { "type": "string" },
"lawfulBasis": { "type": "string" },
"policyDecisions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"profileId": { "type": "string" },
"version": { "type": "string" },
"result": { "type": "string" },
"reason": { "type": "string" }
}
}
},
"complianceResults": {
"type": "array",
"items": {
"type": "object",
"properties": {
"check": { "type": "string" },
"result": { "type": "string" },
"ref": { "type": "string" }
}
}
},
"custodyOrSourceEvidence": { "type": "string" },
"accountingRef": { "type": "string" },
"settlementOrChainRef": { "type": "string" },
"deploymentRef": { "type": "string" },
"reconciliationStatus": {
"type": "string",
"enum": ["open", "matched", "exception"]
},
"explanation": { "type": "string" }
},
"additionalProperties": true
}

View File

@@ -0,0 +1,29 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://d-bis.org/schemas/universal-resource-activation.manifest.v1.json",
"title": "UniversalResourceManifest",
"type": "object",
"required": ["schemaVersion", "resources", "evidencePackages"],
"properties": {
"schemaVersion": { "type": "string", "pattern": "^1\\." },
"updatedAt": { "type": "string" },
"resources": {
"type": "array"
},
"evidencePackages": {
"type": "array"
},
"policyProfileRefs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "string" },
"version": { "type": "string" }
},
"required": ["id"]
}
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,70 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://d-bis.org/schemas/universal-resource-activation.policy-profile-registry.v1.json",
"title": "PolicyProfileRegistry",
"type": "object",
"required": ["schemaVersion", "profiles"],
"properties": {
"schemaVersion": { "type": "string", "minLength": 1 },
"updatedAt": { "type": "string" },
"description": { "type": "string" },
"profiles": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"policyProfileId",
"version",
"jurisdictions",
"participantClasses",
"resourceFamilies",
"minimumGruGovernanceLevel"
],
"properties": {
"policyProfileId": { "type": "string", "minLength": 1 },
"version": { "type": "string", "minLength": 1 },
"effectiveFrom": { "type": "string" },
"effectiveTo": { "type": "string" },
"supersedes": { "type": "string" },
"jurisdictions": {
"type": "array",
"minItems": 1,
"items": { "type": "string" }
},
"participantClasses": {
"type": "array",
"minItems": 1,
"items": { "type": "string" }
},
"resourceFamilies": {
"type": "array",
"minItems": 1,
"items": { "type": "string" }
},
"tokenizationModesAllowed": {
"type": "array",
"items": { "type": "string" }
},
"ledgerModel": { "type": "string" },
"standards": {
"type": "array",
"items": { "type": "string" }
},
"minimumGruGovernanceLevel": {
"type": "integer",
"minimum": 0,
"maximum": 5
},
"complianceMatrixPaths": {
"type": "array",
"items": { "type": "string" }
},
"notes": { "type": "string" }
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,69 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://d-bis.org/schemas/universal-resource-activation.resource.v1.json",
"title": "UniversalResource",
"type": "object",
"required": ["resourceId", "schemaVersion", "family", "lifecycleState", "deployabilityState"],
"properties": {
"resourceId": { "type": "string", "minLength": 1, "description": "bytes32 hex (0x...) or UUID" },
"schemaVersion": { "type": "integer", "minimum": 1 },
"displayName": { "type": "string" },
"description": { "type": "string" },
"family": {
"type": "string",
"enum": [
"SKR_SAFEKEEPING",
"STRATEGIC_RECORD",
"SERVER_FUNDS",
"FIAT_DIGITAL",
"CRYPTO",
"COMMODITY",
"SECURITY",
"RWA_GENERIC",
"INFRA_CAPACITY"
]
},
"subType": { "type": "string" },
"ownerParticipantId": { "type": "string" },
"jurisdiction": { "type": "string" },
"policyProfileId": { "type": "string" },
"tokenizationMode": {
"type": "string",
"enum": ["NONE", "CLAIM", "ENTITLEMENT", "TRANSFERABLE_ERC20", "RESTRICTED_SECURITY"]
},
"unitOfMeasure": { "type": "string" },
"quantity": { "type": "string" },
"valuationMethod": {
"type": "string",
"enum": ["MARK", "NAV", "AMORTIZED", "NOTIONAL", "NONE"]
},
"valuationRef": { "type": "string" },
"encumbranceState": {
"type": "string",
"enum": ["unencumbered", "held", "pledged", "lien", "disputed"]
},
"lifecycleState": {
"type": "string",
"enum": ["draft", "pending_validation", "active", "suspended", "closed", "void"]
},
"deployabilityState": {
"type": "string",
"enum": [
"informational_only",
"collateral_only",
"funding_eligible",
"settlement_linked",
"infra_allocatable",
"fully_deployable"
]
},
"evidenceRefs": { "type": "array", "items": { "type": "string" } },
"custodianId": { "type": "string" },
"infraHostId": { "type": "string" },
"infraBundleId": { "type": "string" },
"riskTier": { "type": "integer", "minimum": 1, "maximum": 5 },
"createdAt": { "type": "string" },
"updatedAt": { "type": "string" }
},
"additionalProperties": true
}

View File

@@ -0,0 +1,37 @@
# URA manifest — automation design
**Last updated:** 2026-04-25
**Status:** **Implemented in-repo:** fragment merge + strict closure gate + public Phoenix read for `policy-profiles.json` + ledger/settlement fragment CLIs + [`URA_MANIFEST_AUTOMATION_IMPLEMENTATION_TRACKER.md`](../../docs/04-configuration/universal-resource-activation/URA_MANIFEST_AUTOMATION_IMPLEMENTATION_TRACKER.md). Full OMNL ETL and GRU M00 diamond remain **operator/service** work; standalone `PolicyProfileRegistry` ships under `smom-dbis-138/contracts/universal-resource/`.
## Implemented
| Piece | Location |
|-------|----------|
| Merge fragments → validated manifest | `scripts/ura/merge-manifest-fragments.mjs` · `pnpm ura:merge-manifest` |
| Shared schema validation | `scripts/ura/lib/validate-ura-manifest.mjs` (used by `pnpm ura:validate` and merge) |
| Production placeholder gate | `scripts/ura/validate-manifest-closure.mjs` · `pnpm ura:validate-closure` (warn) / `pnpm ura:validate-closure:strict` (fail) · optional `URA_STRICT_CLOSURE=1` in `validate-config-files.sh` |
| Fragment drop zone | `manifest-fragments/README.md` |
| Public API: policy profiles | `GET /api/v1/universal-resource-activation/policy-profiles` on phoenix-deploy-api |
## Goals (remaining / service-bound)
- Generate fragments from **approved** ops forms, ledger exports, chain receipts (outside this repo or future ETL).
- Fail CI on **production** branches when closure rules violate (use `URA_STRICT_CLOSURE=1` on that pipeline).
## Pipeline (merge)
1. **Inputs:** JSON fragments under `manifest-fragments/*.json` (or another `--fragments-dir`).
2. **Merge:** Deterministic sort; `policyProfileRefs` union; resources/evidence by id with shallow merge.
3. **Validate:** Full JSON Schema + cross-checks (`validateUraManifestData`).
4. **Optional:** `--out path` to write; then review and replace `manifest.json` if intended.
## Non-goals
- Automatic legal classification of assets (human sign-off on matrices + profiles).
- Writing to chain or OMNL from this repo without separate deployment controls.
## Related
- [technical-specs/README.md](../../docs/04-configuration/universal-resource-activation/technical-specs/README.md) — normative **TS-*** specs for remaining operator work
- [`UNIVERSAL_RESOURCE_WIRING.md`](../../docs/04-configuration/universal-resource-activation/UNIVERSAL_RESOURCE_WIRING.md)
- [`scripts/validate/validate-ura-policy-profiles.mjs`](../../scripts/validate/validate-ura-policy-profiles.mjs)

View File

@@ -0,0 +1,23 @@
# Policy profiles registry — doc control
**Last updated:** 2026-04-25
**Purpose:** Human-readable **change control** for rows in [`policy-profiles.json`](policy-profiles.json). Legal/risk owns interpretation; engineering owns schema conformance (`pnpm ura:validate-profiles`).
| `policyProfileId` | Version in registry | `effectiveFrom` | Legal / risk sign-off | Notes |
|-------------------|---------------------|-----------------|----------------------|-------|
| `institutional_custody_skr_v1` | 1 | 2026-04-25 | Pending — replace when signed | ID matrix: SKR / custody path |
| `server_funds_treasury_v1` | 1 | 2026-04-25 | Pending — replace when signed | ID matrix: server funds / OMNL |
| `infra_capacity_ops_v1` | 1 | 2026-04-25 | Pending — replace when signed | LAN internal capacity |
## Procedure
1. Add or bump `version` and `effectiveFrom` in `policy-profiles.json`; update this table with sign-off reference (ticket, memo id, or “N/A — internal only”).
2. Ensure [`manifest.json`](manifest.json) `policyProfileRefs` lists every profile used by a resource at the correct version.
3. Run `pnpm ura:validate && pnpm ura:validate-profiles`.
## Related
- [`UNIVERSAL_RESOURCE_POLICY_PROFILES.md`](../../docs/04-configuration/universal-resource-activation/UNIVERSAL_RESOURCE_POLICY_PROFILES.md)
- [`DBIS_RAIL_JURISDICTION_TRACEABILITY.md`](../../docs/dbis-rail/DBIS_RAIL_JURISDICTION_TRACEABILITY.md)
- **Public read:** `GET /api/v1/universal-resource-activation/policy-profiles` on phoenix-deploy-api (same auth rules as manifest; override via `UNIVERSAL_RESOURCE_POLICY_PROFILES_PATH`).
- **On-chain anchor (optional):** `smom-dbis-138/contracts/universal-resource/PolicyProfileRegistry.sol` — publish `contentHash` from `pnpm ura:profile-hash <policyProfileId>`; see [`GRU_REGISTRY_WIRING_CHECKLIST.md`](../../docs/runbooks/GRU_REGISTRY_WIRING_CHECKLIST.md) §6.

View File

@@ -0,0 +1,8 @@
{
"journalEntryId": "OMNL-JE-2026-00042",
"batchRef": "FINERACT-BATCH-88",
"postedAt": "2026-04-25T12:00:00Z",
"currency": "USD",
"amountMinor": "1000000",
"notes": "Illustrative export shape — replace with real OMNL/Fineract field names from your deployment."
}

View File

@@ -0,0 +1,10 @@
{
"schemaVersion": "1.0.0",
"description": "Example mapping from Fineract/OMNL export fields to URA evidence package columns. Copy to omnl-ledger-mapping.v1.json when live.",
"evidencePackages": [
{
"evidencePackageId": "ura:pilot:evidence-register-bootstrap",
"accountingRefField": "journalEntryId"
}
]
}

View File

@@ -0,0 +1,48 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://d-bis.org/schemas/omnl-ledger-mapping.v1.json",
"title": "OMNLLedgerMapping",
"type": "object",
"required": ["schemaVersion", "evidencePackages"],
"properties": {
"schemaVersion": { "type": "string", "const": "1.0.0" },
"description": { "type": "string" },
"resourceUpdates": {
"type": "array",
"items": {
"type": "object",
"required": ["resourceId", "quantityField"],
"properties": {
"resourceId": { "type": "string", "minLength": 1 },
"quantityField": { "type": "string", "description": "Dot path in ledger snapshot for quantity string" }
},
"additionalProperties": false
}
},
"evidencePackages": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["evidencePackageId"],
"properties": {
"evidencePackageId": { "type": "string", "minLength": 1 },
"accountingRefField": {
"type": "string",
"description": "Dot path into ledger snapshot JSON for accountingRef string (e.g. journalEntryId or omnl.batchRef)"
},
"quantityField": {
"type": "string",
"description": "Optional dot path for resource quantity string"
},
"resourceIdForQuantity": {
"type": "string",
"description": "If quantityField set, which resource row to patch"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,38 @@
# URA manifest fragments (optional)
**Purpose:** Drop partial JSON files here to **merge** onto the canonical [`../manifest.json`](../manifest.json) without hand-editing the full file. Used for ops overlays, environment-specific rows, or generated snippets.
## Fragment shape
Each `*.json` file (sorted by filename; skip `_prefix.json`) may contain any of:
| Key | Effect |
|-----|--------|
| `policyProfileRefs` | Union with manifest (same `id` + `version` deduped). |
| `resources` | Add or **shallow-merge** replace by `resourceId`. |
| `evidencePackages` | Add or **shallow-merge** replace by `evidencePackageId`. |
Top-level manifest fields (`schemaVersion`, `description`, …) come **only** from the `--base` file (default: `manifest.json`).
## Commands
```bash
pnpm ura:merge-manifest
# Validate merge and print counts (dry-run; does not write)
node scripts/ura/merge-manifest-fragments.mjs --out /tmp/merged.json
# Write merged JSON; inspect and copy into manifest.json if correct
```
After any manifest edit: `pnpm ura:validate && pnpm ura:validate-profiles`.
## Production gate
When pilots are closed, enforce no placeholders:
```bash
pnpm ura:validate-closure:strict
# Or: URA_STRICT_CLOSURE=1 bash scripts/validation/validate-config-files.sh
```
See [`MANIFEST_AUTOMATION_DESIGN.md`](../MANIFEST_AUTOMATION_DESIGN.md) and [`URA_PILOT_CLOSURE_RUNBOOK.md`](../../../docs/04-configuration/universal-resource-activation/URA_PILOT_CLOSURE_RUNBOOK.md).

View File

@@ -0,0 +1,87 @@
{
"schemaVersion": "1.0.0",
"updatedAt": "2026-04-25T12:00:00Z",
"description": "Canonical in-repo store for universal resource activation (SKR, server funds, infra). Pilot-scoped resourceIds; jurisdiction ID for financial pilots per JURISDICTION_CATALOG and ID-INDONESIA matrix. Replace ura:participant:pilot-*-assign and evidence TBDs per URA_PILOT_CLOSURE_RUNBOOK.md. Run pnpm ura:validate && pnpm ura:validate-profiles in CI.",
"policyProfileRefs": [
{ "id": "institutional_custody_skr_v1", "version": "1" },
{ "id": "server_funds_treasury_v1", "version": "1" },
{ "id": "infra_capacity_ops_v1", "version": "1" }
],
"resources": [
{
"resourceId": "ura:pilot-1:skr-custody-record",
"schemaVersion": 1,
"displayName": "Pilot 1 — SKR / custody record",
"description": "PILOT-1 (Indonesia-scope): bind participant registry id, evidenceRefs, and custody evidence per URA_PILOT_CLOSURE_RUNBOOK.md and ID-INDONESIA compliance matrix.",
"family": "SKR_SAFEKEEPING",
"subType": "CUSTODY_STATEMENT",
"ownerParticipantId": "ura:participant:pilot-1-assign",
"jurisdiction": "ID",
"policyProfileId": "institutional_custody_skr_v1",
"tokenizationMode": "NONE",
"quantity": "0",
"unitOfMeasure": "USD",
"valuationMethod": "NOTIONAL",
"encumbranceState": "unencumbered",
"lifecycleState": "draft",
"deployabilityState": "informational_only",
"evidenceRefs": ["ura:evidence:pending-pilot-1-custody-package"]
},
{
"resourceId": "ura:pilot-2:server-funds-treasury-pool",
"schemaVersion": 1,
"displayName": "Pilot 2 — Server funds treasury pool",
"description": "PILOT-2 (Indonesia-scope): OMNL + server-funds-sidecar SoR; replace accountingRef in evidence when ledger posts per runbook.",
"family": "SERVER_FUNDS",
"subType": "TREASURY_POOL",
"ownerParticipantId": "ura:participant:pilot-2-assign",
"jurisdiction": "ID",
"policyProfileId": "server_funds_treasury_v1",
"tokenizationMode": "NONE",
"quantity": "0",
"unitOfMeasure": "USD",
"valuationMethod": "NOTIONAL",
"encumbranceState": "unencumbered",
"lifecycleState": "draft",
"deployabilityState": "funding_eligible",
"evidenceRefs": ["ura:evidence:pending-pilot-2-ledger-link"]
},
{
"resourceId": "ura:pilot-3:infra-r630-01-api-small",
"schemaVersion": 1,
"displayName": "Pilot 3 — Infra capacity (R630-01, api_small)",
"description": "PILOT-3: LAN ops capacity; link deploymentRef in evidence after non-prod deploy per runbook.",
"family": "INFRA_CAPACITY",
"subType": "BUNDLE",
"ownerParticipantId": "ura:participant:pilot-3-assign",
"jurisdiction": "LAN",
"policyProfileId": "infra_capacity_ops_v1",
"tokenizationMode": "NONE",
"infraHostId": "r630-01",
"infraBundleId": "api_small",
"encumbranceState": "unencumbered",
"lifecycleState": "active",
"deployabilityState": "infra_allocatable",
"evidenceRefs": ["ura:evidence:pending-pilot-3-capacity-verify"]
}
],
"evidencePackages": [
{
"evidencePackageId": "ura:pilot:evidence-register-bootstrap",
"resourceIds": [
"ura:pilot-1:skr-custody-record",
"ura:pilot-2:server-funds-treasury-pool",
"ura:pilot-3:infra-r630-01-api-small"
],
"actionType": "REGISTER",
"initiator": "pilot_bootstrap",
"timestamp": "2026-04-25T12:00:00Z",
"reconciliationStatus": "open",
"custodyOrSourceEvidence": "PILOT-1: TBD — custodian statement or attestation hash per UNIVERSAL_RESOURCE_EVIDENCE_PACKAGE.md; remove when real ref linked.",
"accountingRef": "PILOT-2: TBD — OMNL/Fineract journal or batch id when server-funds path posts (see URA_PILOT_CLOSURE_RUNBOOK.md).",
"settlementOrChainRef": "PILOT-2/3: TBD — MintAuth messageId / tx hash / rail ref per DBIS_RAIL_TECHNICAL_SPEC_V1.md when settlement leg exists.",
"deploymentRef": "PILOT-3: TBD — VMID, FQDN, health URL after deploy per UNIVERSAL_RESOURCE_PILOT_PLAN.md.",
"explanation": "REGISTER package binding three pilots. Set reconciliationStatus to matched only after mandatory joins per UNIVERSAL_RESOURCE_EVIDENCE_PACKAGE.md and jurisdiction matrix rows."
}
]
}

View File

@@ -0,0 +1,53 @@
{
"schemaVersion": "1.0.0",
"updatedAt": "2026-04-25T00:00:00Z",
"description": "Machine-readable URA policy profile registry. Manifest policyProfileRefs must reference ids listed here. See UNIVERSAL_RESOURCE_POLICY_PROFILES.md and compliance-matrices/.",
"profiles": [
{
"policyProfileId": "institutional_custody_skr_v1",
"version": "1",
"effectiveFrom": "2026-04-25",
"jurisdictions": ["*", "ID"],
"participantClasses": ["institutional", "sovereign"],
"resourceFamilies": ["SKR_SAFEKEEPING", "STRATEGIC_RECORD"],
"tokenizationModesAllowed": ["NONE", "CLAIM", "ENTITLEMENT"],
"ledgerModel": "off_chain_omnl",
"standards": ["ISO20022_LOGGING"],
"minimumGruGovernanceLevel": 2,
"complianceMatrixPaths": [
"docs/04-configuration/compliance-matrices/ID-INDONESIA/banking_v1.md"
],
"notes": "SKR / custody evidence-backed; conservative transfer defaults per policy doc."
},
{
"policyProfileId": "server_funds_treasury_v1",
"version": "1",
"effectiveFrom": "2026-04-25",
"jurisdictions": ["*", "ID"],
"participantClasses": ["institutional", "sovereign"],
"resourceFamilies": ["SERVER_FUNDS"],
"tokenizationModesAllowed": ["NONE"],
"ledgerModel": "hybrid",
"standards": ["ISO20022_LOGGING", "TRAVEL_RULE"],
"minimumGruGovernanceLevel": 3,
"complianceMatrixPaths": [
"docs/04-configuration/compliance-matrices/ID-INDONESIA/banking_v1.md"
],
"notes": "Good-funds, GL mapping, holds/releases; Rail settlement when on-chain leg used."
},
{
"policyProfileId": "infra_capacity_ops_v1",
"version": "1",
"effectiveFrom": "2026-04-25",
"jurisdictions": ["*", "LAN"],
"participantClasses": ["institutional", "internal_ops"],
"resourceFamilies": ["INFRA_CAPACITY"],
"tokenizationModesAllowed": ["NONE", "ENTITLEMENT"],
"ledgerModel": "off_chain_omnl",
"standards": ["IPSAS"],
"minimumGruGovernanceLevel": 1,
"complianceMatrixPaths": [],
"notes": "Internal capacity; not a traded security by default."
}
]
}

View File

@@ -0,0 +1,20 @@
# Copy to a path outside VCS (or set inline) and:
# export URA_PRODUCTION_ENV_FILE=/path/to/ura-production-ready.env
# pnpm ura:production-ready
# # or (staging: skips manifest strict closure; does NOT claim production evidence closure)
# URA_PRODUCTION_MODE=connectivity pnpm ura:production-ready
#
# shellcheck disable=SC2034
export PHOENIX_BASE_URL="https://phoenix.example.invalid"
export SERVER_FUNDS_SIDECAR_URL="https://server-funds-sidecar.example.invalid"
export POLICY_PROFILE_REGISTRY_ADDRESS="0x0000000000000000000000000000000000000000"
# export GRU_REQUIRED=1
# export GRU_M00_DIAMOND_ADDRESS="0x0000000000000000000000000000000000000000"
# export LEDGER_E2E_EVIDENCE_FILE="/path/to/ledger-ticket.md"
# export SETTLEMENT_E2E_EVIDENCE_FILE="/path/to/settlement-ticket.md"
# export REQUIRE_CUSTODY=1
# export CUSTODY_E2E_EVIDENCE_FILE="/path/to/custody-ticket.md"
# export COUNSEL_SIGNOFF_FILE="/path/to/counsel-signoff.pdf"

View File

@@ -0,0 +1,10 @@
# XDC parent endpoint stack for Chain 138 pair
# Deployed 2026-04-16 from /home/intlc/projects/XDC-Zero/endpoint
# Operator-local record only; gitignored by default.
ETHEREUM_TRIE_DB=0x99B3511A2d315A497C8112C1fdd8D508d4B1E506
MERKLE_PATRICIA=0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6
ENDPOINT=0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
# Parent-side CSC for Chain 138 roots is still pending.
# Do not treat this file as a completed pair registration artifact yet.

View File

@@ -0,0 +1,12 @@
# Chain 138 XDC Zero Endpoint stack
# Deployed 2026-04-01 from /home/intlc/projects/XDC-Zero/endpoint
# Operator-local record only; gitignored by default.
ETHEREUM_TRIE_DB=0xB7A32E86Fa1533ebb0Ed1D41Ce502110E739E54A
MERKLE_PATRICIA=0xAF12F73f0BCa1E52559Db807A2B438BD14de6B09
ENDPOINT=0x43F435cDC82e415500c0abcf48261176052CadcA
# Final coherent tx set for the linked stack above:
ETHEREUM_TRIE_DB_TX=0x09d5549b877dbb17e82d6998328e914abd1f98000a9af73b4ebf6f6f251a40b3
MERKLE_PATRICIA_TX=0x70bf28a946510c5bd7077b8acf1ccbf5fba76706dfbd5d1405ec5bad70aea844
ENDPOINT_TX=0x98bccdc032e178e109b1472c7d00248523692a054f11aa01744d1a5753fe5e55

View File

@@ -0,0 +1,13 @@
{
"chain138": {
"endpoint": "0x43F435cDC82e415500c0abcf48261176052CadcA",
"registers": [
{
"chainId": 50,
"csc": "0x3cf12c78b5E52EB802aD4f3b4653c616786b792c",
"endpoint": "0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e"
}
],
"applications": []
}
}

View File

@@ -0,0 +1,7 @@
[
{
"chainId": 138,
"csc": "0x105F8A15b819948a89153505762444Ee9f324684",
"endpoint": "0x43F435cDC82e415500c0abcf48261176052CadcA"
}
]

View File

@@ -0,0 +1,148 @@
# AAVE Chain 138 and Marionette TsunamiSwap Plan
**Last Updated:** 2026-04-23
**Status:** Active planning / operator runbook
**Purpose:** Canonical repo-local reference for the TsunamiSwap DEX footprint in this workspace, including deployment target, current endpoint, and the operator flow to bring the VM online.
---
## Scope
This document covers the TsunamiSwap deployment target currently reserved in the Proxmox operational template:
- **VMID:** `5010`
- **Hostname:** `tsunamiswap`
- **IPv4:** `192.168.11.91`
- **Preferred node:** `r630-01`
- **Category:** `defi`
- **Published port in template:** `80`
Canonical sources:
- [docs/00-meta/OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) section `5c`
- [docs/02-architecture/DBIS_NODE_ROLE_MATRIX.md](../02-architecture/DBIS_NODE_ROLE_MATRIX.md)
- [docs/04-configuration/ALL_VMIDS_ENDPOINTS.md](../04-configuration/ALL_VMIDS_ENDPOINTS.md)
- [`config/proxmox-operational-template.json`](../../config/proxmox-operational-template.json)
- [`scripts/deployment/tsunamiswap-vm-5010-provision.sh`](../../scripts/deployment/tsunamiswap-vm-5010-provision.sh)
---
## Current URLs
The canonical public TsunamiSwap URLs are:
- **Landing page:** `https://tsunamiswap.com`
- **Working application:** `https://app.tsunamiswap.com`
The VM service target on port `80` remains the backend origin:
- **Origin / backend target:** `http://192.168.11.91/`
Important notes:
- `https://tsunamiswap.com` is the canonical public landing page.
- `https://app.tsunamiswap.com` is the canonical working application URL.
- `http://192.168.11.91/` remains the internal service origin for VM `5010`.
- Both hostnames are currently recorded against VM `5010`; if the landing page and app split onto different upstreams later, update this document and the Proxmox operational template together.
---
## Deployment State
Current known state in this repo:
- VM `5010` exists in inventory and architecture docs.
- The helper script [`scripts/deployment/tsunamiswap-vm-5010-provision.sh`](../../scripts/deployment/tsunamiswap-vm-5010-provision.sh) is **inventory only** and explicitly says provisioning is still informational.
- The operator checklist expects follow-up scripts such as `create-tsunamiswap-vm.sh`, `setup-tsunamiswap-vm-5010.sh`, and `deploy-tsunamiswap-to-5010.sh`, but those scripts are **not present in this workspace** today.
- Because of that, TsunamiSwap should currently be treated as **planned / partially documented infrastructure**, not a fully repo-automated deployment.
---
## Operator Flow
### 1. Check VM inventory status
```bash
./scripts/deployment/tsunamiswap-vm-5010-provision.sh
```
Expected behavior:
- Confirms whether VMID `5010` exists on the target Proxmox host.
- If missing, prints the intended sizing and placement.
### 2. Target VM profile
From the operator checklist, the intended baseline is:
- `8` vCPU
- `16 GB` RAM
- `~160 GB` disk
- default host `r630-01`
- default IP `192.168.11.91`
### 3. Planned post-create steps
The checklist indicates this intended flow:
```bash
./scripts/create-tsunamiswap-vm.sh --dry-run
./scripts/create-tsunamiswap-vm.sh
./scripts/setup-tsunamiswap-vm-5010.sh --dry-run
./scripts/setup-tsunamiswap-vm-5010.sh
./scripts/deploy-tsunamiswap-to-5010.sh --dry-run
./scripts/deploy-tsunamiswap-to-5010.sh
```
Current repo reality:
- These commands are referenced operationally.
- The underlying scripts are not present in this workspace right now.
- If automation is needed, those scripts should be added in a future pass and then linked back here.
---
## Publish Checklist
Before calling TsunamiSwap publicly live, complete all of the following:
1. Confirm VM `5010` exists and serves HTTP on `192.168.11.91:80`.
2. Confirm `tsunamiswap.com` and `app.tsunamiswap.com` are present under VM `5010` `fqdns` in `config/proxmox-operational-template.json`.
3. Add both hostnames to the canonical endpoint inventory docs.
4. Publish the NPMplus proxy mappings:
`tsunamiswap.com` for the landing page and `app.tsunamiswap.com` for the working application, both currently targeting `192.168.11.91:80`.
5. Verify end-to-end routing with the standard E2E verifier.
Suggested canonical follow-up files to update once a public hostname exists:
- [docs/04-configuration/ALL_VMIDS_ENDPOINTS.md](../04-configuration/ALL_VMIDS_ENDPOINTS.md)
- [docs/04-configuration/FQDN_EXPECTED_CONTENT.md](../04-configuration/FQDN_EXPECTED_CONTENT.md)
- [docs/03-deployment/OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md)
- [`config/proxmox-operational-template.json`](../../config/proxmox-operational-template.json)
---
## AAVE / Marionette Relationship
This workspace currently contains the TsunamiSwap infrastructure reservation and operator references, but it does **not** yet contain a fuller in-repo specification for:
- AAVE-specific market wiring
- Marionette-specific orchestration details
- TsunamiSwap backend architecture
- TsunamiSwap contract inventory
- TsunamiSwap public domain / branding decision
So this document should be read as the canonical **deployment placeholder + operator reference**, not a complete product architecture spec.
---
## Decision
The canonical public URLs for TsunamiSwap in this repo are:
- `https://tsunamiswap.com`
- `https://app.tsunamiswap.com`
The corresponding internal service origin is:
- `http://192.168.11.91/`

View File

@@ -1,17 +1,19 @@
# Your next steps — one place
**Last Updated:** 2026-03-02
**Last Updated:** 2026-04-23
**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 59/59, validation OK, reconcile-env. `preflight-chain138-deploy.sh` — passed. `run-all-next-steps-chain138.sh` — preflight passed; TransactionMirror and cUSDT/cUSDC pool already present; all 12 c* already GRU-registered; verification 59/59. `validate-config-files.sh` — passed. `run-e2e-flow-tasks-full-parallel.sh --dry-run` — waves E0E7 listed.
**Completed (latest repo-local pass, 2026-04-23):** `run-completable-tasks-from-anywhere.sh --dry-run --json-out reports/status/run-completable-tasks-latest.json` now emits machine-readable step summaries. `run-all-validation.sh --skip-genesis --json-out reports/status/run-all-validation-latest.json` passed and refreshed advisory non-EVM status (Solana, Tron, XRPL). `run-e2e-flow-tasks-full-parallel.sh`, `run-all-next-steps-chain138.sh`, and `run-all-operator-tasks-from-lan.sh` also now support optional `--json-out` summaries. Canonical docs were synchronized to the current 61-address on-chain check and five-step no-LAN runner flow.
**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 (next steps run):** `run-completable-tasks-from-anywhere.sh` — config OK, on-chain 61/61, validation OK, non-EVM status refresh, 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 61/61. `validate-config-files.sh` — passed. `run-e2e-flow-tasks-full-parallel.sh --dry-run` — waves E0E7 listed.
**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.
**Continue and complete (2026-02-27):** Re-ran `run-completable-tasks-from-anywhere.sh` — the runner has since expanded to the current five-step flow (config, on-chain, validation, non-EVM status, 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 59/59 at the time, 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 at the time. 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-03-01:** Recommended next steps: `run-completable-tasks-from-anywhere.sh` (config OK, on-chain 59/59, validation OK, reconcile-env). Progress indicators added (Step 1/44/4). E2E flow tasks script: `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1]`. CONTRACT_ADDRESSES_REFERENCE and RECOMMENDATIONS_OPERATOR_CHECKLIST updated to use ADDRESS_MATRIX_AND_STATUS for correlated address matrix.
**Completed 2026-03-01:** Recommended next steps: `run-completable-tasks-from-anywhere.sh` (config OK, on-chain 59/59 at the time, validation OK, reconcile-env). Progress indicators added, later expanded to the current five-step runner flow with elapsed-time summaries. 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.
@@ -27,7 +29,7 @@
## 1. Submit Ledger Live request — ✅ Done
The Ledger Live integration request for **Chain 138 (Defi Oracle Meta Mainnet)** has been submitted (Tally form). Await Ledgers response and follow their process (agreement + integration steps).
The Ledger Live integration request for **Chain 138 (DeFi Oracle Meta Mainnet)** has been submitted (Tally form). Await Ledgers response and follow their process (agreement + integration steps).
**Full guide:** [docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md](../04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md)
@@ -39,9 +41,9 @@ These can be run from your current machine (dev, WSL, CI) without Proxmox or Led
| Step | Command / action |
|------|------------------|
| **Run all “from anywhere” checks** | `./scripts/run-completable-tasks-from-anywhere.sh` — config validation, on-chain check (SKIP_EXIT=1 if RPC unreachable), run-all-validation --skip-genesis, reconcile-env --print |
| **Chain 138 next steps (all in one)** | `./scripts/deployment/run-all-next-steps-chain138.sh` — preflight → mirror+pool (or `--skip-mirror`) → register c* as GRU → verify. Use `--dry-run`; set `TRANSACTION_MIRROR_ADDRESS` if mirror exists. See [TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX](../03-deployment/TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX.md) if CreateCollision. |
| **E2E flows (full parallel)** | `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1]` — run E2E flow tasks by wave; see [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md). |
| **Run all “from anywhere” checks** | `./scripts/run-completable-tasks-from-anywhere.sh [--json-out reports/status/run-completable-tasks-latest.json]` — config validation, on-chain check (SKIP_EXIT=1 if RPC unreachable), run-all-validation --skip-genesis, non-EVM status refresh, reconcile-env --print |
| **Chain 138 next steps (all in one)** | `./scripts/deployment/run-all-next-steps-chain138.sh [--json-out reports/status/run-all-next-steps-chain138-latest.json]` — preflight → mirror+pool (or `--skip-mirror`) → register c* as GRU → verify. Use `--dry-run`; set `TRANSACTION_MIRROR_ADDRESS` if mirror exists. See [TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX](../03-deployment/TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX.md) if CreateCollision. |
| **E2E flows (full parallel)** | `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1] [--json-out reports/status/run-e2e-flow-tasks-latest.json]` — run E2E flow tasks by wave; see [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md). |
| **On-chain address list (no RPC)** | `./scripts/verify/check-contracts-on-chain-138.sh --dry-run` — lists addresses only (no RPC) |
| **Config validation** | `./scripts/validation/validate-config-files.sh` or `... --dry-run` (print only) |
| **Bridge deploy dry-run** | `./scripts/deploy-and-configure-weth9-bridge-chain138.sh --dry-run` (no keys/network) |
@@ -49,7 +51,7 @@ These can be run from your current machine (dev, WSL, CI) without Proxmox or Led
| **Validate via Proxmox SSH** | `bash scripts/run-via-proxmox-ssh.sh validate [--host 192.168.11.10]` — full shellcheck + genesis validation on host; installs jq/shellcheck if missing |
| **CCIP checklist (dry)** | `bash scripts/ccip/ccip-deploy-checklist.sh` — validates env and prints deploy order (no deploy) |
| **Tests** | `cd smom-dbis-138 && forge test` (e2e/integration subset if full suite slow); `cd alltra-lifi-settlement && forge test && npm run test:e2e -- --forceExit` |
| **Quick wins (code)** | Add progress indicators to scripts; add `--dry-run` to scripts that lack it; extend config validation (see [IMPLEMENTATION_CHECKLIST](../10-best-practices/IMPLEMENTATION_CHECKLIST.md)) |
| **Quick wins (code)** | Canonical wrapper-script quick wins are complete in this workspace: progress/timing, `--json-out` summaries, and stricter arg validation are in place on the main runners. Use [REPO_LOCAL_RECOMMENDATIONS_STATUS.md](REPO_LOCAL_RECOMMENDATIONS_STATUS.md) to distinguish remaining operator/external work from future maintenance. |
| **Placeholders (code)** | All done or documented — see [REQUIRED_FIXES_UPDATES_GAPS](../REQUIRED_FIXES_UPDATES_GAPS.md) §4 (canonical addresses, AlltraAdapter setBridgeFee, smart accounts env, quote FABRIC_CHAIN_ID, .bak BAK_FILES_DEPRECATION). |
| **API keys** | Sign up at URLs in [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md); add any new keys to `.env` |

View File

@@ -1,11 +1,12 @@
# Next Steps — Index
**Last Updated:** 2026-03-28
**Last Updated:** 2026-04-23
**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.
**Latest automation run (2026-04-23):** `./scripts/run-completable-tasks-from-anywhere.sh --dry-run --json-out reports/status/run-completable-tasks-latest.json` completed and `bash scripts/verify/run-all-validation.sh --skip-genesis --json-out reports/status/run-all-validation-latest.json` passed, refreshing the current 61/61 on-chain-aware no-LAN flow plus advisory Solana/Tron/XRPL status. `./scripts/run-all-operator-tasks-from-lan.sh --skip-backup` remains the LAN/operator follow-on when secrets and host access are available. **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.
**Repo-local recommendation tracker:** [REPO_LOCAL_RECOMMENDATIONS_STATUS.md](REPO_LOCAL_RECOMMENDATIONS_STATUS.md) — current slice of recommendations that can be advanced directly in this workspace.
**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.
@@ -15,7 +16,7 @@
| # | Action | Command / doc | Status |
|---|--------|----------------|--------|
| 1 | From anywhere: config + on-chain + validation | `./scripts/run-completable-tasks-from-anywhere.sh` | Done 2026-03-02 |
| 1 | From anywhere: config + on-chain + validation | `./scripts/run-completable-tasks-from-anywhere.sh [--json-out reports/status/run-completable-tasks-latest.json]` | Done 2026-04-23 |
| 2 | Before Chain 138 deploy: preflight (RPC, dotenv, nonce, cost) | `./scripts/deployment/preflight-chain138-deploy.sh [--cost]` | Done 2026-03-02 |
| 3 | **Chain 138 next steps (all in one):** preflight → mirror+pool → register c* as GRU → verify | `./scripts/deployment/run-all-next-steps-chain138.sh [--dry-run] [--skip-mirror] [--skip-register-gru] [--skip-verify]` | Done 2026-03-02 |
| 4 | Full deployment order (Phase 06) | [DEPLOYMENT_ORDER_OF_OPERATIONS.md](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) | Remaining (Operator) |

View File

@@ -243,7 +243,7 @@ From **LAN** (SSH to Proxmox + reach NPMplus):
## After running "complete all next steps"
1. **Automated (workspace):** `bash scripts/run-all-next-steps.sh` — report in `docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_*.md`.
2. **Validators + tx-pool:** `bash scripts/fix-all-validators-and-txpool.sh` (requires SSH to .10, .11).
2. **Validators + tx-pool:** `bash scripts/fix-all-validators-and-txpool.sh` then `bash scripts/maintenance/apply-chain138-strict-future-tx-pool.sh` then `bash scripts/clear-all-transaction-pools.sh` (requires SSH to .11, .12, .13, .14).
3. **Flush stuck tx (if any):** `bash scripts/flush-stuck-tx-rpc-and-validators.sh --full` (clears RPC 2101 + validators 10001004).
4. **Verify from LAN:** From a host on 192.168.11.x run `bash scripts/monitoring/monitor-blockchain-health.sh` and `bash scripts/skip-stuck-transactions.sh`. See [NEXT_STEPS_COMPLETION_RUN_20260208.md](../04-configuration/verification-evidence/NEXT_STEPS_COMPLETION_RUN_20260208.md) § Verify from LAN.

View File

@@ -19,6 +19,7 @@
| **RPC_URL_138** (Chain 138 Core) | Deploy, verify, on-chain check | e.g. `http://192.168.11.211:8545` in `.env` |
| **NPM_PASSWORD** | NPMplus backup, proxy host updates (502 fix) | `smom-dbis-138/.env` or root `.env`; from NPMplus UI |
| **SSH to Proxmox** (e.g. root@192.168.11.10) | run-all-maintenance-via-proxmox-ssh, VM/CT creation, token-aggregation fix | SSH key or password to Proxmox host |
| **SSH to dev VM** (CT 5700, `192.168.11.59`) | Gitea runner, `phoenix-deploy-api`, remote operator / automation (e.g. Devin) | LAN, VPN, UDM `76.53.10.40:22` allowlist, or [Cloudflare Tunnel + Access](../04-configuration/DEV_VM_SSH_REMOTE_ACCESS.md) |
| **LINK** (on Chain 138 for bridge) | sendCrossChain (real); CCIP fees | Deployer wallet must hold LINK and approve bridge |
| **Native gas (ETH/138)** | All Chain 138 deploys and txs | Deployer `0x4A66...` funded on 138 |
| **Per-chain RPC + gas (Celo, Wemix, Gnosis)** | CCIP bridges deploy | CELO ~0.1, WEMIX ~0.4; RPC URLs in .env |

View File

@@ -0,0 +1,80 @@
# Operator Handoff — 2026-04-24
Purpose: concise handoff for the Chain 138 Besu hardening, repo cleanup, and Git/Gitea recovery work completed on 2026-04-24.
## What changed
- Chain 138 block production and validator peer health were restored and hardened.
- Strict future-txpool handling is now part of the standard incident path.
- Duplicate legacy Besu RPC CTs were first retired, then destroyed after the canonical fleet was verified healthy.
- Besu inventory was reconciled across all 5 Proxmox nodes, including `r630-03` and `r630-04`.
- `1509` and `1510` were promoted into the canonical Besu inventory and checked-in allowlists/templates.
- A cluster-wide Besu inventory audit was added so host-placement ambiguity is caught mechanically.
- Surgical repo cleanup was completed, nested repos were cleaned and pushed, and the parent repo was reconciled across Gitea and GitHub.
- `gitea.d-bis.org` TLS was repaired after an expired certificate blocked HTTPS pushes.
## Current live status
As of the final 2026-04-24 checks:
- `bash scripts/monitoring/monitor-blockchain-health.sh`
- block production active
- all 5 validators active
- RPC peer count healthy
- global txpool empty
- overall status `HEALTHY`
- `bash scripts/verify/check-cluster-besu-inventory.sh --json`
- all 5 Proxmox nodes online
- `missing_canonical_vmids = []`
- `unexpected_besu_resources = []`
## Canonical Chain 138 incident sequence
Use this exact sequence when block production stalls, pending hashes keep reappearing, or future-nonce residue survives a normal txpool clear:
```bash
bash scripts/fix-all-validators-and-txpool.sh
bash scripts/maintenance/apply-chain138-strict-future-tx-pool.sh
bash scripts/clear-all-transaction-pools.sh
bash scripts/monitoring/monitor-blockchain-health.sh
```
## Gitea TLS follow-up
The immediate HTTPS push blocker was an expired certificate on `gitea.d-bis.org`. The certificate was renewed and reattached through NPMplus #4, and the endpoint now verifies cleanly again.
Root cause of the short warning window: the live NPMplus certbot renewal config for `npm-7` included `required_profile = shortlived`, which forced a 7-day Let's Encrypt certificate instead of the normal 90-day issuance.
That live config was corrected on 2026-04-24 and `gitea.d-bis.org` was reissued successfully. The current live certificate now expires on `2026-07-24`.
Use this to check expiry before it becomes an outage:
```bash
bash scripts/verify/check-gitea-certificate-expiry.sh
WARN_DAYS=30 bash scripts/verify/check-gitea-certificate-expiry.sh
bash scripts/maintenance/schedule-gitea-cert-check-cron.sh --install
```
## Checkpoint commits
Key parent-repo commits in the final reconciliation chain:
- `a4738c1` merge of `gitea/master` into cleaned local `master`
- `c23fdf4` explorer submodule alignment to a remote-backed commit
- `7e2d9c5` the-order hook fix pointer update
- `a1eacd3` duplicate Besu CT destruction + cluster inventory audit
- `780648a` thirdweb sentries added to checked-in allowlists/templates
- `219247b` Besu verifier gaps and monitor noise cleanup
Key nested-repo commits:
- `cross-chain-pmm-lps` `1cf845c`
- `explorer-monorepo` remote already contained the equivalent live deploy workflow
- `smom-dbis-138` `f3d2961`
- `the-order` `702a836`
## Recommended operator habits
- Run `bash scripts/verify/check-cluster-besu-inventory.sh --json` after major topology or host-placement changes.
- Run `bash scripts/verify/check-gitea-certificate-expiry.sh` periodically or wire it into a cron/monitoring path.
- Keep parent-repo submodule pointer pushes behind successful child-repo pushes so no local-only hashes leak into the parent history.

View File

@@ -1,6 +1,6 @@
# Operator Ready Checklist — Copy-Paste Commands
**Last Updated:** 2026-03-28
**Last Updated:** 2026-04-22
**Purpose:** Single page with exact commands to complete every pending todo. Run from **repo root** on a host with **LAN** access (and `smom-dbis-138/.env` with `PRIVATE_KEY`, `NPM_PASSWORD` where noted).
**Do you have all necessary creds?** See [OPERATOR_CREDENTIALS_CHECKLIST.md](OPERATOR_CREDENTIALS_CHECKLIST.md) — per-task list of LAN, PRIVATE_KEY, NPM_PASSWORD, RPC_URL_138, SSH, LINK, gas, token balance.
@@ -15,6 +15,10 @@
**Current live execution path:** [LIVE_SESSION_CRONOS_AND_TIER1_PHASE_C.md](../03-deployment/LIVE_SESSION_CRONOS_AND_TIER1_PHASE_C.md) — close Cronos config + LINK, then activate Tier 1 Phase C on Gnosis, Polygon, and BSC. **Current priority docs:** [FULLY_OPERATIONAL_EXECUTION_CHECKLIST.md](FULLY_OPERATIONAL_EXECUTION_CHECKLIST.md), [PHASE_C_PROFIT_FIRST_PRIORITY.md](../03-deployment/PHASE_C_PROFIT_FIRST_PRIORITY.md), [PHASE_C_TIER1_EXECUTION_TASK_SHEET.md](../03-deployment/PHASE_C_TIER1_EXECUTION_TASK_SHEET.md).
**Chain 138 txpool incident standard path:** `bash scripts/fix-all-validators-and-txpool.sh` then `bash scripts/maintenance/apply-chain138-strict-future-tx-pool.sh` then `bash scripts/clear-all-transaction-pools.sh` then `bash scripts/monitoring/monitor-blockchain-health.sh`. Use this sequence when block production stalls, pending hashes keep reappearing, or future-nonce residue survives a normal txpool clear.
**Gitea HTTPS push safeguard:** `bash scripts/verify/check-gitea-certificate-expiry.sh` (optional: `WARN_DAYS=30 bash scripts/verify/check-gitea-certificate-expiry.sh`). Use this when Git over HTTPS starts failing, or run it proactively before major push/deploy windows. To keep it checked automatically: `bash scripts/maintenance/schedule-gitea-cert-check-cron.sh --install`.
---
## Completed in this session (2026-03-26)
@@ -106,6 +110,20 @@ Single contract retry: `./scripts/verify/run-contract-verification-with-proxy.sh
---
## 4b. LAN: Proxmox fleet vzdump, retention, cluster check
**Ref:** [STORAGE_GROWTH_AND_HEALTH.md](../04-configuration/STORAGE_GROWTH_AND_HEALTH.md)
- **Check corosync / nodes after any `pve-cluster` change:**
`./scripts/maintenance/verify-pve-cluster-health.sh`
Expect: **Quorate: Yes** and all expected nodes **online** in the JSON.
- **Deploy weekly vzdump file retention (all PVE nodes):**
`./scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh` (optional `--dry-run`). **Env:** `VZDUMP_PRUNE_KEEP=2` (default) when re-deploying.
- **R630-01 daily all-running-CT backup** lives on the node as **`/usr/local/bin/proxmox-backup.sh`**, sourced from the repo: **`scripts/maintenance/proxmox-backup-all-running-ct.sh`**. Re-install after editing: `scp` + `chmod 755` (see file header for cron and **`VZDUMP_SKIP_VMIDS`** / **`VZDUMP_COMPRESS`**).
- **Stuck `vzdump` or snap:** stop via **Proxmox UI task stop** if possible. If a **`task` worker** blocks **`/etc/pve`**, only then consider **`systemctl restart pve-cluster`** on that node, then re-run `verify-pve-cluster-health.sh`.
---
## 5. LAN: Run all operator tasks (backup + verify ± deploy ± create-vms)
```bash
@@ -276,7 +294,7 @@ This is intentionally deferred with the rest of the Wemix path. If the chain is
---
## 10. DBIS Chain 138 — phased production path (matrix-driven)
## 10. DeFi Oracle Meta Mainnet (Chain 138) — phased production path (matrix-driven)
**Ref:** [dbis_chain_138_technical_master_plan.md](../../dbis_chain_138_technical_master_plan.md), [DBIS_NODE_ROLE_MATRIX.md](../02-architecture/DBIS_NODE_ROLE_MATRIX.md)

View File

@@ -75,8 +75,8 @@
| GET /health | ✅ Implemented | Returns { status, service } |
| Gitea commit status | ✅ Implemented | pending/success/failure via GITEA_TOKEN |
| HMAC webhook validation | ✅ Done | server.js: HMAC-SHA256 of raw body vs X-Gitea-Signature |
| Deploy completion callback | ✅ Done (stub) | setGiteaCommitStatus success on /api/deploy accept; replace when real deploy runs |
| Full deploy logic (Proxmox SSH) | ⏳ Planned | Next step doc |
| Deploy completion callback | ✅ Done | success/failure posted after real target command and optional health check |
| Full deploy logic (Proxmox SSH / target commands) | ✅ Done | `phoenix-deploy-api` resolves `deploy-targets.json` and executes mapped commands |
| Sankofa Phoenix API (VMID 8600) integration | ⏳ Planned | Next step doc |
### OMNL Fineract API (omnl.hybxfinance.io)
@@ -118,7 +118,7 @@
## Completed in this pass (2026-02-10 / 2026-02-11)
- **Phoenix Deploy API:** HMAC-SHA256 webhook validation (X-Gitea-Signature); deploy completion callback (stub reports success). Full deploy logic and Sankofa integration remain planned.
- **Phoenix Deploy API:** HMAC-SHA256 webhook validation (X-Gitea-Signature); real target execution via `deploy-targets.json`; commit status updated after deploy success/failure; Sankofa API integration still planned.
- **OMNL:** GL accounts (1000, 1050, 2000, 2100, 3000) created via `omnl-gl-accounts-create.sh`; ledger allocation T-001T-008 posted via `omnl-ledger-post.sh`; discovery via `omnl-discovery.sh`; single-deposit helper `omnl-deposit-one.sh` (bulk = loop over discovery/CSV). See `scripts/omnl/README.md` and verification-evidence/OMNL_SCRIPTS_RUN_20260211.md.
**Still require operator/LAN/creds or external systems:** W0 (NPMplus, sendCrossChain, backup), Mifos 5800 access, Explorer DB, W2/W3 deploy, dbis_core TS bulk fix.

View File

@@ -24,7 +24,7 @@
| Question | Answer |
|----------|--------|
| **What is it?** | Chain 138 (Defi Oracle Meta Mainnet) added to Ledger Lives supported networks so users see balances and send/receive on 138 in the app. |
| **What is it?** | Chain 138 (DeFi Oracle Meta Mainnet) added to Ledger Lives supported networks so users see balances and send/receive on 138 in the app. |
| **Prerequisites** | Form already submitted (Tally). Nothing else you can do until Ledger replies. |
| **Who** | You (point of contact). After Ledger responds, you or dev follow their 8-step process. |
| **Steps to complete** | 1. **Now:** Wait for Ledgers reply to the Tally form. 2. **When they reply:** Sign any agreement they send; follow their “Adding your blockchain to Ledger Wallet” steps (currency registration, device app, explorer, etc.). 3. **If they ask for PR/code:** Push materials from `~/projects/LedgerLive`, share link. 4. **After chain is live in Ledger Live:** Run Step 8 manual test plan (sync, receive, balance, broadcast) from `~/projects/LedgerLive/step-08-manual-tests/test-plan.md`. |

View File

@@ -0,0 +1,70 @@
# Repo-Local Recommendations Status
**Purpose:** Track the recommendations that can be advanced directly in this repo without requiring LAN-only access, private credentials, or third-party approvals.
**Canonical sources:** [ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md](ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md), [ADDITIONAL_RECOMMENDATIONS_TABLE.md](ADDITIONAL_RECOMMENDATIONS_TABLE.md), [RECOMMENDATIONS_AND_SUGGESTIONS.md](../10-best-practices/RECOMMENDATIONS_AND_SUGGESTIONS.md).
**Interpretation rule:** This page is only for **repo-local execution**. Operator/LAN tasks and external/vendor tasks stay in their own runbooks and checklists.
---
## Recently advanced in this workspace
| Area | Recommendation thread | Repo-local progress |
|---|---|---|
| Script UX | Progress indicators / execution visibility | `scripts/run-completable-tasks-from-anywhere.sh` and `scripts/verify/run-all-validation.sh` now print start time, per-step timing, and total elapsed time. |
| Metrics collection | Machine-readable run summaries | `scripts/lib/run-summary.sh` now backs optional `--json-out` summaries for the two main no-LAN runners, writing per-step status/timing JSON under `reports/status/` when requested. |
| Wrapper consistency | Shared summary coverage on orchestration entry points | The E2E, Chain 138 next-steps, and LAN operator wrappers now also expose optional `--json-out` summaries using the same shared helper. |
| Monitoring / health checks | Public non-EVM reachability + lane status | Added `scripts/verify/check-non-evm-network-health.sh`, `scripts/verify/build-non-evm-lane-status.py`, and generated outputs under `reports/status/`. |
| Documentation accuracy | Keep docs aligned with current runner behavior | Stale `Step 1/44/4` references were refreshed to the current five-step runner behavior. |
| Documentation discoverability | Cross-links from canonical entry points | Added non-EVM health/lane references to `MASTER_INDEX.md`, `NEXT_STEPS_INDEX.md`, and `scripts/verify/README.md`. |
---
## Repo-local recommendation buckets
### 1. In progress now
| Recommendation | Status | Current repo state |
|---|---|---|
| Progress indicators in scripts | Completed for canonical high-use wrappers | Main no-LAN runners plus the E2E, Chain 138 orchestration, and LAN operator wrappers now show clear execution progress and timing. |
| Improve troubleshooting and quick-reference discoverability | Advanced | Existing quick-reference and troubleshooting docs are present; index coverage is being improved incrementally instead of creating duplicates. |
| Script header consistency | Partially addressed | New scripts follow the header pattern; older scripts still vary. Use [SCRIPT_HEADER_TEMPLATE.md](../10-best-practices/SCRIPT_HEADER_TEMPLATE.md) when touching them. |
| Documentation accuracy review | Ongoing | Current pass fixed runner-step drift and added new reference links; broader stale-status review remains ongoing. |
### 2. Ready for more repo-local work
| Recommendation | Why it is still repo-local | Suggested next move |
|---|---|---|
| Script header/template normalization | Completed for touched canonical wrappers | High-use wrapper scripts edited in this pass now follow the current header/help/argument-validation pattern. |
| Input validation in scripts | Completed for touched canonical wrappers | The main wrapper scripts now reject unknown args and validate `--wave` / `--json-out` input rather than silently accepting drift. |
| Structured logging for scripts | Advanced | Shared timing/summary behavior is centralized in `scripts/lib/run-summary.sh`; deeper log-level normalization outside the canonical wrappers is no longer part of the active repo-local backlog. |
| Developer documentation / standards | Completed for current canonical flows | Canonical docs now reflect current five-step/no-LAN flow, current 61-address on-chain checks, and summary JSON support. |
| Metrics collection for script execution | Completed for canonical wrappers | Main no-LAN, E2E, Chain 138, and LAN operator wrappers now support optional `--json-out` summaries with per-step status/timing. |
### 3. Not repo-local in this workspace
| Recommendation | Reason |
|---|---|
| Blockscout verification settlement, Proxmox firewall changes, SSH hardening, validator key permissions | Requires LAN/host access and sometimes secrets. |
| CoinGecko / CMC / Ledger / Trust Wallet / Consensys / Chainlist submissions | Requires external accounts, outreach, or third-party review. |
| Real bridge sends, operator backups, Proxmox VM provisioning | Requires private keys, LAN, or live infrastructure changes. |
---
## Current repo-local completion state
The currently identified **repo-local** recommendation backlog in the canonical trackers has been advanced to completion for the main wrapper scripts, validation runners, and index docs. What remains is either:
1. operator/LAN execution,
2. secrets-required live actions,
3. third-party/vendor follow-through,
4. or future maintenance when script behavior changes again.
---
## Pointers
- For **all** recommendations: [ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md](ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md)
- For **operator / LAN** actions: [RECOMMENDATIONS_OPERATOR_CHECKLIST.md](RECOMMENDATIONS_OPERATOR_CHECKLIST.md)
- For **next-step routing**: [NEXT_STEPS_INDEX.md](NEXT_STEPS_INDEX.md)

Some files were not shown because too many files have changed in this diff Show More