Compare commits
134 Commits
docs/explo
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a843da4eb8 | ||
|
|
ddb1f825dc | ||
|
|
ce4be10171 | ||
|
|
fb11015eb0 | ||
|
|
ccab738ae2 | ||
|
|
9f50dd4c55 | ||
|
|
4f9e33f8b8 | ||
|
|
460066eb17 | ||
|
|
929f08d8f4 | ||
|
|
cfbc7ce8cb | ||
|
|
191aa20af1 | ||
|
|
ba8f1b9b76 | ||
|
|
55dacdac08 | ||
|
|
33601f51b5 | ||
|
|
d5af3a2077 | ||
|
|
1d15592a09 | ||
|
|
0169d3be8a | ||
|
|
d18c584780 | ||
| 99eafe5920 | |||
| 1b393f5ae2 | |||
|
|
9ebb056869 | ||
|
|
327475c5aa | ||
|
|
b41cbc3a90 | ||
|
|
048268a68a | ||
|
|
88dc2d4ed2 | ||
|
|
b3e7212c10 | ||
|
|
9286a95fce | ||
|
|
8745ec6841 | ||
|
|
a1f9ab51e3 | ||
|
|
30edd98712 | ||
|
|
1ac7f7443e | ||
|
|
6db45b4d2b | ||
|
|
9e0795dbc4 | ||
|
|
4258ff307e | ||
|
|
5d1b4993fa | ||
|
|
5879e28cdc | ||
|
|
e3dff3a43a | ||
|
|
f455348f32 | ||
|
|
f03694ca13 | ||
|
|
63f1d91068 | ||
|
|
c07edfc5c2 | ||
|
|
2eebe9e672 | ||
|
|
cd8a52ae84 | ||
|
|
2124842b38 | ||
|
|
49b193b4b7 | ||
|
|
90971783ad | ||
|
|
485af45c2b | ||
|
|
3ee78865f7 | ||
|
|
45e043ca6b | ||
|
|
31f30decab | ||
|
|
9769225299 | ||
|
|
32d236081b | ||
|
|
cc074a8828 | ||
|
|
2bc18871f5 | ||
|
|
7a99cdbe7d | ||
|
|
6eafa119a3 | ||
|
|
81718215df | ||
|
|
7c60a61382 | ||
|
|
68df9ab90e | ||
|
|
5580bbf181 | ||
|
|
dbd72b20d5 | ||
|
|
baa28cc324 | ||
|
|
2658438948 | ||
|
|
7c5b4507fd | ||
|
|
aa0457b7bf | ||
|
|
aa08972436 | ||
|
|
34d378f6ef | ||
|
|
f8938b2e42 | ||
|
|
ee165fb432 | ||
|
|
f1fe48082f | ||
|
|
207f088b39 | ||
|
|
240fec0c8e | ||
| c2560c5b38 | |||
| 88cad0cd34 | |||
| 525f992854 | |||
|
|
4b0512e66d | ||
|
|
529f819b0f | ||
|
|
2b5a039931 | ||
|
|
0a0365f73d | ||
|
|
a894b1dd50 | ||
|
|
5688f474c3 | ||
|
|
4203f83e11 | ||
|
|
566cecd8f9 | ||
|
|
0035a787fe | ||
|
|
fa4161cf58 | ||
|
|
aba8ca5700 | ||
|
|
60b8fb9ddc | ||
|
|
01c36a5489 | ||
|
|
a4738c1376 | ||
|
|
c23fdf4614 | ||
|
|
7e2d9c58e3 | ||
|
|
64d2e550a1 | ||
|
|
7572444b8f | ||
|
|
83482d6d13 | ||
|
|
219247b872 | ||
|
|
780648a2ee | ||
|
|
1336253f8d | ||
|
|
a1eacd3098 | ||
|
|
91ba6f4f2f | ||
|
|
21ad898c6b | ||
|
|
a14a683b9b | ||
|
|
984900deba | ||
|
|
d8ff571c60 | ||
|
|
e27ec30ab1 | ||
|
|
1927058a95 | ||
|
|
c65b896fad | ||
|
|
454aeda9d5 | ||
|
|
996d45d1ba | ||
|
|
c5ec42d3d2 | ||
|
|
afde88ff9a | ||
|
|
fc32d51ca7 | ||
|
|
9f60311ef1 | ||
|
|
3743d20f49 | ||
|
|
58ca82bbe3 | ||
|
|
453ccc8d12 | ||
|
|
77d40201a3 | ||
|
|
0e7200f1b8 | ||
|
|
725dcd180d | ||
| 773c83e6c6 | |||
|
|
d9a3053a58 | ||
|
|
dc123ff647 | ||
|
|
d06af63700 | ||
|
|
f0f0a4bb84 | ||
|
|
deba4f9f00 | ||
|
|
8e3d2e1ddb | ||
|
|
b8613905bd | ||
|
|
e6bc7a6d7c | ||
|
|
4fab998e51 | ||
|
|
d63efcb315 | ||
| 1892827711 | |||
| 820174d556 | |||
| 252b766a53 | |||
| fa5de3ba01 | |||
| 18767b7d8b |
@@ -10,9 +10,23 @@ alwaysApply: true
|
||||
- **cUSDT:** `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` (6 decimals)
|
||||
- **cUSDC:** `0xf22258f57794CC8E06237084b353Ab30fFfa640b` (6 decimals)
|
||||
|
||||
**DODOPMMIntegration:** `0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` — reconciled with `docs/11-references/ADDRESS_MATRIX_AND_STATUS.md` (on-chain verification 2026-03-26); `compliantUSDT()` / `compliantUSDC()` return the canonical cUSDT/cUSDC above.
|
||||
**DODOPMMIntegration (live, traded):** `0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895` — confirmed live via on-chain probe (2026-04-22): `compliantUSDT()` / `compliantUSDC()` return the canonical cUSDT/cUSDC above; `pools[][]` mapping resolves to the live funded pool set below; `isRegisteredPool` is TRUE for all 8 pools listed under "PMM pools (live, traded)". `0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` is a parallel deployment of the same source with different immutables and seeded but un-traded pools — do not wire dApps or routers to it.
|
||||
|
||||
**PMM pools (live funded public):** cUSDT/cUSDC `0xff8d3b8fDF7B112759F076B69f4271D4209C0849` | cUSDT/USDT `0x6fc60DEDc92a2047062294488539992710b99D71` | cUSDC/USDC `0x9f74Be42725f2Aa072a9E0CdCce0E7203C510263` — see `docs/11-references/ADDRESS_MATRIX_AND_STATUS.md` / `PMM_DEX_ROUTING_STATUS.md`.
|
||||
**DODOPMMProvider (ILiquidityProvider, live):** `0x3f729632E9553EBacCdE2e9b4c8F2B285b014F2e` — `dodoIntegration() == 0x86ADA6Ef…`, `providerName() == "DODO PMM"`, `isKnownPool` TRUE for all 8 live pools. Use this address as `dodoLiquidityProvider` when deploying `EnhancedSwapRouter`; see `docs/11-references/PMM_DEX_ROUTING_STATUS.md`.
|
||||
|
||||
**PMM pools (live, traded — 2026-04-22 on-chain probe):**
|
||||
- cUSDT/cUSDC `0x9e89bAe009adf128782E19e8341996c596ac40dC` (~983k cUSDT / ~1.016M cUSDC, asymmetric — actively traded)
|
||||
- cUSDT/USDT `0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66` (~1M / ~1M)
|
||||
- cUSDC/USDC `0xc39B7D0F40838cbFb54649d327f49a6DAC964062` (~1M / ~1M)
|
||||
- cBTC/cUSDT `0x67049e7333481e2cac91af61403ac7bddfab7bcd` (10k cBTC base / 9M cUSDT quote)
|
||||
- cBTC/cUSDC `0x72f1a0794153c3b8a1e8a731f1d8e1a52cb10dc5` (10k cBTC base / 9M cUSDC quote)
|
||||
- WETH/USDC `0xb53a0508940b1ff90f1aad4f6cb50a7012fe5593` (~10.1M USDC quote)
|
||||
- WETH/USDT `0xe227f6c0520c0c6e8786fe56fa76c4914f861533` (~10.1M USDT quote)
|
||||
- cBTC/cXAUC `0xf3e8a07d419b61f002114e64d79f7cf8f7989433` (10k cBTC base / 1.7k cXAUC quote)
|
||||
|
||||
The earlier rule's pool addresses (`0xff8d3b8f…`, `0x6fc60D…`, `0x9f74Be…`) belong to the **parallel** integration `0x5BDc62f1…` (Stack B) and are seeded 10M/10M flat or 0/0 — they are not the live PMM trading set. Source-of-truth corrections to follow in `ADDRESS_MATRIX_AND_STATUS.md` and `PMM_DEX_ROUTING_STATUS.md`.
|
||||
|
||||
**cBTC:** `0xe94260c555ac1d9d3cc9e1632883452ebdf0082e` (8 decimals) — base token of the three cBTC pools above.
|
||||
|
||||
**cXAUC / cXAUT (XAU):** `0x290E52a8819A4fbD0714E517225429aA2B70EC6b`, `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` (6 decimals). **1 full token = 1 troy ounce Au** — not USD face value; see `EXPLORER_TOKEN_LIST_CROSSCHECK.md` section 5.1.
|
||||
|
||||
|
||||
18
.devin/README.md
Normal file
18
.devin/README.md
Normal 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
|
||||
```
|
||||
21
.devin/agents/reviewer/AGENT.md
Normal file
21
.devin/agents/reviewer/AGENT.md
Normal 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
38
.devin/config.json
Normal 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
14
.devin/hooks.v1.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"PreToolUse": [
|
||||
{
|
||||
"matcher": "exec",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "bash scripts/devin/block-dangerous-command.sh",
|
||||
"timeout": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
22
.devin/skills/cursor-handoff/SKILL.md
Normal file
22
.devin/skills/cursor-handoff/SKILL.md
Normal 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.
|
||||
28
.devin/skills/review/SKILL.md
Normal file
28
.devin/skills/review/SKILL.md
Normal 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.
|
||||
@@ -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=
|
||||
@@ -71,6 +77,16 @@ GITEA_URL=
|
||||
GITEA_TOKEN=
|
||||
GITEA_ORG=
|
||||
|
||||
# --- Phoenix deploy API (Gitea Actions secrets on EACH repo that triggers deploy) ---
|
||||
# PHOENIX_DEPLOY_URL= # full POST URL e.g. http://192.168.11.59:4001/api/deploy — same variable name as repo Secrets in Gitea
|
||||
# PHOENIX_DEPLOY_TOKEN= # bearer for Phoenix deploy API — set per-repo Secret on Gitea, not necessarily in this root .env
|
||||
|
||||
# --- CyberSecur Global (Gov portal static site; optional Web3Forms intake) ---
|
||||
# CYBERSECUR_WEB3FORMS_ACCESS_KEY= # web3forms.com — used by CyberSecur-Global/deploy/render-intake.sh (key is public in browser HTML per provider)
|
||||
# After rotating the key in the Web3Forms dashboard, update this line and redeploy:
|
||||
# CYBERSECUR_REPO=/path/to/CyberSecur-Global ./scripts/deployment/sync-cybersecur-global-to-ct7810.sh
|
||||
# CYBERSECUR_INTAKE_REDIRECT_URL= # optional; default https://cybersecur.d-bis.org/intake-thanks.html
|
||||
|
||||
# --- Database & app auth ---
|
||||
DATABASE_URL=
|
||||
JWT_SECRET=
|
||||
@@ -94,13 +110,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=
|
||||
|
||||
@@ -6,6 +6,12 @@
|
||||
2. Make changes, ensure tests pass
|
||||
3. Open a pull request
|
||||
|
||||
Repo ↔ VM CI/CD mapping and templates for **other** Gitea repos: [docs/04-configuration/GITEA_REPO_VM_CD_CI_MATRIX.md](../docs/04-configuration/GITEA_REPO_VM_CD_CI_MATRIX.md), [config/gitea-workflow-templates/README.md](../config/gitea-workflow-templates/README.md).
|
||||
|
||||
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
|
||||
|
||||
125
.gitea/workflow-sources/deploy-to-phoenix.yml
Normal file
125
.gitea/workflow-sources/deploy-to-phoenix.yml
Normal file
@@ -0,0 +1,125 @@
|
||||
# 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: Install validation dependencies
|
||||
run: |
|
||||
corepack enable
|
||||
pnpm install --frozen-lockfile
|
||||
|
||||
# The cW* mesh matrix and deployment-status validators read
|
||||
# cross-chain-pmm-lps/config/*.json. The parent checkout does not
|
||||
# materialize submodules by default, and .gitmodules mixes public HTTPS
|
||||
# with SSH URLs, so clone only the required public validation dependency.
|
||||
- name: Materialize cross-chain-pmm-lps
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [ ! -f cross-chain-pmm-lps/config/deployment-status.json ]; then
|
||||
rm -rf cross-chain-pmm-lps
|
||||
git clone --depth=1 \
|
||||
https://gitea.d-bis.org/d-bis/cross-chain-pmm-lps.git \
|
||||
cross-chain-pmm-lps
|
||||
fi
|
||||
|
||||
- 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: |
|
||||
set -euo pipefail
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
set +e
|
||||
curl -sSf --retry 3 --retry-connrefused --retry-delay 10 --retry-max-time 180 \
|
||||
--connect-timeout 10 --max-time 120 \
|
||||
-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\"}"
|
||||
rc="$?"
|
||||
set -e
|
||||
if [ "$rc" -eq 52 ]; then
|
||||
HEALTH_URL="${{ secrets.PHOENIX_DEPLOY_URL }}"
|
||||
HEALTH_URL="${HEALTH_URL%/api/deploy}/health"
|
||||
echo "Phoenix deploy API restarted during self-deploy; verifying ${HEALTH_URL}"
|
||||
for i in $(seq 1 12); do
|
||||
if curl -fsS --max-time 5 "$HEALTH_URL"; then
|
||||
exit 0
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
fi
|
||||
exit "$rc"
|
||||
|
||||
deploy-atomic-swap-dapp:
|
||||
needs: deploy
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Trigger Atomic Swap dApp deployment (Phoenix)
|
||||
run: |
|
||||
set -euo pipefail
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf \
|
||||
--connect-timeout 10 --max-time 900 \
|
||||
-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: |
|
||||
set -euo pipefail
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf --retry 5 --retry-all-errors --retry-connrefused --retry-delay 10 --retry-max-time 300 \
|
||||
--connect-timeout 10 --max-time 120 \
|
||||
-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\"}" \
|
||||
|| { echo "Cloudflare DNS sync request failed; optional sync is non-blocking."; exit 0; }
|
||||
33
.gitea/workflow-sources/validate-on-pr.yml
Normal file
33
.gitea/workflow-sources/validate-on-pr.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
# 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
|
||||
- name: Install validation dependencies
|
||||
run: |
|
||||
corepack enable
|
||||
pnpm install --frozen-lockfile
|
||||
# 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
|
||||
210
.gitea/workflows/bootstrap-phoenix-deploy-api.yml
Normal file
210
.gitea/workflows/bootstrap-phoenix-deploy-api.yml
Normal file
@@ -0,0 +1,210 @@
|
||||
name: Bootstrap Phoenix Deploy API
|
||||
|
||||
# Reinstalls phoenix-deploy-api on the dev VM (CT 5700) with the latest server.js
|
||||
# from master. This is the missing link between "code on master is the real
|
||||
# implementation" and "running service on CT 5700 still has the stub". Run this
|
||||
# workflow_dispatch job whenever phoenix-deploy-api/server.js, deploy-targets.json
|
||||
# or related scripts change and you need the running service to pick up the change
|
||||
# without a manual LAN visit.
|
||||
#
|
||||
# Required Gitea repo secrets (Settings -> Secrets):
|
||||
# PHOENIX_PVE_HOST PVE node IP that hosts CT 5700 (e.g. 192.168.11.12)
|
||||
# PHOENIX_PVE_USER SSH user on the PVE node (default: root)
|
||||
# PHOENIX_PVE_SSH_KEY Private SSH key (PEM, OpenSSH format) authorised on the PVE node
|
||||
# PHOENIX_PVE_KNOWN_HOSTS Pre-populated known_hosts entry for the PVE node (avoids strict-host prompt)
|
||||
# PHOENIX_DEV_VM_VMID Container VMID (default: 5700)
|
||||
# PHOENIX_DEPLOY_DEV_VM_IP IP of the dev VM for the post-install health check (default: 192.168.11.59)
|
||||
# PHOENIX_DEPLOY_URL Phoenix deploy webhook URL (already used by deploy job)
|
||||
# PHOENIX_DEPLOY_TOKEN Bearer token for the webhook (already used by deploy job)
|
||||
#
|
||||
# Trigger only via Gitea UI (Actions tab -> "Bootstrap Phoenix Deploy API" -> Run
|
||||
# workflow). NOT triggered on push: reinstalling the deploy service is sensitive
|
||||
# enough that we want it gated behind a manual click.
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
verify_only:
|
||||
description: "If true, only run the post-install /health + auth probe and skip the reinstall step."
|
||||
type: boolean
|
||||
required: false
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
bootstrap:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout proxmox repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Validate repo layout
|
||||
run: |
|
||||
set -euo pipefail
|
||||
test -d phoenix-deploy-api || { echo "phoenix-deploy-api/ missing" >&2; exit 1; }
|
||||
test -f phoenix-deploy-api/server.js
|
||||
test -f phoenix-deploy-api/scripts/install-systemd.sh
|
||||
test -f phoenix-deploy-api/deploy-targets.json
|
||||
# Manifest is optional; warn if missing but do not fail.
|
||||
if [ ! -f config/public-sector-program-manifest.json ]; then
|
||||
echo "::warning::config/public-sector-program-manifest.json missing — install will warn on CT"
|
||||
fi
|
||||
# Make sure the running master implementation is NOT the stub message
|
||||
# that triggered this whole bootstrap thread.
|
||||
if grep -q "Deploy request queued (stub)" phoenix-deploy-api/server.js; then
|
||||
echo "phoenix-deploy-api/server.js still contains the stub string — refusing to bootstrap." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Install SSH key for PVE access
|
||||
if: ${{ github.event.inputs.verify_only != 'true' }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
mkdir -p "$HOME/.ssh"
|
||||
chmod 700 "$HOME/.ssh"
|
||||
umask 077
|
||||
printf '%s\n' "${{ secrets.PHOENIX_PVE_SSH_KEY }}" > "$HOME/.ssh/id_pve"
|
||||
chmod 600 "$HOME/.ssh/id_pve"
|
||||
if [ -n "${{ secrets.PHOENIX_PVE_KNOWN_HOSTS }}" ]; then
|
||||
printf '%s\n' "${{ secrets.PHOENIX_PVE_KNOWN_HOSTS }}" > "$HOME/.ssh/known_hosts"
|
||||
chmod 644 "$HOME/.ssh/known_hosts"
|
||||
else
|
||||
# Fall back to accept-new on first connect; subsequent connects pin.
|
||||
touch "$HOME/.ssh/known_hosts"
|
||||
chmod 644 "$HOME/.ssh/known_hosts"
|
||||
fi
|
||||
|
||||
- name: Build deploy bundle
|
||||
if: ${{ github.event.inputs.verify_only != 'true' }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
mkdir -p .out
|
||||
if [ -f config/public-sector-program-manifest.json ]; then
|
||||
tar czf .out/pda-deploy-bundle.tar.gz \
|
||||
phoenix-deploy-api \
|
||||
config/public-sector-program-manifest.json
|
||||
else
|
||||
tar czf .out/pda-deploy-bundle.tar.gz phoenix-deploy-api
|
||||
fi
|
||||
ls -lh .out/pda-deploy-bundle.tar.gz
|
||||
|
||||
- name: scp bundle to PVE host
|
||||
if: ${{ github.event.inputs.verify_only != 'true' }}
|
||||
env:
|
||||
PVE_HOST: ${{ secrets.PHOENIX_PVE_HOST }}
|
||||
PVE_USER: ${{ secrets.PHOENIX_PVE_USER }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
: "${PVE_HOST:?PHOENIX_PVE_HOST not set in repo secrets}"
|
||||
PVE_USER_VAL="${PVE_USER:-root}"
|
||||
KNOWN_HOSTS_OPT="-o UserKnownHostsFile=$HOME/.ssh/known_hosts"
|
||||
if [ ! -s "$HOME/.ssh/known_hosts" ]; then
|
||||
KNOWN_HOSTS_OPT="$KNOWN_HOSTS_OPT -o StrictHostKeyChecking=accept-new"
|
||||
else
|
||||
KNOWN_HOSTS_OPT="$KNOWN_HOSTS_OPT -o StrictHostKeyChecking=yes"
|
||||
fi
|
||||
scp -i "$HOME/.ssh/id_pve" $KNOWN_HOSTS_OPT \
|
||||
-o ConnectTimeout=20 \
|
||||
.out/pda-deploy-bundle.tar.gz \
|
||||
"${PVE_USER_VAL}@${PVE_HOST}:/tmp/pda-deploy-bundle.tar.gz"
|
||||
|
||||
- name: pct push + install-systemd on CT
|
||||
if: ${{ github.event.inputs.verify_only != 'true' }}
|
||||
env:
|
||||
PVE_HOST: ${{ secrets.PHOENIX_PVE_HOST }}
|
||||
PVE_USER: ${{ secrets.PHOENIX_PVE_USER }}
|
||||
VMID: ${{ secrets.PHOENIX_DEV_VM_VMID }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
: "${PVE_HOST:?PHOENIX_PVE_HOST not set in repo secrets}"
|
||||
PVE_USER_VAL="${PVE_USER:-root}"
|
||||
VMID_VAL="${VMID:-5700}"
|
||||
KNOWN_HOSTS_OPT="-o UserKnownHostsFile=$HOME/.ssh/known_hosts"
|
||||
if [ ! -s "$HOME/.ssh/known_hosts" ]; then
|
||||
KNOWN_HOSTS_OPT="$KNOWN_HOSTS_OPT -o StrictHostKeyChecking=accept-new"
|
||||
else
|
||||
KNOWN_HOSTS_OPT="$KNOWN_HOSTS_OPT -o StrictHostKeyChecking=yes"
|
||||
fi
|
||||
ssh -i "$HOME/.ssh/id_pve" $KNOWN_HOSTS_OPT \
|
||||
-o ConnectTimeout=20 \
|
||||
"${PVE_USER_VAL}@${PVE_HOST}" "VMID=${VMID_VAL} bash -s" <<'REMOTE_EOF'
|
||||
set -euo pipefail
|
||||
: "${VMID:?}"
|
||||
# Verify CT exists and is running.
|
||||
if ! pct status "${VMID}" >/dev/null 2>&1; then
|
||||
echo "CT ${VMID} not found on this PVE node." >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! pct exec "${VMID}" -- true 2>/dev/null; then
|
||||
echo "CT ${VMID} not running. Start it first: pct start ${VMID}" >&2
|
||||
exit 1
|
||||
fi
|
||||
STAGE="/tmp/proxmox-pda-stage"
|
||||
pct push "${VMID}" /tmp/pda-deploy-bundle.tar.gz /root/pda-deploy.tar.gz
|
||||
pct exec "${VMID}" -- bash -c "
|
||||
set -euo pipefail
|
||||
rm -rf '${STAGE}'
|
||||
mkdir -p '${STAGE}'
|
||||
tar xzf /root/pda-deploy.tar.gz -C '${STAGE}'
|
||||
cd '${STAGE}'
|
||||
bash phoenix-deploy-api/scripts/install-systemd.sh
|
||||
rm -f /root/pda-deploy.tar.gz
|
||||
"
|
||||
rm -f /tmp/pda-deploy-bundle.tar.gz
|
||||
REMOTE_EOF
|
||||
|
||||
- name: Health check (no auth)
|
||||
env:
|
||||
DEV_VM_IP: ${{ secrets.PHOENIX_DEPLOY_DEV_VM_IP }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
IP="${DEV_VM_IP:-192.168.11.59}"
|
||||
# Service may take a moment to come up after install; retry briefly.
|
||||
for i in 1 2 3 4 5 6; do
|
||||
if curl -sSf -m 5 "http://${IP}:4001/health" -o /tmp/health.json; then
|
||||
echo "Health check OK on attempt ${i}"
|
||||
cat /tmp/health.json || true
|
||||
echo
|
||||
break
|
||||
fi
|
||||
echo "Health check attempt ${i}/6 failed; sleeping 3s"
|
||||
sleep 3
|
||||
if [ "${i}" = "6" ]; then
|
||||
echo "Phoenix Deploy API /health unreachable after install." >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Auth + non-stub probe (POST with bogus target)
|
||||
env:
|
||||
PHOENIX_DEPLOY_URL: ${{ secrets.PHOENIX_DEPLOY_URL }}
|
||||
PHOENIX_DEPLOY_TOKEN: ${{ secrets.PHOENIX_DEPLOY_TOKEN }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
: "${PHOENIX_DEPLOY_URL:?}"
|
||||
: "${PHOENIX_DEPLOY_TOKEN:?}"
|
||||
# POST a bogus target. The post-bootstrap server should:
|
||||
# - accept the bearer token (NOT 401)
|
||||
# - reject the unknown target with a non-stub error
|
||||
# The pre-bootstrap stub returned 202 with "Deploy request queued (stub)"
|
||||
# for ANY target. So we explicitly check the response body does NOT
|
||||
# contain that stub phrase.
|
||||
BODY="$(curl -sS -m 10 -X POST "${PHOENIX_DEPLOY_URL}" \
|
||||
-H "Authorization: Bearer ${PHOENIX_DEPLOY_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"repo":"d-bis/proxmox","sha":"HEAD","branch":"master","target":"__bootstrap_probe__"}' || true)"
|
||||
echo "Response body:"
|
||||
echo "${BODY}"
|
||||
if echo "${BODY}" | grep -q 'Deploy request queued (stub)'; then
|
||||
echo "::error::Phoenix Deploy API still returning stub response — bootstrap did not take effect."
|
||||
exit 1
|
||||
fi
|
||||
if echo "${BODY}" | grep -qi 'unauthorized\|invalid token\|401'; then
|
||||
echo "::error::Phoenix Deploy API rejected the bearer token. PHOENIX_DEPLOY_TOKEN is out of sync with PHOENIX_DEPLOY_SECRET on the CT."
|
||||
exit 1
|
||||
fi
|
||||
echo "Phoenix Deploy API is post-stub and authenticating correctly."
|
||||
|
||||
- name: Cleanup secrets
|
||||
if: always()
|
||||
run: |
|
||||
rm -f "$HOME/.ssh/id_pve" "$HOME/.ssh/known_hosts" || true
|
||||
31
.gitea/workflows/deploy-portal-live.yml
Normal file
31
.gitea/workflows/deploy-portal-live.yml
Normal 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\"}"
|
||||
@@ -1,11 +1,52 @@
|
||||
# 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: Install validation dependencies
|
||||
run: |
|
||||
corepack enable
|
||||
pnpm install --frozen-lockfile
|
||||
|
||||
# The cW* mesh matrix and deployment-status validators read
|
||||
# cross-chain-pmm-lps/config/*.json. The parent checkout does not
|
||||
# materialize submodules by default, and .gitmodules mixes public HTTPS
|
||||
# with SSH URLs, so clone only the required public validation dependency.
|
||||
- name: Materialize cross-chain-pmm-lps
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [ ! -f cross-chain-pmm-lps/config/deployment-status.json ]; then
|
||||
rm -rf cross-chain-pmm-lps
|
||||
git clone --depth=1 \
|
||||
https://gitea.d-bis.org/d-bis/cross-chain-pmm-lps.git \
|
||||
cross-chain-pmm-lps
|
||||
fi
|
||||
|
||||
- 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 +54,72 @@ jobs:
|
||||
|
||||
- name: Trigger Phoenix deployment
|
||||
run: |
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
set -euo pipefail
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
set +e
|
||||
curl -sSf --retry 3 --retry-connrefused --retry-delay 10 --retry-max-time 180 \
|
||||
--connect-timeout 10 --max-time 120 \
|
||||
-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\"}"
|
||||
rc="$?"
|
||||
set -e
|
||||
if [ "$rc" -eq 52 ]; then
|
||||
HEALTH_URL="${{ secrets.PHOENIX_DEPLOY_URL }}"
|
||||
HEALTH_URL="${HEALTH_URL%/api/deploy}/health"
|
||||
echo "Phoenix deploy API restarted during self-deploy; verifying ${HEALTH_URL}"
|
||||
for i in $(seq 1 12); do
|
||||
if curl -fsS --max-time 5 "$HEALTH_URL"; then
|
||||
exit 0
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
fi
|
||||
exit "$rc"
|
||||
|
||||
deploy-atomic-swap-dapp:
|
||||
needs: deploy
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Trigger Atomic Swap dApp deployment (Phoenix)
|
||||
run: |
|
||||
set -euo pipefail
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf \
|
||||
--connect-timeout 10 --max-time 900 \
|
||||
-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: |
|
||||
set -euo pipefail
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf --retry 5 --retry-all-errors --retry-connrefused --retry-delay 10 --retry-max-time 300 \
|
||||
--connect-timeout 10 --max-time 120 \
|
||||
-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\"}" \
|
||||
|| { echo "Cloudflare DNS sync request failed; optional sync is non-blocking."; exit 0; }
|
||||
|
||||
33
.gitea/workflows/validate-on-pr.yml
Normal file
33
.gitea/workflows/validate-on-pr.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
# 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
|
||||
- name: Install validation dependencies
|
||||
run: |
|
||||
corepack enable
|
||||
pnpm install --frozen-lockfile
|
||||
# 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
|
||||
84
.gitignore
vendored
84
.gitignore
vendored
@@ -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,84 @@ 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
|
||||
|
||||
# Ephemeral e2e dry-run outputs (local re-runs; not canonical reports)
|
||||
reports/e2e-dry-runs/
|
||||
|
||||
# Local relay / thirdweb scaffold trees (subtree or vendor experiments — git add -f if promoted)
|
||||
relay/
|
||||
relay-api/
|
||||
relay-docs/
|
||||
relay-web/
|
||||
thirdweb-contracts/
|
||||
|
||||
# One-off liquidity staging helpers (operator-generated; use committed runbooks as source of truth)
|
||||
scripts/verify/stage-250m-eth-to-cwusdc-dry-run.sh
|
||||
scripts/verify/stage-427m-cusdc-weth-liquidity-funding.sh
|
||||
|
||||
# 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
6
.gitmodules
vendored
@@ -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.
|
||||
|
||||
16
AGENTS.md
16
AGENTS.md
@@ -11,15 +11,21 @@ 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` |
|
||||
| Treasury / EMI / wallet / VA master plan | `docs/02-architecture/GOVERNMENT_TREASURY_EMI_WALLET_MASTER_PLAN.md` — government treasury, EMIs, digital wallets, virtual accounts (incl. Tatum-style), Rail vs RTGS gates |
|
||||
| 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 +33,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
|
||||
|
||||
2
MEV_Bot
2
MEV_Bot
Submodule MEV_Bot updated: 682bd76349...f126ae50b4
@@ -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)
|
||||
|
||||
Submodule ai-mcp-pmm-controller updated: 3e3f55fe79...cb92278aff
Submodule alltra-lifi-settlement updated: 1dabf29f6d...a218b53de7
1
atomic-swap-dapp
Submodule
1
atomic-swap-dapp
Submodule
Submodule atomic-swap-dapp added at 2c561a7a63
@@ -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."
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
23
config/all-mainnet-canary-evidence.example.json
Normal file
23
config/all-mainnet-canary-evidence.example.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"description": "Copy to config/all-mainnet-canary-evidence.json after live canary swaps. Each row needs real transaction hashes and observed balance deltas.",
|
||||
"evidence": [
|
||||
{
|
||||
"poolId": "651940-uniswap_v2-wall-ausdc",
|
||||
"status": "canary_passed",
|
||||
"generatedAt": "2026-04-29T00:00:00.000Z",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"amountLabel": "seed",
|
||||
"txHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"sourceToken": "WALL",
|
||||
"destinationToken": "AUSDC",
|
||||
"observedInputRaw": "0",
|
||||
"observedOutputRaw": "0"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replace with real canary transaction evidence before applying."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
498
config/all-mainnet-canary-evidence.json
Normal file
498
config/all-mainnet-canary-evidence.json
Normal file
@@ -0,0 +1,498 @@
|
||||
{
|
||||
"description": "ALL Mainnet canary evidence recorded from live canary transactions executed with deployer wallet 0x4A666F96fC8764181194447A7dFdb7d471b301C8.",
|
||||
"evidence": [
|
||||
{
|
||||
"poolId": "651940-dodo_pmm-wall-ausdc",
|
||||
"generatedAt": "2026-04-29T04:41:13.993Z",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x727cea66f601b514b0d82c4bc93c29fbc09047e8185c146a05564dce7916829c",
|
||||
"fundingTransferTxHash": "0x65f8d2e15556c26b46dd7323a90cb174279fc6bd0e7002a868553dc990bfa656",
|
||||
"amountInRaw": "1000000",
|
||||
"tokenIn": "WALL",
|
||||
"tokenOut": "AUSDC",
|
||||
"executor": "DODO_DVM.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on ALL Mainnet DODO PMM WALL/AUSDC."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "651940-uniswap_v2-wall-ausdc",
|
||||
"generatedAt": "2026-04-29T04:41:13.993Z",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x0b76149f25e36919637fbeab10056e45d8ab7757454174966842c3f52f53dd5c",
|
||||
"approvalTxHash": "0xc33d872d15628cfe521552ccc9a4b908f31df59189764468775b4557826514b6",
|
||||
"amountInRaw": "1000000",
|
||||
"tokenIn": "WALL",
|
||||
"tokenOut": "AUSDC",
|
||||
"executor": "UniswapV2Router.swapExactTokensForTokens"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on ALL Mainnet Uniswap V2 WALL/AUSDC."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "651940-dodo_pmm-wall-ausdt",
|
||||
"generatedAt": "2026-04-30T06:58:00Z",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x6b74c3b6816eb67409268a6e3b108fd631d278baf0fd57524a63c60c995bded3",
|
||||
"fundingTransferTxHash": "0x2e1540c484abac9049e383a16fc35a5b6b81a33bd70183b80b20f94533dbe141",
|
||||
"amountInRaw": "1000000",
|
||||
"tokenIn": "WALL",
|
||||
"tokenOut": "AUSDT",
|
||||
"executor": "DODO_DVM.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on ALL Mainnet DODO PMM WALL/AUSDT."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "137-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-29T04:41:13.993Z",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x4f68cdb0502b0fd50602013e54cbf898556a5c1181d8009f9b0c166dfccf5ce7",
|
||||
"fundingTransferTxHash": "0x2b2721dd505f82488b05f32810f7e94b3a712e9b459b638be9b8ea34c20925d9",
|
||||
"amountInRaw": "1",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "DODO_DVM.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on Polygon DODO PMM cWUSDC/USDC."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "137-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-29T04:41:13.993Z",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x9c946c7c912e2eabe960c752041b533948e85e2a1603c80de80c5b0ee447908d",
|
||||
"fundingTransferTxHash": "0xcac8b9187325869f164f6b7cd5464fcf46dce6be83ef04d760e7ecc21de7d40d",
|
||||
"amountInRaw": "1",
|
||||
"tokenIn": "cWUSDT",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "DODO_DVM.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on Polygon DODO PMM cWUSDT/USDT."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "651940-uniswap_v2-usdt-ausdc",
|
||||
"generatedAt": "2026-04-30T07:30:00Z",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0xa5479400c203922b0e29a4c438daeeeef6f99b847d617f029e7978c1beba6b2b",
|
||||
"approvalTxHash": "0xe4e73ff7d9c4a998e4cca1fcbf847d351171c0c026b11e798a0c1dc2bb6b4f12",
|
||||
"fundingSwapTxHash": "0x39bddcca6160e2df5c7595350f9d911c73e0e7bfe59595fae2c3248576962d5b",
|
||||
"fundingApprovalTxHash": "0x238bae3818d16a95711c19657dbd08bc076ef3fde7fedb7291ed514d2e090684",
|
||||
"amountInRaw": "1000000",
|
||||
"tokenIn": "USDT",
|
||||
"tokenOut": "AUSDC",
|
||||
"executor": "UniswapV2Router.swapExactTokensForTokens"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on ALL Mainnet Uniswap V2 USDT/AUSDC after acquiring USDT inventory via AUSDC/USDT."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "651940-uniswap_v2-wall-usdt",
|
||||
"generatedAt": "2026-04-30T07:30:00Z",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x7b6a3d5dedc775e9b0f73de4e0a89bdd004f82c451d7cccf1e2178e5893d487c",
|
||||
"approvalTxHash": "0xdd7985b4535915523831f989e054e6333af6b84e589c67791e73cce7acbff6a6",
|
||||
"amountInRaw": "1000000",
|
||||
"tokenIn": "WALL",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "UniswapV2Router.swapExactTokensForTokens"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on ALL Mainnet Uniswap V2 WALL/USDT."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "42220-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T00:00:00.000-07:00",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x32d3869f987d558e392fd01aab77968d9cad1d90da71be1db90061f58d5c14b1",
|
||||
"fundingTransferTxHash": "0x8ecd2a68f5dc3f2ab471ccc7ea8fdce16064029b6792bce7a387d943326fa1d6",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "DODO_DVM.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on Celo DODO PMM cWUSDC/USDC after deployer-funded seed liquidity."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "42220-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T00:00:00.000-07:00",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x0498a0484f6707e0f8019b8803a8aed932f33f587a57186cc37bcdc594393094",
|
||||
"fundingTransferTxHash": "0xd4182a6e116df30544097851892f379d67af2b33fc2374bb0204a6450dcecea4",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDT",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "DODO_DVM.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Tiny live canary swap executed on Celo DODO PMM cWUSDT/USDT after deployer-funded seed liquidity."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "56-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x85a62d3d5b23878ec17a6fa7b89e7f8218970cae7a99a9b4b7fd4bd9756e70ea",
|
||||
"fundingTransferTxHash": "0x86081d0142d9d35062873599754cd7ea70f02449c002fa4f94f5673cccafdc6c",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "56-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x4a1373fb637f26bb2e9e1f05db333081ec9beeb70d03f7085c57700902ab41e3",
|
||||
"fundingTransferTxHash": "0xb4b952d588be03f8a59bfb38cc71311d2191de86373f59248b11f9b9c59bf1bc",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDT",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "8453-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0xe1fd7a1268cbb205ef3f47cc730cc1a06b5b81f491fc86ad6a2c7cef355c0752",
|
||||
"fundingTransferTxHash": "0xe2ffeff928685f8fc4c050e0c6736d10c0ea48a65d65fe7c2ea560b3729ce5b8",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "8453-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x6c9e3129cd8b9f81022b27160e3bbce828f033afb40b670742318df67b309126",
|
||||
"fundingTransferTxHash": "0xa6b837616c42073f6afb85bc0a6a4cab77dfe1e3925fd5bfbe7d1a92c31c4f57",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDT",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "42161-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0xb27ffc20e1b993751342d7a76da70c1ec6190a4f67f52313b36beb0e9d49a12a",
|
||||
"fundingTransferTxHash": "0x6cbeec16f67bb92df6bfbe0659c3d6098c96bd32b5917d001fb53587fa988d8a",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDT",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "43114-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0xfdbea3b4a196335b0b128befbd43a17916f2ec95787ab99651cbfd355e2bd2e5",
|
||||
"fundingTransferTxHash": "0x4bafb7ecf6988bac594860bb9d2f33030557b467d09c371033ae4f4867469550",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "43114-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x6aa323b5d4abae31ef13f2d01972725fa8c939aee9fbd8326aad4910e3a33c91",
|
||||
"fundingTransferTxHash": "0x8f1d905595aa540e32bcefd03a146dca39bce6aafe6d14d5b6731c583cb922f6",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDT",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "25-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x3d4fbd2ffdec9b2402cfa391b49dab9918ed30def3cd6edc43e4d6cae502df72",
|
||||
"fundingTransferTxHash": "0x539702d9d5808c579023bc52f54bacb0327d886b6f969ae5d2830bd286749692",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "25-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0xd97ce616c7074301d66163a880798bf6a2165140320ccc440f80581972915fe0",
|
||||
"fundingTransferTxHash": "0x3beff83366f24ba3fa0cec70aaae08b3edce1d1e8d56a9fbd094de97d5d653e7",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDT",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "100-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0xc63f257b2dc91621c4a260af3b88068ae92d2390cbbf44b4a971551b4b8b1c21",
|
||||
"fundingTransferTxHash": "0x4c2bfe8c3cbe4d35121489448fd93d7d61e48812574485c0a4afe3aff4e7522e",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "100-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T09:05:02.700Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x29538d2cbd34b2f726fa8f696037dd176e0c463d7cc98ee6d4686182b0602b7d",
|
||||
"fundingTransferTxHash": "0x864c92f1ef26b949d6ad4178e063846bf9c85bb9d5d516de4e63e2afb147fc48",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDT",
|
||||
"tokenOut": "USDT",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "1-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T09:15:42.476Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0xb485735ec59594e7a83d91feb98350cac490d28b0fc0418674d29e64dd93f0a5",
|
||||
"fundingTransferTxHash": "0x80b2e141625a78c870ad80875ccc3fab0aa3d4ed6b64e324239fc9b30caed54c",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "1-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T09:15:42.476Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "quote_to_base",
|
||||
"txHash": "0x6407c89bed9b1631a793c63e0a1f17d8be994eda7b56dbc25b94377df4dada9a",
|
||||
"fundingTransferTxHash": "0x829936195c802b93b385fb9bb1c75ed3e657319a7e89433a1e9e2581761b49ea",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "USDT",
|
||||
"tokenOut": "cWUSDT",
|
||||
"executor": "MockDVMPool.transfer_then_sellQuote"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool reverse canary swap executed after replacing nonstandard DODO surface; quote-to-base path avoids mainnet USDT non-standard transfer return behavior on sellBase."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "42161-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T11:18:00.000Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"status": "production",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x1c8aee3f0a3d7c3dfd1c53471b65a56fe34d514b84721fef2eafd40581259997",
|
||||
"fundingTransferTxHash": "0x020a5c922757816f82542cd0d0e623b8120db9b2816de528b110854d3164cd9f",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "DODO_DVM.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Official DODO DVM canary swap executed after DODOAtomicSeeder funding."
|
||||
]
|
||||
},
|
||||
{
|
||||
"poolId": "10-dodo_pmm-cwusdc-usdc",
|
||||
"generatedAt": "2026-04-30T09:24:25.038Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "base_to_quote",
|
||||
"txHash": "0x8b27405ff031288cb8f298309b10742efc844ab22d515c731a61c0e7054295e9",
|
||||
"fundingTransferTxHash": "0xf7f089b5e1aa6b52f414de874ebd94f6f7b23da1dfc9158e9da63b21ea9aa10c",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "cWUSDC",
|
||||
"tokenOut": "USDC",
|
||||
"executor": "MockDVMPool.transfer_then_sellBase"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool canary swap executed on Optimism after replacing nonstandard DODO surface."
|
||||
],
|
||||
"status": "production"
|
||||
},
|
||||
{
|
||||
"poolId": "10-dodo_pmm-cwusdt-usdt",
|
||||
"generatedAt": "2026-04-30T09:36:38.117Z",
|
||||
"sourceFile": "config/all-mainnet-canary-evidence.json",
|
||||
"canaryTransactions": [
|
||||
{
|
||||
"direction": "quote_to_base",
|
||||
"txHash": "0xf3244685f8e0a0704d549a2bf9a980380c5fb06611e1765e77caf1a62238b506",
|
||||
"fundingTransferTxHash": "0xdb912224b13137710b1723ff3b5fc9c7b752a642ffc1fc4a9e1a277a0bedf147",
|
||||
"amountInRaw": "100",
|
||||
"tokenIn": "USDT",
|
||||
"tokenOut": "cWUSDT",
|
||||
"executor": "MockDVMPool.transfer_then_sellQuote"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"Replacement pool reverse canary swap executed on Optimism after retained seed remediation and successful buyShares."
|
||||
],
|
||||
"status": "production"
|
||||
}
|
||||
]
|
||||
}
|
||||
147
config/all-mainnet-enhanced-router-deployment.json
Normal file
147
config/all-mainnet-enhanced-router-deployment.json
Normal file
@@ -0,0 +1,147 @@
|
||||
{
|
||||
"name": "ALL Mainnet Enhanced Router Deployment Evidence",
|
||||
"version": "0.1.0",
|
||||
"generatedAt": "2026-04-29T05:52:00Z",
|
||||
"chainId": 651940,
|
||||
"network": "ALL Mainnet (Alltra)",
|
||||
"evmVersion": "paris",
|
||||
"reason": "ALL Mainnet RPC/runtime rejected Cancun bytecode with BadInstruction; Paris bytecode was used for live deployment.",
|
||||
"deployer": "0x4A666F96fC8764181194447A7dFdb7d471b301C8",
|
||||
"contracts": {
|
||||
"dodoPmmProvider": {
|
||||
"address": "0x36F65027D21e151F0b7810bae1E94b225AC7Ba9e",
|
||||
"transactionHash": "0xd2e69b556e84786338fd526ba149d1f88488a07190d081f935d7fffbe9d1b2e0",
|
||||
"constructorArgs": {
|
||||
"dodoPmmIntegration": "0x8528E268F3b8C94208d09D131ACa3Ea93Bad57c7",
|
||||
"admin": "0x4A666F96fC8764181194447A7dFdb7d471b301C8"
|
||||
}
|
||||
},
|
||||
"enhancedSwapRouterV2": {
|
||||
"address": "0xb905fEfA56b028221E2Bc248Bbcd41141dc7aeD3",
|
||||
"transactionHash": "0x2c5d409b6e06cbfb69d8e251240d830d624625a4d505cc963edb65b55623bc79",
|
||||
"constructorArgs": {
|
||||
"weth": "0x798F6762BB40d6801A593459d08F890603D3979C",
|
||||
"usdt": "0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e",
|
||||
"usdc": "0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881",
|
||||
"daiSlot": "0x015B1897Ed5279930bC2Be46F661894d219292A6",
|
||||
"daiSlotNote": "AUSDT is used as the third stablecoin slot for ALL Mainnet; no canonical ALL DAI token is committed."
|
||||
}
|
||||
},
|
||||
"intentBridgeCoordinatorV2": {
|
||||
"address": "0x9276ae27d9c624B43dbE43494f34A9c5F0233a0B",
|
||||
"transactionHash": "0x5695b3f9ec59e09d5e4f8569ea8af31578ced0a56aba885a7c475a5187aadd3d"
|
||||
},
|
||||
"adapters": {
|
||||
"dodo": {
|
||||
"address": "0x391D192BED6188c4DaB4C93c078bD18432687474",
|
||||
"transactionHash": "0xc4a036a6fff5eb9886e797559017cf8709505d13f39f5feddf055967cf9b4648",
|
||||
"enabled": true
|
||||
},
|
||||
"dodoV3": {
|
||||
"address": "0x97Ce874142625134aEEBDF42B5E7bB806e731D25",
|
||||
"transactionHash": "0x5ad21f59b823adbc2cebc1e9c45ab3f8f0f1286e46a290c09c0667f499577136",
|
||||
"enabled": false
|
||||
},
|
||||
"uniswapV3": {
|
||||
"address": "0xBF75F3401de20bebBB1CBb678499941807E3E040",
|
||||
"transactionHash": "0x081b86cc99306e694ef9daa3d3f9dc7f35ce91dce08c57ddaedcdd4b9a00008d",
|
||||
"enabled": false
|
||||
},
|
||||
"balancer": {
|
||||
"address": "0xDE7F15AF1D84e3694f7E966293d20e64Fc04d9fF",
|
||||
"transactionHash": "0xa4f30c029fa062ae1b481786950ab0243541ce5b0b859fc534b55f7b444ba83c",
|
||||
"enabled": false
|
||||
},
|
||||
"curve": {
|
||||
"address": "0x753D2b0a723992D7B174D6e19F7b7Cb74be8D61a",
|
||||
"transactionHash": "0xcdf0ff9723aedab96aeaa0b8f57f25ad6075f9467e0d19f3b842fb17c0bb6a79",
|
||||
"enabled": false
|
||||
},
|
||||
"oneInch": {
|
||||
"address": "0x487090bbb7d17875281692d582a11B445b3A7AC7",
|
||||
"transactionHash": "0x4d0dd682b8e22812a258fee497c07e5cecfbc1228f413e67d9fe7b24f327a926",
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"routes": [
|
||||
{
|
||||
"poolId": "651940-dodo_pmm-wall-ausdc",
|
||||
"provider": "dodo",
|
||||
"tokenA": {
|
||||
"symbol": "WALL",
|
||||
"address": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4"
|
||||
},
|
||||
"tokenB": {
|
||||
"symbol": "AUSDC",
|
||||
"address": "0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881"
|
||||
},
|
||||
"poolAddress": "0x7b81Dad382BBB57e91a80389bA48e41Abd10794F",
|
||||
"status": "quoteable",
|
||||
"verification": {
|
||||
"amountInRaw": "1000000",
|
||||
"amountOutRaw": "1999999",
|
||||
"slippageBps": 30,
|
||||
"routerQuoteExecutable": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"poolId": "651940-dodo_pmm-wall-ausdt",
|
||||
"provider": "dodo",
|
||||
"tokenA": {
|
||||
"symbol": "WALL",
|
||||
"address": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4"
|
||||
},
|
||||
"tokenB": {
|
||||
"symbol": "AUSDT",
|
||||
"address": "0x015B1897Ed5279930bC2Be46F661894d219292A6"
|
||||
},
|
||||
"poolAddress": "0x8D9bB238B6a76a438B116Ff22F5F7535191D49b4",
|
||||
"status": "quoteable",
|
||||
"verification": {
|
||||
"amountInRaw": "1000000",
|
||||
"amountOutRaw": "1999999",
|
||||
"slippageBps": 30,
|
||||
"routerQuoteExecutable": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"providerStatus": {
|
||||
"enabled": [
|
||||
"dodo"
|
||||
],
|
||||
"disabled": [
|
||||
"dodoV3",
|
||||
"uniswapV3",
|
||||
"balancer",
|
||||
"curve",
|
||||
"oneInch",
|
||||
"partner"
|
||||
]
|
||||
},
|
||||
"remainingOptionalBlockers": [
|
||||
"HYDX-native router/factory is not deployed or not committed in inventory.",
|
||||
"Uniswap V3 factory/router/quoter/pool stack is not deployed or not committed in inventory."
|
||||
],
|
||||
"disabledRoutes": [
|
||||
{
|
||||
"poolId": "651940-dodo_pmm-wall-usdt",
|
||||
"provider": "dodo",
|
||||
"tokenA": {
|
||||
"symbol": "WALL",
|
||||
"address": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4"
|
||||
},
|
||||
"tokenB": {
|
||||
"symbol": "USDT",
|
||||
"address": "0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e"
|
||||
},
|
||||
"poolAddress": "0x261D7e1447EE88398B2b5a274D49454F5B86800E",
|
||||
"status": "disabled_wrong_quote_asset",
|
||||
"reason": "AUSDT is the canonical ALL Mainnet cUSDT surface for this routing set.",
|
||||
"disabledTransactions": [
|
||||
"0x79f171ddc9977e99bb894bf7ff7a11a430441cc1285e7ecd747907ef3f23a0c4",
|
||||
"0xec74f92e287cf1e193e791462f66b35cf9487ece8e343108fbdd3de760dc5c55"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
10328
config/all-mainnet-pool-creation-matrix.json
Normal file
10328
config/all-mainnet-pool-creation-matrix.json
Normal file
File diff suppressed because it is too large
Load Diff
68
config/all-mainnet-uniswap-v3-deployment.json
Normal file
68
config/all-mainnet-uniswap-v3-deployment.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"generatedAt": "2026-04-29T06:18:00Z",
|
||||
"chainId": 651940,
|
||||
"deployer": "0x4A666F96fC8764181194447A7dFdb7d471b301C8",
|
||||
"fee": 3000,
|
||||
"tokens": {
|
||||
"WETH": "0x798F6762BB40d6801A593459d08F890603D3979C",
|
||||
"WALL": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4",
|
||||
"AUSDT": "0x015B1897Ed5279930bC2Be46F661894d219292A6",
|
||||
"token0": "0x015B1897Ed5279930bC2Be46F661894d219292A6",
|
||||
"token1": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4"
|
||||
},
|
||||
"contracts": {
|
||||
"nftDescriptorLibrary": "0xb53E8A0A19fB381537c6f28D37b7C2f7DC29EF02",
|
||||
"nonfungibleTokenPositionDescriptor": "0x2a76C73458A0C11df4e0E43004598480d6D1E768",
|
||||
"factory": "0xF1a334465C5DD628492780B39Be68D561A9AecA2",
|
||||
"swapRouter": "0xe9Ea1B70803c18C4CEb8839D5D68681c7903511B",
|
||||
"quoter": "0x0ecC56077325863c80cbe516D63e0afAFf7EA579",
|
||||
"quoterV2": "0x024Ff178BaB7e6fa1794c3A216D2B299C3F295d2",
|
||||
"nonfungiblePositionManager": "0xD29422211e1f2C1015FBb5dC2004657Dd8318aF6",
|
||||
"pool": "0x9e0FC06BA367b51a0aBc5c0924306088DBB0e9c4"
|
||||
},
|
||||
"transactions": {
|
||||
"nftDescriptorLibrary": "0x774202382ec2d29cced671b34c2b951682f60d3e60afd7fe64c13488cb341e32",
|
||||
"nonfungibleTokenPositionDescriptor": "0xc6b98fc36e4c3b1d4d2e80efd4acacc31e2af2ff45de04f9fb066dcfffd380d3",
|
||||
"factory": "0xb6e46b6d145cc707f12f4cf8980bf81d7b5b8d3bea9416737a7465c186b0fefd",
|
||||
"swapRouter": "0x5fd7d021e8ac1bad918a1eb470a116f9dc6e750c102a5512e05391858296cc53",
|
||||
"quoter": "0x0d5c14d3264c5abd70990349911a6eb3076f41feb2db93ccf74b2de022cd087f",
|
||||
"quoterV2": "0x774327c7e7a7650fbfd9d28a8becbd88f86eb8f942a825980052bc50484aa54c",
|
||||
"nonfungiblePositionManager": "0xe5be3fa83bd676051e2cc5ff990768d3de87e49a387d94be77352eaf1c38545f"
|
||||
},
|
||||
"poolState": {
|
||||
"sqrtPriceX96": "79228162514264337593543950336",
|
||||
"tick": 0,
|
||||
"liquidity": "1000000000000000000"
|
||||
},
|
||||
"name": "ALL Mainnet Uniswap V3 Deployment Evidence",
|
||||
"version": "0.1.0",
|
||||
"network": "ALL Mainnet (Alltra)",
|
||||
"evmVersion": "upstream-uniswap-artifacts-solc-0.7.x",
|
||||
"packageSources": {
|
||||
"v3Core": "@uniswap/v3-core@1.0.1",
|
||||
"v3Periphery": "@uniswap/v3-periphery@1.4.4",
|
||||
"swapRouterContracts": "@uniswap/swap-router-contracts@1.3.1"
|
||||
},
|
||||
"poolStateAfterRouterSwap": {
|
||||
"testedAt": "2026-04-29T06:17:00Z",
|
||||
"swapRouter": "0xe9Ea1B70803c18C4CEb8839D5D68681c7903511B",
|
||||
"direction": "WALL_TO_AUSDT",
|
||||
"amountInRaw": "1000000",
|
||||
"amountOutRaw": "996999",
|
||||
"approveTxHash": "0x572d1c6b2d0cdf6248913cd995e80196fbe0717017411c2251637afbfa825e1f",
|
||||
"swapTxHash": "0xddf85aed18a6d872ac72d4f57b241e44946881e404f4f17cb7271180c8caa183",
|
||||
"gasUsed": "119111"
|
||||
},
|
||||
"enhancedRouterIntegration": {
|
||||
"enhancedSwapRouterV2": "0xb905fEfA56b028221E2Bc248Bbcd41141dc7aeD3",
|
||||
"routeConfigured": true,
|
||||
"providerEnabled": false,
|
||||
"providerDisabledReason": "Existing UniswapV3RouteExecutorAdapter uses staticcall into the official Uniswap Quoter; the upstream Quoter is callable directly but does not return through that adapter staticcall path. Standalone SwapRouter/Quoter/Pool stack is live; enhanced-router V3 provider remains disabled until adapter quote compatibility is fixed.",
|
||||
"routeSetTransactions": [
|
||||
"0xa40b24889ab3ad985936562ee3690dafd14bfb1676ff49806a6fcb45c7704ef5",
|
||||
"0x848fd6c7cedaebe7787c2f15a931b73afde709dac100cb745eab2d9eaa6da86c"
|
||||
],
|
||||
"providerEnableTxHash": "0x4b430081582e1f2db5fedc904b8e90e137480dcae2f1e0a41dd25490f05394c7",
|
||||
"providerDisableTxHash": "0x78b8ce4fdc296585ace36dd8c8318731cc5526115e712b14d1ad630c4f63aba6"
|
||||
}
|
||||
}
|
||||
27
config/all-mainnet-vault-assignments.example.json
Normal file
27
config/all-mainnet-vault-assignments.example.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"description": "Copy to config/all-mainnet-vault-assignments.json and replace placeholder addresses with approved per-role vaults/multisigs. The apply script refuses placeholders.",
|
||||
"defaultByRole": {
|
||||
"treasury_reserve": "0x0000000000000000000000000000000000000000",
|
||||
"bridge_liquidity": "0x0000000000000000000000000000000000000000",
|
||||
"protocol_adapter": "0x0000000000000000000000000000000000000000",
|
||||
"emergency_withdraw": "0x0000000000000000000000000000000000000000",
|
||||
"single_sided_inventory": "0x0000000000000000000000000000000000000000"
|
||||
},
|
||||
"byChain": {
|
||||
"651940": {
|
||||
"treasury_reserve": "0x0000000000000000000000000000000000000000",
|
||||
"bridge_liquidity": "0x0000000000000000000000000000000000000000",
|
||||
"protocol_adapter": "0x0000000000000000000000000000000000000000",
|
||||
"emergency_withdraw": "0x0000000000000000000000000000000000000000",
|
||||
"single_sided_inventory": "0x0000000000000000000000000000000000000000"
|
||||
}
|
||||
},
|
||||
"byPoolId": {
|
||||
"651940-uniswap_v2-wall-ausdc": {
|
||||
"treasury_reserve": "0x0000000000000000000000000000000000000000",
|
||||
"bridge_liquidity": "0x0000000000000000000000000000000000000000",
|
||||
"protocol_adapter": "0x0000000000000000000000000000000000000000",
|
||||
"emergency_withdraw": "0x0000000000000000000000000000000000000000"
|
||||
}
|
||||
}
|
||||
}
|
||||
20
config/all-mainnet-vault-assignments.json
Normal file
20
config/all-mainnet-vault-assignments.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"description": "Operational vault assignments generated from smom-dbis-138/.env public addresses. No private material is stored here.",
|
||||
"defaultByRole": {
|
||||
"treasury_reserve": "0x74eccf9affb0e0938c2168ebdf7ef63a26964483",
|
||||
"bridge_liquidity": "0x31884f84555210FFB36a19D2471b8eBc7372d0A8",
|
||||
"protocol_adapter": "0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965",
|
||||
"emergency_withdraw": "0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965",
|
||||
"single_sided_inventory": "0x31884f84555210FFB36a19D2471b8eBc7372d0A8"
|
||||
},
|
||||
"byChain": {
|
||||
"651940": {
|
||||
"treasury_reserve": "0x74eccf9affb0e0938c2168ebdf7ef63a26964483",
|
||||
"bridge_liquidity": "0x31884f84555210FFB36a19D2471b8eBc7372d0A8",
|
||||
"protocol_adapter": "0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965",
|
||||
"emergency_withdraw": "0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965",
|
||||
"single_sided_inventory": "0x31884f84555210FFB36a19D2471b8eBc7372d0A8"
|
||||
}
|
||||
},
|
||||
"byPoolId": {}
|
||||
}
|
||||
973
config/allmainnet-non-dodo-protocol-surface.json
Normal file
973
config/allmainnet-non-dodo-protocol-surface.json
Normal file
@@ -0,0 +1,973 @@
|
||||
{
|
||||
"name": "ALL Mainnet Non-DODO Protocol Surface",
|
||||
"version": "0.1.0",
|
||||
"updated": "2026-04-29",
|
||||
"chainId": 651940,
|
||||
"network": "ALL Mainnet (Alltra)",
|
||||
"status": "bridge_live_enhanced_router_partial_swap_inventory_published",
|
||||
"summary": {
|
||||
"bridgeOnlyLive": false,
|
||||
"sameChainSwapInventoryPublished": true,
|
||||
"notes": [
|
||||
"The Chain 138 <-> 651940 AlltraAdapter bridge is live.",
|
||||
"This file documents the known non-DODO Alltra protocol and token surface plus the committed same-chain inventory fragments that have real factory/router/pool addresses in config/all-mainnet-pool-creation-matrix.json.",
|
||||
"Same-chain inventory publication is partial: production routing remains gated by required vault assignments, funding, live reserve reads, and canary evidence.",
|
||||
"ALL Mainnet EnhancedSwapRouterV2 is deployed and DODO-backed routes are wired for the committed WALL/AUSDC and WALL/AUSDT DODO PMM pools; the earlier WALL/USDT route is disabled because AUSDT is the canonical ALL Mainnet cUSDT surface."
|
||||
]
|
||||
},
|
||||
"classificationFramework": {
|
||||
"category": [
|
||||
"tokenized-fiat",
|
||||
"stablecoin",
|
||||
"wrapped-native",
|
||||
"dex-token",
|
||||
"defi-token",
|
||||
"governance-token",
|
||||
"utility-token",
|
||||
"rwa-token",
|
||||
"commodity-token",
|
||||
"other"
|
||||
],
|
||||
"instrumentType": [
|
||||
"emoney",
|
||||
"deposit-token",
|
||||
"fiat-backed-stablecoin",
|
||||
"wrapped-native",
|
||||
"protocol-token",
|
||||
"governance-token",
|
||||
"utility-token",
|
||||
"other"
|
||||
],
|
||||
"backingAssets": [
|
||||
"cash",
|
||||
"cash-equivalents",
|
||||
"bank-deposits",
|
||||
"treasuries",
|
||||
"commodity-reserves",
|
||||
"protocol-utility",
|
||||
"native-gas-asset",
|
||||
"unknown"
|
||||
],
|
||||
"metadataDomains": [
|
||||
"backingMetadata",
|
||||
"bridgeMetadata",
|
||||
"cashMetadata",
|
||||
"commodityMetadata",
|
||||
"reserveMetadata",
|
||||
"securityMetadata",
|
||||
"settlementMetadata"
|
||||
],
|
||||
"notes": [
|
||||
"Use category for the broad asset bucket.",
|
||||
"Use instrumentType, issuerType, claimType, backingAssets, capabilities, and tags for legal, reserve, and integration semantics.",
|
||||
"Use cash only as a backing, redemption, or settlement asset descriptor; do not use cash as the token category unless the instrument is literally cash-equivalent legal tender.",
|
||||
"Use commodityMetadata only when the token directly references or is backed by a commodity reserve.",
|
||||
"Use securityMetadata for pause/admin/monitoring controls; unknown means not yet committed in this inventory, not absent on-chain.",
|
||||
"GRU tags use lowercase namespace:value strings and include the version, for example gru:v2."
|
||||
]
|
||||
},
|
||||
"documentedTokens": [
|
||||
{
|
||||
"symbol": "AUSDT",
|
||||
"address": "0x015B1897Ed5279930bC2Be46F661894d219292A6",
|
||||
"decimals": 18,
|
||||
"category": "tokenized-fiat",
|
||||
"instrumentType": "fiat-backed-stablecoin",
|
||||
"issuerType": "token-issuer-unverified",
|
||||
"currencyCode": "USD",
|
||||
"claimType": "claim-on-issuer-unverified",
|
||||
"settlementAssetClass": "fiat",
|
||||
"backingAssets": [
|
||||
"cash",
|
||||
"cash-equivalents"
|
||||
],
|
||||
"gruVersion": "v2",
|
||||
"gruFamilySymbol": "cAUSDT",
|
||||
"gruTransportRole": "all-mainnet-primary-surface",
|
||||
"tags": [
|
||||
"tokenized-fiat",
|
||||
"fiat:usd",
|
||||
"backing:cash",
|
||||
"backing:cash-equivalents",
|
||||
"gru:v2",
|
||||
"gru:m1",
|
||||
"gru:transport",
|
||||
"gru:all-mainnet",
|
||||
"gru:causdt-family"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "fiat-reserve-backed",
|
||||
"backingAssetClasses": [
|
||||
"cash",
|
||||
"cash-equivalents"
|
||||
],
|
||||
"backingVerificationStatus": "reserve-disclosure-not-committed",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "live-canonical-target",
|
||||
"bridgeKind": "AlltraAdapter",
|
||||
"sourceChainId": 138,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": "cUSDT",
|
||||
"sourceAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
|
||||
"destinationSymbol": "AUSDT",
|
||||
"destinationAddress": "0x015B1897Ed5279930bC2Be46F661894d219292A6",
|
||||
"adapterAddress": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc",
|
||||
"bridgeCanonicalAssetVersion": "gru-v2",
|
||||
"bridgeMirroredAssetVersion": "all-mainnet-surface"
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "reserve-and-redemption-asset-class",
|
||||
"currency": "USD",
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "issuer-or-bridge-reserve-unverified",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": null,
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "pending-disclosure",
|
||||
"riskTier": "policy-review-required",
|
||||
"registryStatus": "documented-surface-not-stablecoin-registry-entry"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "corridor-halt-required-for-issuer-bridge-or-peg-risk",
|
||||
"monitoring": [
|
||||
"peg-deviation",
|
||||
"bridge-health",
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "fiat",
|
||||
"settlementCurrency": "USD",
|
||||
"settlementFinalityDomain": "off-chain-regulated-ledger-or-issuer-domain",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": true,
|
||||
"redemptionPath": "issuer-or-bridge-redemption-unverified",
|
||||
"parRedemption": "unverified"
|
||||
},
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "USDT",
|
||||
"address": "0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e",
|
||||
"decimals": 18,
|
||||
"category": "tokenized-fiat",
|
||||
"instrumentType": "fiat-backed-stablecoin",
|
||||
"issuerType": "token-issuer-unverified",
|
||||
"currencyCode": "USD",
|
||||
"claimType": "claim-on-issuer-unverified",
|
||||
"settlementAssetClass": "fiat",
|
||||
"backingAssets": [
|
||||
"cash",
|
||||
"cash-equivalents"
|
||||
],
|
||||
"gruVersion": "v2",
|
||||
"gruFamilySymbol": "cUSDT",
|
||||
"gruTransportRole": "all-mainnet-usdt-surface",
|
||||
"tags": [
|
||||
"tokenized-fiat",
|
||||
"fiat:usd",
|
||||
"backing:cash",
|
||||
"backing:cash-equivalents",
|
||||
"gru:v2",
|
||||
"gru:m1",
|
||||
"gru:transport",
|
||||
"gru:all-mainnet",
|
||||
"gru:cusdt-family"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "fiat-reserve-backed",
|
||||
"backingAssetClasses": [
|
||||
"cash",
|
||||
"cash-equivalents"
|
||||
],
|
||||
"backingVerificationStatus": "reserve-disclosure-not-committed",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "documented-token-not-canonical-138-to-651940-target",
|
||||
"bridgeKind": "unknown-or-noncanonical",
|
||||
"sourceChainId": null,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": null,
|
||||
"sourceAddress": null,
|
||||
"destinationSymbol": "USDT",
|
||||
"destinationAddress": "0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e",
|
||||
"adapterAddress": null,
|
||||
"bridgeCanonicalAssetVersion": null,
|
||||
"bridgeMirroredAssetVersion": "all-mainnet-surface"
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "reserve-and-redemption-asset-class",
|
||||
"currency": "USD",
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "issuer-reserve-unverified",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": null,
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "pending-disclosure",
|
||||
"riskTier": "policy-review-required",
|
||||
"registryStatus": "documented-surface-not-stablecoin-registry-entry"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "corridor-halt-required-for-issuer-or-peg-risk",
|
||||
"monitoring": [
|
||||
"peg-deviation",
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "fiat",
|
||||
"settlementCurrency": "USD",
|
||||
"settlementFinalityDomain": "off-chain-issuer-domain",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": true,
|
||||
"redemptionPath": "issuer-redemption-unverified",
|
||||
"parRedemption": "unverified"
|
||||
},
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "USDC",
|
||||
"address": "0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881",
|
||||
"decimals": 18,
|
||||
"category": "tokenized-fiat",
|
||||
"instrumentType": "fiat-backed-stablecoin",
|
||||
"issuerType": "token-issuer-unverified",
|
||||
"currencyCode": "USD",
|
||||
"claimType": "claim-on-issuer-unverified",
|
||||
"settlementAssetClass": "fiat",
|
||||
"backingAssets": [
|
||||
"cash",
|
||||
"cash-equivalents"
|
||||
],
|
||||
"gruVersion": "v2",
|
||||
"gruFamilySymbol": "cUSDC",
|
||||
"gruTransportRole": "all-mainnet-usdc-surface",
|
||||
"tags": [
|
||||
"tokenized-fiat",
|
||||
"fiat:usd",
|
||||
"backing:cash",
|
||||
"backing:cash-equivalents",
|
||||
"gru:v2",
|
||||
"gru:m1",
|
||||
"gru:transport",
|
||||
"gru:all-mainnet",
|
||||
"gru:cusdc-family"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "fiat-reserve-backed",
|
||||
"backingAssetClasses": [
|
||||
"cash",
|
||||
"cash-equivalents"
|
||||
],
|
||||
"backingVerificationStatus": "reserve-disclosure-not-committed",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "live-canonical-target",
|
||||
"bridgeKind": "AlltraAdapter",
|
||||
"sourceChainId": 138,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": "cUSDC",
|
||||
"sourceAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
|
||||
"destinationSymbol": "USDC",
|
||||
"destinationAddress": "0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881",
|
||||
"adapterAddress": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc",
|
||||
"bridgeCanonicalAssetVersion": "gru-v2",
|
||||
"bridgeMirroredAssetVersion": "all-mainnet-surface"
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "reserve-and-redemption-asset-class",
|
||||
"currency": "USD",
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "issuer-or-bridge-reserve-unverified",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": null,
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "pending-disclosure",
|
||||
"riskTier": "policy-review-required",
|
||||
"registryStatus": "documented-surface-not-stablecoin-registry-entry"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "corridor-halt-required-for-issuer-bridge-or-peg-risk",
|
||||
"monitoring": [
|
||||
"peg-deviation",
|
||||
"bridge-health",
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "fiat",
|
||||
"settlementCurrency": "USD",
|
||||
"settlementFinalityDomain": "off-chain-regulated-ledger-or-issuer-domain",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": true,
|
||||
"redemptionPath": "issuer-or-bridge-redemption-unverified",
|
||||
"parRedemption": "unverified"
|
||||
},
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "WETH",
|
||||
"address": "0x798F6762BB40d6801A593459d08F890603D3979C",
|
||||
"decimals": 18,
|
||||
"category": "wrapped-native",
|
||||
"instrumentType": "wrapped-native",
|
||||
"issuerType": "wrapper-contract",
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"backingAssets": [
|
||||
"native-gas-asset"
|
||||
],
|
||||
"gruVersion": null,
|
||||
"tags": [
|
||||
"wrapped-native",
|
||||
"gas:eth",
|
||||
"all-mainnet"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "wrapped-native-escrow",
|
||||
"backingAssetClasses": [
|
||||
"native-gas-asset"
|
||||
],
|
||||
"backingVerificationStatus": "wrapper-contract-address-verified",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "mapped-138-to-651940",
|
||||
"bridgeKind": "AlltraAdapter",
|
||||
"sourceChainId": 138,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": "WETH9",
|
||||
"sourceAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
||||
"destinationSymbol": "WETH",
|
||||
"destinationAddress": "0x798F6762BB40d6801A593459d08F890603D3979C",
|
||||
"adapterAddress": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc"
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "none",
|
||||
"currency": null,
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "native-asset-wrapper-escrow",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": "wrapper-contract-balance",
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "contract-balance-verifiable-on-chain",
|
||||
"riskTier": "bridge-and-wrapper-risk",
|
||||
"registryStatus": "documented-token-surface"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "corridor-halt-required-for-bridge-or-wrapper-risk",
|
||||
"monitoring": [
|
||||
"bridge-health",
|
||||
"wrapper-contract-balance",
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"settlementCurrency": "ETH",
|
||||
"settlementFinalityDomain": "chain-finality",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": false,
|
||||
"redemptionPath": "unwrap-or-bridge-withdrawal",
|
||||
"parRedemption": "one-to-one-native-asset-when-wrapper-solvent"
|
||||
},
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "WALL",
|
||||
"address": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4",
|
||||
"decimals": 18,
|
||||
"category": "wrapped-native",
|
||||
"instrumentType": "wrapped-native",
|
||||
"issuerType": "wrapper-contract",
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"backingAssets": [
|
||||
"native-gas-asset"
|
||||
],
|
||||
"gruVersion": null,
|
||||
"tags": [
|
||||
"wrapped-native",
|
||||
"gas:all",
|
||||
"all-mainnet"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "wrapped-native-escrow",
|
||||
"backingAssetClasses": [
|
||||
"native-gas-asset"
|
||||
],
|
||||
"backingVerificationStatus": "wrapper-contract-address-verified",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "documented-all-mainnet-native-wrapper",
|
||||
"bridgeKind": "native-wrapper",
|
||||
"sourceChainId": 651940,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": "ALL",
|
||||
"sourceAddress": null,
|
||||
"destinationSymbol": "WALL",
|
||||
"destinationAddress": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4",
|
||||
"adapterAddress": null
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "none",
|
||||
"currency": null,
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "native-asset-wrapper-escrow",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": "wrapper-contract-balance",
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "contract-balance-verifiable-on-chain",
|
||||
"riskTier": "wrapper-risk",
|
||||
"registryStatus": "documented-token-surface"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "corridor-halt-required-for-wrapper-risk",
|
||||
"monitoring": [
|
||||
"wrapper-contract-balance",
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"settlementCurrency": "ALL",
|
||||
"settlementFinalityDomain": "chain-finality",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": false,
|
||||
"redemptionPath": "unwrap-to-native-all",
|
||||
"parRedemption": "one-to-one-native-asset-when-wrapper-solvent"
|
||||
},
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "HYDX",
|
||||
"address": "0x0d9793861AEB9244AD1B34375a83A6730F6AdD38",
|
||||
"decimals": 18,
|
||||
"category": "dex-token",
|
||||
"instrumentType": "protocol-token",
|
||||
"issuerType": "protocol",
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"backingAssets": [
|
||||
"protocol-utility"
|
||||
],
|
||||
"gruVersion": null,
|
||||
"tags": [
|
||||
"dex-token",
|
||||
"protocol:hydx",
|
||||
"all-mainnet"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "protocol-utility",
|
||||
"backingAssetClasses": [
|
||||
"protocol-utility"
|
||||
],
|
||||
"backingVerificationStatus": "not-reserve-backed",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "not-bridge-canonical-in-this-inventory",
|
||||
"bridgeKind": null,
|
||||
"sourceChainId": null,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": null,
|
||||
"sourceAddress": null,
|
||||
"destinationSymbol": "HYDX",
|
||||
"destinationAddress": "0x0d9793861AEB9244AD1B34375a83A6730F6AdD38",
|
||||
"adapterAddress": null
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "none",
|
||||
"currency": null,
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "none-protocol-token",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": null,
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "not-applicable",
|
||||
"riskTier": "protocol-token-risk",
|
||||
"registryStatus": "documented-token-surface"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "routing-halt-required-for-protocol-or-contract-risk",
|
||||
"monitoring": [
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes",
|
||||
"protocol-surface-confirmation"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"settlementCurrency": "HYDX",
|
||||
"settlementFinalityDomain": "chain-finality",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": false,
|
||||
"redemptionPath": "not-applicable",
|
||||
"parRedemption": "not-applicable"
|
||||
},
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "HYBX",
|
||||
"address": "0x1839f77eBed7F388c7035f7061B4B8Ef0E72317a",
|
||||
"decimals": 8,
|
||||
"category": "defi-token",
|
||||
"instrumentType": "protocol-token",
|
||||
"issuerType": "protocol",
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"backingAssets": [
|
||||
"protocol-utility"
|
||||
],
|
||||
"gruVersion": null,
|
||||
"tags": [
|
||||
"defi-token",
|
||||
"protocol:hybx",
|
||||
"all-mainnet"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "protocol-utility",
|
||||
"backingAssetClasses": [
|
||||
"protocol-utility"
|
||||
],
|
||||
"backingVerificationStatus": "not-reserve-backed",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "not-bridge-canonical-in-this-inventory",
|
||||
"bridgeKind": null,
|
||||
"sourceChainId": null,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": null,
|
||||
"sourceAddress": null,
|
||||
"destinationSymbol": "HYBX",
|
||||
"destinationAddress": "0x1839f77eBed7F388c7035f7061B4B8Ef0E72317a",
|
||||
"adapterAddress": null
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "none",
|
||||
"currency": null,
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "none-protocol-token",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": null,
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "not-applicable",
|
||||
"riskTier": "protocol-token-risk",
|
||||
"registryStatus": "documented-token-surface"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "routing-halt-required-for-protocol-or-contract-risk",
|
||||
"monitoring": [
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"settlementCurrency": "HYBX",
|
||||
"settlementFinalityDomain": "chain-finality",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": false,
|
||||
"redemptionPath": "not-applicable",
|
||||
"parRedemption": "not-applicable"
|
||||
},
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "CHT",
|
||||
"address": "0xE59Bb804F4884FcEA183a4A67B1bb04f4a4567bc",
|
||||
"decimals": 8,
|
||||
"category": "defi-token",
|
||||
"instrumentType": "utility-token",
|
||||
"issuerType": "protocol",
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"backingAssets": [
|
||||
"protocol-utility"
|
||||
],
|
||||
"gruVersion": null,
|
||||
"tags": [
|
||||
"defi-token",
|
||||
"utility-token",
|
||||
"protocol:cht",
|
||||
"all-mainnet"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "protocol-utility",
|
||||
"backingAssetClasses": [
|
||||
"protocol-utility"
|
||||
],
|
||||
"backingVerificationStatus": "not-reserve-backed",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "not-bridge-canonical-in-this-inventory",
|
||||
"bridgeKind": null,
|
||||
"sourceChainId": null,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": null,
|
||||
"sourceAddress": null,
|
||||
"destinationSymbol": "CHT",
|
||||
"destinationAddress": "0xE59Bb804F4884FcEA183a4A67B1bb04f4a4567bc",
|
||||
"adapterAddress": null
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "none",
|
||||
"currency": null,
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "none-utility-token",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": null,
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "not-applicable",
|
||||
"riskTier": "utility-token-risk",
|
||||
"registryStatus": "documented-token-surface"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "routing-halt-required-for-protocol-or-contract-risk",
|
||||
"monitoring": [
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"settlementCurrency": "CHT",
|
||||
"settlementFinalityDomain": "chain-finality",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": false,
|
||||
"redemptionPath": "not-applicable",
|
||||
"parRedemption": "not-applicable"
|
||||
},
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "AUDA",
|
||||
"address": "0x690740f055A41FA7669f5a379Bf71B0cDF353073",
|
||||
"decimals": 18,
|
||||
"category": "defi-token",
|
||||
"instrumentType": "protocol-token",
|
||||
"issuerType": "protocol",
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"backingAssets": [
|
||||
"protocol-utility"
|
||||
],
|
||||
"gruVersion": null,
|
||||
"tags": [
|
||||
"defi-token",
|
||||
"protocol:auda",
|
||||
"all-mainnet"
|
||||
],
|
||||
"backingMetadata": {
|
||||
"backingModel": "protocol-utility",
|
||||
"backingAssetClasses": [
|
||||
"protocol-utility"
|
||||
],
|
||||
"backingVerificationStatus": "not-reserve-backed",
|
||||
"overcollateralizationRequired": false
|
||||
},
|
||||
"bridgeMetadata": {
|
||||
"bridgeStatus": "not-bridge-canonical-in-this-inventory",
|
||||
"bridgeKind": null,
|
||||
"sourceChainId": null,
|
||||
"destinationChainId": 651940,
|
||||
"sourceSymbol": null,
|
||||
"sourceAddress": null,
|
||||
"destinationSymbol": "AUDA",
|
||||
"destinationAddress": "0x690740f055A41FA7669f5a379Bf71B0cDF353073",
|
||||
"adapterAddress": null
|
||||
},
|
||||
"cashMetadata": {
|
||||
"cashRole": "none",
|
||||
"currency": null,
|
||||
"cashBackingAssertedByRepo": false,
|
||||
"cashBackingEvidenceRef": null
|
||||
},
|
||||
"commodityMetadata": {
|
||||
"commodityBacked": false,
|
||||
"commodityType": null,
|
||||
"commodityUnit": null,
|
||||
"reserveLocationRef": null
|
||||
},
|
||||
"reserveMetadata": {
|
||||
"reserveModel": "none-protocol-token",
|
||||
"reserveDisclosureRef": null,
|
||||
"reserveAccountRef": null,
|
||||
"proofOfReserveRef": null,
|
||||
"reserveVerificationStatus": "not-applicable",
|
||||
"riskTier": "protocol-token-risk",
|
||||
"registryStatus": "documented-token-surface"
|
||||
},
|
||||
"securityMetadata": {
|
||||
"pauseAuthority": "unknown",
|
||||
"adminAuthority": "unknown",
|
||||
"upgradeability": "unknown",
|
||||
"keyManagement": "unknown",
|
||||
"emergencyHalt": "routing-halt-required-for-protocol-or-contract-risk",
|
||||
"monitoring": [
|
||||
"liquidity-depth",
|
||||
"contract-admin-changes"
|
||||
]
|
||||
},
|
||||
"settlementMetadata": {
|
||||
"settlementAssetClass": "crypto-native",
|
||||
"settlementCurrency": "AUDA",
|
||||
"settlementFinalityDomain": "chain-finality",
|
||||
"onChainFinality": "token-transfer-final-on-chain-651940-after-confirmation",
|
||||
"accountingEvidenceRequired": false,
|
||||
"redemptionPath": "not-applicable",
|
||||
"parRedemption": "not-applicable"
|
||||
},
|
||||
"status": "verified"
|
||||
}
|
||||
],
|
||||
"protocols": [
|
||||
{
|
||||
"name": "AlltraDEX / EnhancedSwapRouter",
|
||||
"family": "custom_router",
|
||||
"status": "partial_live_dodo_backed_router_deployed",
|
||||
"factoryAddress": null,
|
||||
"routerAddress": "0xb905fEfA56b028221E2Bc248Bbcd41141dc7aeD3",
|
||||
"coordinatorAddress": "0x9276ae27d9c624B43dbE43494f34A9c5F0233a0B",
|
||||
"providerAddress": "0x36F65027D21e151F0b7810bae1E94b225AC7Ba9e",
|
||||
"adapters": {
|
||||
"dodo": "0x391D192BED6188c4DaB4C93c078bD18432687474",
|
||||
"dodoV3": "0x97Ce874142625134aEEBDF42B5E7bB806e731D25",
|
||||
"uniswapV3": "0xBF75F3401de20bebBB1CBb678499941807E3E040",
|
||||
"balancer": "0xDE7F15AF1D84e3694f7E966293d20e64Fc04d9fF",
|
||||
"curve": "0x753D2b0a723992D7B174D6e19F7b7Cb74be8D61a",
|
||||
"oneInch": "0x487090bbb7d17875281692d582a11B445b3A7AC7"
|
||||
},
|
||||
"enabledProviders": [
|
||||
"dodo"
|
||||
],
|
||||
"disabledProviders": [
|
||||
"dodoV3",
|
||||
"uniswapV3",
|
||||
"balancer",
|
||||
"curve",
|
||||
"oneInch",
|
||||
"partner"
|
||||
],
|
||||
"publishedRoutePoolIds": [
|
||||
"651940-dodo_pmm-wall-ausdc",
|
||||
"651940-dodo_pmm-wall-ausdt"
|
||||
],
|
||||
"deploymentEvidenceRef": "config/all-mainnet-enhanced-router-deployment.json",
|
||||
"notes": [
|
||||
"Documented in docs/11-references/ALL_MAINNET_ROUTING_ENGINE.md as the intended same-chain swap surface.",
|
||||
"EnhancedSwapRouterV2 is deployed on ALL Mainnet with DODO as the only enabled provider.",
|
||||
"Optional adapters were deployed for future wiring but are disabled until canonical provider targets and pools are committed.",
|
||||
"WALL/AUSDC and WALL/AUSDT are funded and quoteable through the router provider path; the earlier WALL/USDT route is disabled because AUSDT is the canonical quote asset."
|
||||
],
|
||||
"disabledRoutePoolIds": [
|
||||
"651940-dodo_pmm-wall-usdt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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 HYDX-native router inventory is currently committed.",
|
||||
"HYDX currently has committed same-chain exposure through the ALL Mainnet Uniswap V2 HYDX/WALL pool, not through a dedicated HYDX-native router surface."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Uniswap V2",
|
||||
"family": "uniswap_v2",
|
||||
"status": "partial_live_inventory_published",
|
||||
"factoryAddress": "0x3C3ED514691C06c89Bf6626B05D22991E8924c93",
|
||||
"routerAddress": "0xED04Ee8307C0656207AF5aFE3926AE2380052940",
|
||||
"inventoryRef": "config/all-mainnet-pool-creation-matrix.json",
|
||||
"publishedPoolIds": [
|
||||
"651940-uniswap_v2-wall-ausdc",
|
||||
"651940-uniswap_v2-wall-usdt",
|
||||
"651940-uniswap_v2-usdt-ausdc",
|
||||
"651940-uniswap_v2-hydx-wall"
|
||||
],
|
||||
"notes": [
|
||||
"Factory/router and multiple pair addresses are committed in config/all-mainnet-pool-creation-matrix.json.",
|
||||
"Required spend rows remain gated until vault assignments and canary evidence are recorded."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Uniswap V3",
|
||||
"family": "uniswap_v3",
|
||||
"status": "standalone_live_router_quoter_pool_deployed",
|
||||
"factoryAddress": "0xF1a334465C5DD628492780B39Be68D561A9AecA2",
|
||||
"routerAddress": "0xe9Ea1B70803c18C4CEb8839D5D68681c7903511B",
|
||||
"notes": [
|
||||
"Official Uniswap V3 factory, legacy SwapRouter, Quoter, QuoterV2, NonfungiblePositionManager, and AUSDT/WALL 0.30% pool are deployed on ALL Mainnet.",
|
||||
"The standalone SwapRouter path was tested with a tiny WALL -> AUSDT canary swap.",
|
||||
"EnhancedSwapRouterV2 route config was written, but provider 1 remains disabled because the current UniswapV3RouteExecutorAdapter staticcall quote path is incompatible with the upstream Quoter behavior."
|
||||
],
|
||||
"quoterAddress": "0x0ecC56077325863c80cbe516D63e0afAFf7EA579",
|
||||
"quoterV2Address": "0x024Ff178BaB7e6fa1794c3A216D2B299C3F295d2",
|
||||
"positionManagerAddress": "0xD29422211e1f2C1015FBb5dC2004657Dd8318aF6",
|
||||
"descriptorAddress": "0x2a76C73458A0C11df4e0E43004598480d6D1E768",
|
||||
"poolAddress": "0x9e0FC06BA367b51a0aBc5c0924306088DBB0e9c4",
|
||||
"inventoryRef": "config/all-mainnet-pool-creation-matrix.json",
|
||||
"deploymentEvidenceRef": "config/all-mainnet-uniswap-v3-deployment.json",
|
||||
"publishedPoolIds": [
|
||||
"651940-uniswap_v3-wall-ausdt"
|
||||
],
|
||||
"enhancedRouterProviderStatus": "disabled_adapter_quote_compatibility_pending"
|
||||
},
|
||||
{
|
||||
"name": "DODO PMM",
|
||||
"family": "dodo_pmm",
|
||||
"status": "partial_live_inventory_published",
|
||||
"factoryAddress": "0x8a3403aef8d40c0F4AfaF6Dc2000A537EbC863c2",
|
||||
"routerAddress": "0x8528E268F3b8C94208d09D131ACa3Ea93Bad57c7",
|
||||
"inventoryRef": "config/all-mainnet-pool-creation-matrix.json",
|
||||
"publishedPoolIds": [
|
||||
"651940-dodo_pmm-wall-ausdc",
|
||||
"651940-dodo_pmm-wall-ausdt"
|
||||
],
|
||||
"notes": [
|
||||
"DVM factory, DVM factory adapter, integration/router, and DODO PMM pool addresses are committed in config/all-mainnet-pool-creation-matrix.json; WALL/AUSDT supersedes the earlier WALL/USDT row for canonical spend routing.",
|
||||
"Required spend rows remain gated until vault assignments, funding, live reserve reads, and canary evidence are recorded."
|
||||
],
|
||||
"disabledPoolIds": [
|
||||
"651940-dodo_pmm-wall-usdt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"bridgeSurface": {
|
||||
"adapter": {
|
||||
"name": "AlltraAdapter",
|
||||
"address": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc",
|
||||
"status": "live"
|
||||
},
|
||||
"supportedBridgeAssets": [
|
||||
"cUSDC",
|
||||
"cUSDT"
|
||||
]
|
||||
},
|
||||
"nextTasks": [
|
||||
"Keep the disabled WALL/USDT row historical-only unless explicitly re-approved for USDT routing.",
|
||||
"Commit canonical factory/router metadata once a HYDX-native routing address is confirmed.",
|
||||
"Deploy or import canonical Uniswap V3 factory/router/quoter/pool inventory before enabling the ALL Mainnet Uniswap V3 adapter.",
|
||||
"Add pool-level addresses and verification artifacts before enabling public route generation from disabled optional protocol providers."
|
||||
]
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
166
config/dbis-ecosystem-master-plan-tracker.json
Normal file
166
config/dbis-ecosystem-master-plan-tracker.json
Normal 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."
|
||||
}
|
||||
]
|
||||
}
|
||||
21
config/dbis-institutional/registry/chain138-cusdc-v2.json
Normal file
21
config/dbis-institutional/registry/chain138-cusdc-v2.json
Normal 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"
|
||||
}
|
||||
21
config/dbis-institutional/registry/chain138-cusdt-v2.json
Normal file
21
config/dbis-institutional/registry/chain138-cusdt-v2.json
Normal 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"
|
||||
}
|
||||
37
config/elemental-imperium-network-registry.json
Normal file
37
config/elemental-imperium-network-registry.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
23
config/elemental-imperium-wallet-overlay.example.json
Normal file
23
config/elemental-imperium-wallet-overlay.example.json
Normal 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 0–10 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
|
||||
}
|
||||
}
|
||||
}
|
||||
62
config/extraction/additional-wallet-inventory.json
Normal file
62
config/extraction/additional-wallet-inventory.json
Normal 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
|
||||
}
|
||||
}
|
||||
62
config/extraction/additional-wallet-inventory.template.json
Normal file
62
config/extraction/additional-wallet-inventory.template.json
Normal 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
|
||||
}
|
||||
}
|
||||
55
config/extraction/mainnet-cwusdc-usdc-support-policy.json
Normal file
55
config/extraction/mainnet-cwusdc-usdc-support-policy.json
Normal 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."
|
||||
]
|
||||
}
|
||||
83
config/extraction/promod-uniswap-v2-liquidity-policy.json
Normal file
83
config/extraction/promod-uniswap-v2-liquidity-policy.json
Normal 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"
|
||||
]
|
||||
}
|
||||
}
|
||||
35
config/extraction/source-to-cex-production-policy.json
Normal file
35
config/extraction/source-to-cex-production-policy.json
Normal 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"
|
||||
}
|
||||
}
|
||||
52
config/generated-node-configs/config-1500.toml
Normal file
52
config/generated-node-configs/config-1500.toml
Normal 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
|
||||
52
config/generated-node-configs/config-1501.toml
Normal file
52
config/generated-node-configs/config-1501.toml
Normal 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
|
||||
52
config/generated-node-configs/config-1502.toml
Normal file
52
config/generated-node-configs/config-1502.toml
Normal 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
|
||||
52
config/generated-node-configs/config-1503.toml
Normal file
52
config/generated-node-configs/config-1503.toml
Normal 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
|
||||
52
config/generated-node-configs/config-1504.toml
Normal file
52
config/generated-node-configs/config-1504.toml
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
53
config/generated-node-configs/config-1509.toml
Normal file
53
config/generated-node-configs/config-1509.toml
Normal 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
|
||||
53
config/generated-node-configs/config-1510.toml
Normal file
53
config/generated-node-configs/config-1510.toml
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
16
config/generated-node-configs/service-1500.service
Normal file
16
config/generated-node-configs/service-1500.service
Normal 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
|
||||
16
config/generated-node-configs/service-1501.service
Normal file
16
config/generated-node-configs/service-1501.service
Normal 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
|
||||
16
config/generated-node-configs/service-1502.service
Normal file
16
config/generated-node-configs/service-1502.service
Normal 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
|
||||
16
config/generated-node-configs/service-1503.service
Normal file
16
config/generated-node-configs/service-1503.service
Normal 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
|
||||
16
config/generated-node-configs/service-1504.service
Normal file
16
config/generated-node-configs/service-1504.service
Normal 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
|
||||
16
config/generated-node-configs/service-1509.service
Normal file
16
config/generated-node-configs/service-1509.service
Normal 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
|
||||
16
config/generated-node-configs/service-1510.service
Normal file
16
config/generated-node-configs/service-1510.service
Normal 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
|
||||
13
config/gitea-workflow-templates/README.md
Normal file
13
config/gitea-workflow-templates/README.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Gitea Actions workflow templates
|
||||
|
||||
Copy one of these into **your repo** as `.gitea/workflows/<workflow-name>.yml`, then set repo **Secrets** in Gitea (`PHOENIX_DEPLOY_URL`, `PHOENIX_DEPLOY_TOKEN`).
|
||||
|
||||
| Template | Use when |
|
||||
|----------|----------|
|
||||
| [`deploy-via-phoenix-api.yml`](deploy-via-phoenix-api.yml) | App/service with a row in `phoenix-deploy-api/deploy-targets.json` |
|
||||
| [`validate-only.yml`](validate-only.yml) | Libraries/docs — CI gate only, no VM deploy |
|
||||
| **[`repos/`](repos/README.md)** | **Concrete YAML** for DBIS, CROMERO, CurrenciCombo — copy into those Gitea repos |
|
||||
|
||||
See [docs/04-configuration/GITEA_REPO_VM_CD_CI_MATRIX.md](../../docs/04-configuration/GITEA_REPO_VM_CD_CI_MATRIX.md) for repo ↔ VM mapping.
|
||||
|
||||
**Operator checklist:** [docs/00-meta/GITEA_CD_OPERATOR_CHECKLIST.md](../../docs/00-meta/GITEA_CD_OPERATOR_CHECKLIST.md).
|
||||
30
config/gitea-workflow-templates/deploy-via-phoenix-api.yml
Normal file
30
config/gitea-workflow-templates/deploy-via-phoenix-api.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
# Template — copy to YOUR_REPO/.gitea/workflows/<name>.yml and replace placeholders.
|
||||
# Secrets (repo settings): PHOENIX_DEPLOY_URL, PHOENIX_DEPLOY_TOKEN
|
||||
name: Deploy via Phoenix API
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Trigger Phoenix deployment
|
||||
env:
|
||||
PHOENIX_DEPLOY_URL: ${{ secrets.PHOENIX_DEPLOY_URL }}
|
||||
PHOENIX_DEPLOY_TOKEN: ${{ secrets.PHOENIX_DEPLOY_TOKEN }}
|
||||
TARGET: default
|
||||
run: |
|
||||
set -euo pipefail
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
REPO="${{ gitea.repository }}"
|
||||
curl -sSf -X POST "${PHOENIX_DEPLOY_URL}" \
|
||||
-H "Authorization: Bearer ${PHOENIX_DEPLOY_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"${REPO}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"${TARGET}\"}"
|
||||
14
config/gitea-workflow-templates/repos/README.md
Normal file
14
config/gitea-workflow-templates/repos/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Ready-to-copy workflows (repo-specific)
|
||||
|
||||
Copy the matching file into **that** Gitea repo as `.gitea/workflows/<name>.yml`, then set secrets **`PHOENIX_DEPLOY_URL`**, **`PHOENIX_DEPLOY_TOKEN`**.
|
||||
|
||||
| File | Gitea `repo` | `target` | Notes |
|
||||
|------|----------------|----------|--------|
|
||||
| [`dbis-portal-live.yml`](dbis-portal-live.yml) | `Gov_Web_Portals/DBIS` | `dbis-portal-live` | CT 7804 portal |
|
||||
| [`cromero-default.yml`](cromero-default.yml) | `d-bis/CROMERO` | `default` | NPM ecosystem build |
|
||||
| [`currencicombo-default.yml`](currencicombo-default.yml) | `d-bis/CurrenciCombo` | `default` | Phoenix CT 8604 |
|
||||
| — | `d-bis/explorer-monorepo` | `explorer-live` | Already in **explorer-monorepo** submodule: `.gitea/workflows/deploy-live.yml` |
|
||||
| — | `Gov_Web_Portals/CyberSecur-Global` | `default` | In **CyberSecur-Global** repo: `.gitea/workflows/deploy-to-ct7810.yml` |
|
||||
| — | `d-bis/cross-chain-pmm-lps` | _(validate only)_ | `.gitea/workflows/validate-capital-efficiency.yml` |
|
||||
|
||||
`d-bis/proxmox` uses monorepo workflows in-repo (no copy from here).
|
||||
23
config/gitea-workflow-templates/repos/cromero-default.yml
Normal file
23
config/gitea-workflow-templates/repos/cromero-default.yml
Normal file
@@ -0,0 +1,23 @@
|
||||
# Copy to d-bis/CROMERO → .gitea/workflows/deploy-via-phoenix.yml
|
||||
# Secrets: PHOENIX_DEPLOY_URL, PHOENIX_DEPLOY_TOKEN
|
||||
name: Deploy CROMERO (Phoenix)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
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\":\"d-bis/CROMERO\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}"
|
||||
@@ -0,0 +1,23 @@
|
||||
# Copy to d-bis/CurrenciCombo → .gitea/workflows/deploy-via-phoenix.yml
|
||||
# Secrets: PHOENIX_DEPLOY_URL, PHOENIX_DEPLOY_TOKEN
|
||||
name: Deploy CurrenciCombo (Phoenix)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
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\":\"d-bis/CurrenciCombo\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}"
|
||||
23
config/gitea-workflow-templates/repos/dbis-portal-live.yml
Normal file
23
config/gitea-workflow-templates/repos/dbis-portal-live.yml
Normal file
@@ -0,0 +1,23 @@
|
||||
# Copy to Gov_Web_Portals/DBIS → .gitea/workflows/deploy-portal-live.yml
|
||||
# Secrets: PHOENIX_DEPLOY_URL, PHOENIX_DEPLOY_TOKEN
|
||||
name: Deploy DBIS portal (Phoenix)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
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\":\"Gov_Web_Portals/DBIS\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"dbis-portal-live\"}"
|
||||
18
config/gitea-workflow-templates/validate-only.yml
Normal file
18
config/gitea-workflow-templates/validate-only.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
# Template — copy to YOUR_REPO/.gitea/workflows/validate.yml — adjust run steps.
|
||||
name: Validate
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, master]
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Placeholder validation
|
||||
run: |
|
||||
echo "Replace this step with repo-specific checks (e.g. npm test, forge test)."
|
||||
@@ -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}"
|
||||
|
||||
44
config/jurisdictions/catalog.v1.json
Normal file
44
config/jurisdictions/catalog.v1.json
Normal 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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
268
config/official-protocol-integration-sources.json
Normal file
268
config/official-protocol-integration-sources.json
Normal file
@@ -0,0 +1,268 @@
|
||||
{
|
||||
"schemaVersion": "1.0.0",
|
||||
"updated": "2026-04-30",
|
||||
"purpose": "Official-source registry for replacing temporary/replacement pools, wiring protocol-native liquidity, and deriving repeg/depth/unwind plans.",
|
||||
"guardrails": [
|
||||
"Use only official protocol documentation, official deployment registries, or protocol-maintained repositories as authority for factory/router/address imports.",
|
||||
"Do not treat replacement MockDVMPool contracts as final protocol-native liquidity.",
|
||||
"Prefer read-only discovery and dry-run plans before executing any pool migration, liquidity add, or unwind.",
|
||||
"For unsupported chains, mark protocol surface as unavailable rather than fabricating addresses.",
|
||||
"For aggregators such as 1inch, route execution must use the official API/router transaction data and chain allowlists; do not hard-code stale router addresses without a current official deployment source."
|
||||
],
|
||||
"protocols": {
|
||||
"dodo_pmm": {
|
||||
"officialSources": [
|
||||
{
|
||||
"label": "DODO docs: find all pools and DVM factory addresses",
|
||||
"url": "https://docs.dodoex.io/en/developer/data/how-to-find-all-the-dodo-pools",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "DODO docs: Ethereum contract addresses",
|
||||
"url": "https://docs.dodoex.io/en/developer/contracts/dodo-v1-v2/contracts-address/ethereum",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "DODO docs: Base contract addresses",
|
||||
"url": "https://docs.dodoex.io/en/developer/contracts/dodo-v1-v2/contracts-address/base",
|
||||
"retrievedAt": "2026-04-30"
|
||||
}
|
||||
],
|
||||
"poolDiscovery": {
|
||||
"factoryProfile": "dodo_v2_dvm_factory",
|
||||
"poolProfile": "dodo_v2_dvm",
|
||||
"factoryMethods": [
|
||||
"getDODOPool(address,address)",
|
||||
"getDODOPoolBidirection(address,address)",
|
||||
"getDODOPoolByUser(address)"
|
||||
],
|
||||
"birthEvent": "NewDVM(address baseToken,address quoteToken,address creator,address dvm)"
|
||||
},
|
||||
"chainFactories": {
|
||||
"1": {
|
||||
"network": "Ethereum Mainnet",
|
||||
"dvmFactory": "0x72d220cE168C4f361dD4deE5D826a01AD8598f6C",
|
||||
"source": "DODO docs"
|
||||
},
|
||||
"10": {
|
||||
"network": "Optimism",
|
||||
"dvmFactory": "0x2B800DC6270726F7E2266cE8cD5A3F8436fe0B40",
|
||||
"source": "DODO docs"
|
||||
},
|
||||
"56": {
|
||||
"network": "BSC (BNB Chain)",
|
||||
"dvmFactory": "0x790B4A80Fb1094589A3c0eFC8740aA9b0C1733fB",
|
||||
"source": "DODO docs"
|
||||
},
|
||||
"137": {
|
||||
"network": "Polygon",
|
||||
"dvmFactory": "0x79887f65f83bdf15Bcc8736b5e5BcDB48fb8fE13",
|
||||
"source": "DODO docs"
|
||||
},
|
||||
"42161": {
|
||||
"network": "Arbitrum One",
|
||||
"dvmFactory": "0xDa4c4411c55B0785e501332354A036c04833B72b",
|
||||
"source": "DODO docs"
|
||||
},
|
||||
"43114": {
|
||||
"network": "Avalanche C-Chain",
|
||||
"dvmFactory": "0xfF133A6D335b50bDAa6612D19E1352B049A8aE6a",
|
||||
"source": "DODO docs"
|
||||
},
|
||||
"8453": {
|
||||
"network": "Base",
|
||||
"dvmFactory": "0x0226fCE8c969604C3A0AD19c37d1FAFac73e13c2",
|
||||
"source": "DODO docs"
|
||||
}
|
||||
},
|
||||
"unsupportedOrUnverifiedChains": {
|
||||
"25": {
|
||||
"network": "Cronos",
|
||||
"status": "official_dodo_dvm_factory_not_committed"
|
||||
},
|
||||
"100": {
|
||||
"network": "Gnosis Chain",
|
||||
"status": "official_dodo_dvm_factory_not_committed"
|
||||
},
|
||||
"42220": {
|
||||
"network": "Celo",
|
||||
"status": "official_dodo_dvm_factory_not_committed"
|
||||
},
|
||||
"651940": {
|
||||
"network": "ALL Mainnet (Alltra)",
|
||||
"status": "not_official_dodo_chain_use_local_official_stack_or_custom_router"
|
||||
}
|
||||
}
|
||||
},
|
||||
"uniswap_v2": {
|
||||
"officialSources": [
|
||||
{
|
||||
"label": "Uniswap docs: V2 deployments",
|
||||
"url": "https://developers.uniswap.org/docs/protocols/v2/deployments",
|
||||
"retrievedAt": "2026-04-30"
|
||||
}
|
||||
],
|
||||
"poolDiscovery": {
|
||||
"factoryProfile": "uniswap_v2_factory",
|
||||
"routerProfile": "uniswap_v2_router02",
|
||||
"methods": [
|
||||
"getPair(address,address)",
|
||||
"createPair(address,address)"
|
||||
]
|
||||
}
|
||||
},
|
||||
"uniswap_v3": {
|
||||
"officialSources": [
|
||||
{
|
||||
"label": "Uniswap docs: V3 deployments",
|
||||
"url": "https://developers.uniswap.org/docs/protocols/v3/deployments",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "Uniswap governance: official deployment guideline",
|
||||
"url": "https://gov.uniswap.org/t/uniswap-deployment-guideline/25015",
|
||||
"retrievedAt": "2026-04-30"
|
||||
}
|
||||
],
|
||||
"poolDiscovery": {
|
||||
"factoryProfile": "uniswap_v3_factory",
|
||||
"routerProfile": "universal_router_or_swap_router02",
|
||||
"positionManagerProfile": "nonfungible_position_manager",
|
||||
"methods": [
|
||||
"getPool(address,address,uint24)",
|
||||
"createAndInitializePoolIfNecessary(address,address,uint24,uint160)"
|
||||
]
|
||||
}
|
||||
},
|
||||
"curve_stable": {
|
||||
"officialSources": [
|
||||
{
|
||||
"label": "Curve docs: deployment addresses",
|
||||
"url": "https://curve.readthedocs.io/ref-addresses.html",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "Curve technical docs",
|
||||
"url": "https://docs.curve.finance/",
|
||||
"retrievedAt": "2026-04-30"
|
||||
}
|
||||
],
|
||||
"poolDiscovery": {
|
||||
"factoryProfile": "curve_stableswap_factory",
|
||||
"notes": [
|
||||
"Use Curve registry/factory addresses per chain.",
|
||||
"Deposits and withdrawals may require zaps depending on pool type."
|
||||
]
|
||||
}
|
||||
},
|
||||
"balancer_weighted": {
|
||||
"officialSources": [
|
||||
{
|
||||
"label": "Balancer deployments repository",
|
||||
"url": "https://github.com/balancer/balancer-deployments",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "Balancer docs: Vault",
|
||||
"url": "https://balancer.gitbook.io/balancer-v2/products/the-vault",
|
||||
"retrievedAt": "2026-04-30"
|
||||
}
|
||||
],
|
||||
"poolDiscovery": {
|
||||
"vaultProfile": "balancer_vault",
|
||||
"factoryProfile": "weighted_pool_factory",
|
||||
"notes": [
|
||||
"Balancer pools are managed by the Vault; pool token balances and joins/exits must use Vault APIs."
|
||||
]
|
||||
}
|
||||
},
|
||||
"aave_backstop": {
|
||||
"officialSources": [
|
||||
{
|
||||
"label": "Aave address book repository",
|
||||
"url": "https://github.com/bgd-labs/aave-address-book",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "Aave V3 core repository",
|
||||
"url": "https://github.com/aave/aave-v3-core",
|
||||
"retrievedAt": "2026-04-30"
|
||||
}
|
||||
],
|
||||
"poolDiscovery": {
|
||||
"addressBookProfile": "bgd_labs_aave_address_book",
|
||||
"methods": [
|
||||
"POOL()",
|
||||
"POOL_ADDRESSES_PROVIDER()"
|
||||
]
|
||||
}
|
||||
},
|
||||
"oneinch_aggregator": {
|
||||
"officialSources": [
|
||||
{
|
||||
"label": "1inch aggregation protocol",
|
||||
"url": "https://1inch.io/aggregation-protocol/",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "1inch developer portal",
|
||||
"url": "https://portal.1inch.dev/",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "1inch Help Center: supported networks",
|
||||
"url": "https://help.1inch.com/en/articles/5528619-how-to-use-different-networks-on-1inch",
|
||||
"retrievedAt": "2026-04-30"
|
||||
},
|
||||
{
|
||||
"label": "1inch Business: Swap API supported chains",
|
||||
"url": "https://business.1inch.com/products/swap",
|
||||
"retrievedAt": "2026-04-30"
|
||||
}
|
||||
],
|
||||
"poolDiscovery": {
|
||||
"integrationProfile": "official_api_quote_and_router_tx_data",
|
||||
"notes": [
|
||||
"Use 1inch official API quote/swap response for current router tx data.",
|
||||
"Do not create pools; this protocol wires route access to external liquidity."
|
||||
]
|
||||
},
|
||||
"chainSupport": {
|
||||
"8453": {
|
||||
"network": "Base",
|
||||
"status": "supported_by_official_1inch_network_list",
|
||||
"source": "1inch Help Center / 1inch Business chain pages",
|
||||
"supportedUse": "aggregated quote and swap route access for cW*/official stable pairs; requires token import/listing or direct contract-address query."
|
||||
},
|
||||
"100": {
|
||||
"network": "Gnosis Chain",
|
||||
"status": "supported_by_official_1inch_network_list",
|
||||
"source": "1inch Help Center / 1inch Business chain pages",
|
||||
"supportedUse": "aggregated quote and swap route access for cW*/official stable pairs; requires token import/listing or direct contract-address query."
|
||||
},
|
||||
"25": {
|
||||
"network": "Cronos",
|
||||
"status": "supported_by_official_1inch_business_swap_list",
|
||||
"source": "1inch Business Swap API supported chains",
|
||||
"supportedUse": "aggregated quote and swap route access for cW*/official stable pairs; requires token import/listing or direct contract-address query."
|
||||
}
|
||||
}
|
||||
},
|
||||
"sushiswap_v2": {
|
||||
"officialSources": [
|
||||
{
|
||||
"label": "SushiSwap V2 core repository",
|
||||
"url": "https://github.com/sushiswap/v2-core",
|
||||
"retrievedAt": "2026-04-30"
|
||||
}
|
||||
],
|
||||
"poolDiscovery": {
|
||||
"factoryProfile": "sushiswap_v2_factory",
|
||||
"routerProfile": "sushiswap_v2_router",
|
||||
"notes": [
|
||||
"Official deployment-address source must be confirmed per chain before enabling rows."
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
41
config/op-stack-superchain/cache/standard-config-params-mainnet.toml
vendored
Normal file
41
config/op-stack-superchain/cache/standard-config-params-mainnet.toml
vendored
Normal 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
|
||||
8
config/op-stack-superchain/cache/standard-config-roles-mainnet.toml
vendored
Normal file
8
config/op-stack-superchain/cache/standard-config-roles-mainnet.toml
vendored
Normal 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"
|
||||
446
config/op-stack-superchain/cache/standard-versions-mainnet.toml
vendored
Normal file
446
config/op-stack-superchain/cache/standard-versions-mainnet.toml
vendored
Normal 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" }
|
||||
71903
config/pmm-soak-wallet-grid.json
Normal file
71903
config/pmm-soak-wallet-grid.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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,
|
||||
|
||||
116
config/public-routing-coverage-matrix.json
Normal file
116
config/public-routing-coverage-matrix.json
Normal 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"
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
160
config/solana-gru-bridge-lineup.json
Normal file
160
config/solana-gru-bridge-lineup.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
29
config/universal-resource-activation.manifest.v1.schema.json
Normal file
29
config/universal-resource-activation.manifest.v1.schema.json
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
69
config/universal-resource-activation.resource.v1.schema.json
Normal file
69
config/universal-resource-activation.resource.v1.schema.json
Normal 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
|
||||
}
|
||||
@@ -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)
|
||||
@@ -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.
|
||||
@@ -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."
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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).
|
||||
87
config/universal-resource-activation/manifest.json
Normal file
87
config/universal-resource-activation/manifest.json
Normal 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."
|
||||
}
|
||||
]
|
||||
}
|
||||
53
config/universal-resource-activation/policy-profiles.json
Normal file
53
config/universal-resource-activation/policy-profiles.json
Normal 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."
|
||||
}
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user