Compare commits
61 Commits
chore/igno
...
chore/expl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
207f088b39 | ||
|
|
240fec0c8e | ||
|
|
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 |
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=
|
||||
@@ -94,13 +100,66 @@ AZURE_STORAGE_CONTAINER=
|
||||
|
||||
# --- Blockchain / SMOM-DBIS-138 (use smom-dbis-138/.env for PRIVATE_KEY) ---
|
||||
PRIVATE_KEY=
|
||||
DEPLOYER_ADDRESS=
|
||||
RPC_URL_138=
|
||||
RPC_URL_138_PUBLIC=
|
||||
ETHEREUM_MAINNET_RPC=
|
||||
# Clear scripts/verify/check-external-dependencies.sh — use real service URLs when split; example interim health target:
|
||||
# DBIS_CORE_URL=https://dbis-api.d-bis.org/health
|
||||
DBIS_CORE_URL=
|
||||
CC_PAYMENT_ADAPTERS_URL=
|
||||
CC_AUDIT_LEDGER_URL=
|
||||
CC_SHARED_EVENTS_URL=
|
||||
CC_SHARED_SCHEMAS_URL=
|
||||
FIN_GATEWAY_URL=
|
||||
ALLIANCE_ACCESS_URL=
|
||||
# cast must be in PATH; use a runner-reachable Chain 138 RPC, e.g.:
|
||||
# CHAIN138_CI_RPC_URL=https://rpc.public-0138.defi-oracle.io
|
||||
CHAIN138_CI_RPC_URL=
|
||||
ALL_MAINNET_RPC=
|
||||
# Alltra / Wemix / Etherlink: set for production; for local read-only checks, deployer-gas-auto-route.sh falls back to public RPCs documented in scripts/deployment/deployer-gas-auto-route.sh
|
||||
CHAIN_651940_RPC_URL=
|
||||
# ALLTRA_MAINNET_RPC=https://mainnet-rpc.alltra.global
|
||||
# WEMIX_RPC_URL=https://api.wemix.com
|
||||
# ETHERLINK_RPC_URL=https://node.mainnet.etherlink.com
|
||||
CHAIN_1_UNISWAP_V2_FACTORY=0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
|
||||
CHAIN_1_UNISWAP_V2_ROUTER=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
|
||||
CHAIN_1_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_10_UNISWAP_V2_FACTORY=0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf
|
||||
CHAIN_10_UNISWAP_V2_ROUTER=0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2
|
||||
CHAIN_10_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_25_UNISWAP_V2_FACTORY=0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15
|
||||
CHAIN_25_UNISWAP_V2_ROUTER=0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae
|
||||
CHAIN_25_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_56_UNISWAP_V2_FACTORY=0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73
|
||||
CHAIN_56_UNISWAP_V2_ROUTER=0x10ED43C718714eb63d5aA57B78B54704E256024E
|
||||
CHAIN_56_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_100_UNISWAP_V2_FACTORY=0xc35DADB65012eC5796536bD9864eD8773aBc74C4
|
||||
CHAIN_100_UNISWAP_V2_ROUTER=0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
|
||||
CHAIN_100_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_137_UNISWAP_V2_FACTORY=0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32
|
||||
CHAIN_137_UNISWAP_V2_ROUTER=0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff
|
||||
CHAIN_137_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_42220_UNISWAP_V2_FACTORY=0x62d5b84bE28a183aBB507E125B384122D2C25fAE
|
||||
CHAIN_42220_UNISWAP_V2_ROUTER=0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121
|
||||
CHAIN_42220_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_43114_UNISWAP_V2_FACTORY=0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10
|
||||
CHAIN_43114_UNISWAP_V2_ROUTER=0x60aE616a2155Ee3d9A68541Ba4544862310933d4
|
||||
CHAIN_43114_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_8453_UNISWAP_V2_FACTORY=0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E
|
||||
CHAIN_8453_UNISWAP_V2_ROUTER=0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb
|
||||
CHAIN_8453_UNISWAP_V2_START_BLOCK=0
|
||||
CHAIN_42161_UNISWAP_V2_FACTORY=0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E
|
||||
CHAIN_42161_UNISWAP_V2_ROUTER=0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb
|
||||
CHAIN_42161_UNISWAP_V2_START_BLOCK=0
|
||||
# Optional / scaffold-only until Wemix UniV2 routing is promoted
|
||||
CHAIN_1111_UNISWAP_V2_FACTORY=
|
||||
CHAIN_1111_UNISWAP_V2_ROUTER=
|
||||
CHAIN_1111_UNISWAP_V2_START_BLOCK=0
|
||||
ETHERLINK_RPC_URL=
|
||||
TEZOS_RPC_URL=
|
||||
ETHERSCAN_API_KEY=
|
||||
WEMIXSCAN_API_KEY=
|
||||
ETHERLINK_CCIP_SELECTOR=
|
||||
TEZOS_BRIDGE_ENABLED=
|
||||
ETHERLINK_BRIDGE_ENABLED=
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
2. Make changes, ensure tests pass
|
||||
3. Open a pull request
|
||||
|
||||
Deploy workflow policy:
|
||||
`main` and `master` are both deploy-triggering branches, so `.gitea/workflow-sources/deploy-to-phoenix.yml` and `.gitea/workflow-sources/validate-on-pr.yml` must stay identical across both branches.
|
||||
Use `bash scripts/verify/sync-gitea-workflows.sh` after editing workflow-source files, and `bash scripts/verify/run-all-validation.sh --skip-genesis` to catch workflow drift before push.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
- Use the PR template when opening a PR
|
||||
|
||||
81
.gitea/workflow-sources/deploy-to-phoenix.yml
Normal file
81
.gitea/workflow-sources/deploy-to-phoenix.yml
Normal file
@@ -0,0 +1,81 @@
|
||||
# Canonical deploy workflow. Keep source and checked-in workflow copies byte-identical.
|
||||
# Validation checks both file sync and main/master parity.
|
||||
name: Deploy to Phoenix
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Fetch deploy branches for workflow parity check
|
||||
run: |
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
|
||||
if git remote | grep -qx gitea; then
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
|
||||
fi
|
||||
git fetch --depth=1 "$REMOTE" main master
|
||||
|
||||
- name: Run repo validation gate
|
||||
run: |
|
||||
bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
|
||||
deploy:
|
||||
needs: validate
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Trigger Phoenix deployment
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}"
|
||||
|
||||
deploy-atomic-swap-dapp:
|
||||
needs: validate
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Trigger Atomic Swap dApp deployment (Phoenix)
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"atomic-swap-dapp-live\"}"
|
||||
|
||||
# After app deploy, ask Phoenix to run path-gated Cloudflare DNS sync on the host that has
|
||||
# PHOENIX_REPO_ROOT + .env (not on this runner). Skips unless PHOENIX_CLOUDFLARE_SYNC=1 on that host.
|
||||
# continue-on-error: first-time or missing opt-in should not block the main deploy.
|
||||
cloudflare:
|
||||
needs:
|
||||
- deploy
|
||||
- deploy-atomic-swap-dapp
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Request Cloudflare DNS sync (Phoenix)
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"cloudflare-sync\"}"
|
||||
29
.gitea/workflow-sources/validate-on-pr.yml
Normal file
29
.gitea/workflow-sources/validate-on-pr.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
# Canonical PR validation workflow. Keep source and checked-in workflow copies byte-identical.
|
||||
# Validation checks both file sync and main/master parity.
|
||||
# PR-only: push validation already runs in deploy-to-phoenix.yml; this gives PRs the same
|
||||
# no-LAN checks without the deploy job (and without deploy secrets).
|
||||
name: Validate (PR)
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
run-all-validation:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Fetch deploy branches for workflow parity check
|
||||
run: |
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
|
||||
if git remote | grep -qx gitea; then
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
|
||||
fi
|
||||
git fetch --depth=1 "$REMOTE" main master
|
||||
# Optional: set org/repo variable URA_STRICT_CLOSURE=1 to fail PRs while pilot placeholders
|
||||
# remain in manifest (see scripts/ura/validate-manifest-closure.mjs). Not enabled by default.
|
||||
- name: run-all-validation (no LAN, no genesis)
|
||||
env:
|
||||
URA_STRICT_CLOSURE: ${{ vars.URA_STRICT_CLOSURE }}
|
||||
run: bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
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,33 @@
|
||||
# Canonical deploy workflow. Keep source and checked-in workflow copies byte-identical.
|
||||
# Validation checks both file sync and main/master parity.
|
||||
name: Deploy to Phoenix
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Fetch deploy branches for workflow parity check
|
||||
run: |
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
|
||||
if git remote | grep -qx gitea; then
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
|
||||
fi
|
||||
git fetch --depth=1 "$REMOTE" main master
|
||||
|
||||
- name: Run repo validation gate
|
||||
run: |
|
||||
bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
|
||||
deploy:
|
||||
needs: validate
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
@@ -13,8 +35,47 @@ jobs:
|
||||
|
||||
- name: Trigger Phoenix deployment
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${{ gitea.sha }}\",\"branch\":\"${{ gitea.ref_name }}\"}"
|
||||
continue-on-error: true
|
||||
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}"
|
||||
|
||||
deploy-atomic-swap-dapp:
|
||||
needs: validate
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Trigger Atomic Swap dApp deployment (Phoenix)
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"atomic-swap-dapp-live\"}"
|
||||
|
||||
# After app deploy, ask Phoenix to run path-gated Cloudflare DNS sync on the host that has
|
||||
# PHOENIX_REPO_ROOT + .env (not on this runner). Skips unless PHOENIX_CLOUDFLARE_SYNC=1 on that host.
|
||||
# continue-on-error: first-time or missing opt-in should not block the main deploy.
|
||||
cloudflare:
|
||||
needs:
|
||||
- deploy
|
||||
- deploy-atomic-swap-dapp
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Request Cloudflare DNS sync (Phoenix)
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"cloudflare-sync\"}"
|
||||
|
||||
29
.gitea/workflows/validate-on-pr.yml
Normal file
29
.gitea/workflows/validate-on-pr.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
# Canonical PR validation workflow. Keep source and checked-in workflow copies byte-identical.
|
||||
# Validation checks both file sync and main/master parity.
|
||||
# PR-only: push validation already runs in deploy-to-phoenix.yml; this gives PRs the same
|
||||
# no-LAN checks without the deploy job (and without deploy secrets).
|
||||
name: Validate (PR)
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
run-all-validation:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Fetch deploy branches for workflow parity check
|
||||
run: |
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
|
||||
if git remote | grep -qx gitea; then
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
|
||||
fi
|
||||
git fetch --depth=1 "$REMOTE" main master
|
||||
# Optional: set org/repo variable URA_STRICT_CLOSURE=1 to fail PRs while pilot placeholders
|
||||
# remain in manifest (see scripts/ura/validate-manifest-closure.mjs). Not enabled by default.
|
||||
- name: run-all-validation (no LAN, no genesis)
|
||||
env:
|
||||
URA_STRICT_CLOSURE: ${{ vars.URA_STRICT_CLOSURE }}
|
||||
run: bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
70
.gitignore
vendored
70
.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,70 @@ reconciliation/
|
||||
*.payload.json
|
||||
*.payload.sha256
|
||||
audit_log.jsonl
|
||||
|
||||
# cross-chain-pmm-lps-publish: git worktree under that repo — not a parent submodule
|
||||
cross-chain-pmm-lps-publish/
|
||||
|
||||
# Local scratch (never commit)
|
||||
.tmp-*.cjs
|
||||
.codex
|
||||
.codex/
|
||||
.venv-checkjson/
|
||||
.env.bak.pmg.*
|
||||
|
||||
# Teammate / third-party onboarding (API token handoffs; never commit)
|
||||
reports/secrets/
|
||||
|
||||
# Operator / runtime env snapshots under reports/ (sensitive; regenerate from hosts)
|
||||
reports/status/operator-*.env
|
||||
reports/status/operator-runtime*.env
|
||||
reports/status/chain138_aave_runtime.env
|
||||
reports/status/*runtime-env*.env
|
||||
reports/status/ei-matrix-eth-send*
|
||||
reports/status/token-aggregation-*.tar.gz
|
||||
config/production/*did-secrets.env
|
||||
|
||||
# Bulky one-off local outputs (re-run scripts to restore)
|
||||
output/omnl-e2e-*.zip
|
||||
output/omnl-e2e-*/
|
||||
output/office22-*.zip
|
||||
output/settlement-events/
|
||||
output/transaction-package-*/
|
||||
output/cw-assets-usd-quote-dump.json
|
||||
output/jvmtm-evidence/
|
||||
|
||||
# Generated verification evidence snapshots (keep curated evidence, ignore rerunnable timestamped dumps)
|
||||
docs/04-configuration/verification-evidence/e2e-verification-*/
|
||||
|
||||
# Generated deployment and inventory machine outputs
|
||||
reports/deployment/*_20[0-9][0-9]-[0-9][0-9]-[0-9][0-9].md
|
||||
reports/deployment/check-deployer-lp-balances-*.json
|
||||
reports/inventory/container_inventory_*.csv
|
||||
reports/inventory/contract-inventory-*.json
|
||||
reports/inventory/DEPLOYED_CONTRACTS_*.md
|
||||
reports/inventory/INCOMPLETE_DUPLICATE_ANALYSIS.md
|
||||
reports/inventory/INVENTORY_COVERAGE_GAPS.md
|
||||
reports/inventory/deployed-contracts-completion-matrix.json
|
||||
reports/inventory/incomplete-duplicate-bytecode-analysis.json
|
||||
|
||||
# Generated status artifacts (rerunnable from wrappers/validation scripts)
|
||||
reports/status/MULTI_NETWORK_DEPLOYMENT_AUDIT_*.md
|
||||
reports/status/*-latest.json
|
||||
reports/status/*-latest.md
|
||||
reports/status/*-latest.csv
|
||||
reports/status/hardware_poll_*.txt
|
||||
reports/status/lxc_cluster_health_*.json
|
||||
reports/status/lxc_cluster_health_*.txt
|
||||
reports/status/mainnet-cwusdc-usdc-preflight-*.json
|
||||
reports/status/mainnet-cwusdc-usdc-repeg-plan-*.json
|
||||
reports/status/live_inventory_*.json
|
||||
reports/status/drift_*.json
|
||||
|
||||
# Large optional vendor trees and local checkouts (keep out of main clone)
|
||||
smom-dbis-138-publish/
|
||||
third-party/
|
||||
thirdweb-core-2103-test/
|
||||
tmp/
|
||||
token-aggregation-build/
|
||||
transaction-composer/
|
||||
vendor/
|
||||
|
||||
6
.gitmodules
vendored
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.
|
||||
|
||||
15
AGENTS.md
15
AGENTS.md
@@ -11,15 +11,20 @@ Orchestration for Proxmox VE, Chain 138 (`smom-dbis-138/`), explorers, NPMplus,
|
||||
| Need | Location |
|
||||
|------|-----------|
|
||||
| Doc index | `docs/MASTER_INDEX.md` |
|
||||
| Canonical ecosystem master plan | `docs/02-architecture/DBIS_ECOSYSTEM_TECHNICAL_MASTER_PLAN.md` — umbrella root; subordinate roots: `dbis_chain_138_technical_master_plan.md`, `docs/03-deployment/DBIS_RTGS_MASTER_PLAN_IMPLEMENTATION_TRACKER.md`, `docs/04-configuration/universal-resource-activation/URA_MANIFEST_AUTOMATION_IMPLEMENTATION_TRACKER.md` |
|
||||
| Universal resource activation (manifest, CI, Phoenix) | `UNIVERSAL_RESOURCE_WIRING.md`, `URA_MANIFEST_AUTOMATION_IMPLEMENTATION_TRACKER.md`, `URA_OPERATIONAL_READINESS_CHECKLIST.md` (under `docs/04-configuration/universal-resource-activation/`); `config/universal-resource-activation/{manifest.json,policy-profiles.json,integration/}`; `pnpm ura:ops-readiness` / `ura:ops-readiness:full`, `ura:production-ready` / `ura:production-ready:connectivity`, `ura:validate`, `ura:validate-profiles`, `ura:merge-manifest`, `ura:validate-ledger-mapping`, `ura:writer:ledger`, `ura:writer:settlement`, `ura:profile-hash`, `ura:validate-closure`, `ura:keccak`, `ura:smoke`; `URA_STRICT_CLOSURE` / Gitea `vars.URA_STRICT_CLOSURE`; `smom-dbis-138/contracts/universal-resource/PolicyProfileRegistry.sol` (scoped forge test); Phoenix `PUBLIC_V1_NO_PARTNER_KEY_PATHS` |
|
||||
| Multi-jurisdiction compliance (matrices, onboarding) | `docs/04-configuration/compliance-matrices/README.md`, `INSTITUTION_ONBOARDING_CHARTER.md`, `INSTITUTION_ONBOARDING_PLAYBOOK.md`, `docs/04-configuration/jurisdictions/JURISDICTION_CATALOG.md`, `config/jurisdictions/catalog.v1.json`, `docs/dbis-rail/DBIS_RAIL_JURISDICTION_TRACEABILITY.md`, `docs/03-deployment/DBIS_RTGS_MASTER_PLAN_IMPLEMENTATION_TRACKER.md` |
|
||||
| cXAUC/cXAUT unit | 1 full token = 1 troy oz Au — `docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md` (section 5.1) |
|
||||
| PMM mesh 6s tick | `smom-dbis-138/scripts/reserve/pmm-mesh-6s-automation.sh` — `docs/integration/ORACLE_AND_KEEPER_CHAIN138.md` (PMM mesh automation) |
|
||||
| VMID / IP / FQDN | `docs/04-configuration/ALL_VMIDS_ENDPOINTS.md` |
|
||||
| Ops template + JSON | `docs/03-deployment/PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md`, `config/proxmox-operational-template.json` |
|
||||
| Live vs template (read-only SSH) | `bash scripts/verify/audit-proxmox-operational-template.sh` |
|
||||
| Config validation | `bash scripts/validation/validate-config-files.sh` |
|
||||
| pnpm lockfile vs workspace (prevents `pnpm outdated` / importer bugs) | `bash scripts/verify/check-pnpm-workspace-lockfile.sh` — also run as **step 1b** in `run-all-validation.sh` |
|
||||
| CI validation (no LAN) + cW* mesh matrix | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` — same gate as **Gitea** push/PR: `run-all-validation` in `.gitea/workflows/deploy-to-phoenix.yml` (push) and `.gitea/workflows/validate-on-pr.yml` (PR only). After deploy, optional **Cloudflare** `cloudflare-sync` (Phoenix + `PHOENIX_REPO_ROOT`; set `PHOENIX_CLOUDFLARE_SYNC=1` on that host) via `scripts/deployment/gitea-cloudflare-sync.sh`. Steps: dependencies, **pnpm workspace/lockfile check**, config, cW* mesh (when pair-discovery exists), **`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs`**, optional genesis. Manual only: `bash scripts/verify/build-cw-mesh-deployment-matrix.sh [--json-out …]` |
|
||||
| FQDN / NPM E2E verifier | `bash scripts/verify/verify-end-to-end-routing.sh --profile=public` — inventory: `docs/04-configuration/E2E_ENDPOINTS_LIST.md`. Gitea Actions URLs (no API): `bash scripts/verify/print-gitea-actions-urls.sh` |
|
||||
| Submodule trees clean (CI / post-merge) | `bash scripts/verify/submodules-clean.sh` |
|
||||
| Submodule + explorer remotes | `docs/00-meta/SUBMODULE_HYGIENE.md` |
|
||||
| Submodule + explorer remotes | `docs/00-meta/SUBMODULE_HYGIENE.md` — `mcp-proxmox` uses **Gitea** `https://gitea.d-bis.org/d-bis/mcp-proxmox.git` (not the old GitHub-only URL). `cross-chain-pmm-lps-publish` is a **worktree** of `cross-chain-pmm-lps`, not a submodule. |
|
||||
| smom-dbis-138 `.env` in bash scripts | Prefer `source smom-dbis-138/scripts/lib/deployment/dotenv.sh` + `load_deployment_env --repo-root "$PROJECT_ROOT"` (trims RPC URL line endings). From an interactive shell: `source smom-dbis-138/scripts/load-env.sh`. Proxmox root scripts: `source scripts/lib/load-project-env.sh` (also trims common RPC vars). |
|
||||
| Sankofa portal → CT 7801 (build + restart) | `./scripts/deployment/sync-sankofa-portal-7801.sh` (`--dry-run` first); sets `NEXTAUTH_URL` on CT via `sankofa-portal-ensure-nextauth-on-ct.sh` |
|
||||
| CCIP relay (r630-01 host) | Unit: `config/systemd/ccip-relay.service` → `/etc/systemd/system/ccip-relay.service`; `systemctl enable --now ccip-relay` |
|
||||
@@ -27,7 +32,13 @@ Orchestration for Proxmox VE, Chain 138 (`smom-dbis-138/`), explorers, NPMplus,
|
||||
| The Order portal (`https://the-order.sankofa.nexus`) | OSJ management UI (secure auth); source repo **the_order** at `~/projects/the_order`. NPM upstream defaults to **order-haproxy** CT **10210** (`IP_ORDER_HAPROXY:80`); use `THE_ORDER_UPSTREAM_*` to point at the Sankofa portal if 10210 is down. Provision HAProxy: `scripts/deployment/provision-order-haproxy-10210.sh`. **`www.the-order.sankofa.nexus`** → **301** apex (same as www.sankofa / www.phoenix). |
|
||||
| Portal login + Keycloak systemd + `.env` (prints password once) | `./scripts/deployment/enable-sankofa-portal-login-7801.sh` (`--dry-run` first) |
|
||||
| Completable (no LAN) | `./scripts/run-completable-tasks-from-anywhere.sh` |
|
||||
| Operator (LAN + secrets) | `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` unset) |
|
||||
| smom-dbis-138 root `forge test` | Uses `foundry.toml` `[profile.default] skip` for legacy Uniswap V2 vendor trees (0.5/0.6 solc); scoped work still uses `bash scripts/forge/scope.sh …` |
|
||||
| cWUSDT Mainnet USD pricing (on-chain + runbook) | `./scripts/deployment/price-cw-token-mainnet.sh` — `docs/03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md` |
|
||||
| Deployer LP balances (mesh inventory) | `python3 scripts/deployment/check-deployer-lp-balances.py` — scans `deployment-status.json` + `reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json`; **UniV2** `lpToken` = pair; **DODO DVM** LP shares = `balanceOf(pool)`; on failure, probes `_BASE_TOKEN_` / `_BASE_CAPITAL_TOKEN_` / `_QUOTE_CAPITAL_TOKEN_` + extra public RPCs (`--no-resolve-dodo` skips; `--chain-id N` for one chain). JSON: `lpTokenAddress`, `lpResolution`, `lpBalances[]`. Use `--deployer` / `DEPLOYER_ADDRESS` if no `PRIVATE_KEY` |
|
||||
| Etherscan Value $0 for Mainnet `cW*` | Listing path (CoinGecko/CMC), not a contract toggle — `docs/04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md` |
|
||||
| Verify contracts on explorers (all networks) | `cd smom-dbis-138 && ./scripts/deployment/verify-all-networks-explorers.sh` — Blockscout 138, Etherscan + multichain `cW*`, Avax/Arb bridges, optional Cronos/Wemix/CCIPLogger |
|
||||
| Operator (LAN + secrets) | `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` unset; backup also needs `NPM_EMAIL` in `.env`) |
|
||||
| Remote SSH to dev VM (5700 / `192.168.11.59`) for runner & deploy API | [docs/04-configuration/DEV_VM_SSH_REMOTE_ACCESS.md](docs/04-configuration/DEV_VM_SSH_REMOTE_ACCESS.md) (Cloudflare Access + tunnel, or UDM allowlist) |
|
||||
| Cloudflare bulk DNS → `PUBLIC_IP` | `./scripts/update-all-dns-to-public-ip.sh` — use **`--dry-run`** and **`--zone-only=sankofa.nexus`** (or `d-bis.org` / `mim4u.org` / `defi-oracle.io`) to limit scope; see script header. Prefer scoped **`CLOUDFLARE_API_TOKEN`** (see `.env.master.example`). |
|
||||
|
||||
## Git submodules
|
||||
|
||||
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...5e3b9db91a
1
atomic-swap-dapp
Submodule
1
atomic-swap-dapp
Submodule
Submodule atomic-swap-dapp added at 44a731b606
@@ -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
161
config/allmainnet-non-dodo-protocol-surface.json
Normal file
161
config/allmainnet-non-dodo-protocol-surface.json
Normal file
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"name": "ALL Mainnet Non-DODO Protocol Surface",
|
||||
"version": "0.1.0",
|
||||
"updated": "2026-04-21",
|
||||
"chainId": 651940,
|
||||
"network": "ALL Mainnet (Alltra)",
|
||||
"status": "bridge_live_swap_inventory_pending",
|
||||
"summary": {
|
||||
"bridgeOnlyLive": true,
|
||||
"sameChainSwapInventoryPublished": false,
|
||||
"notes": [
|
||||
"The Chain 138 <-> 651940 AlltraAdapter bridge is live.",
|
||||
"This file documents the known non-DODO Alltra protocol and token surface without asserting live routable pool inventory.",
|
||||
"Promote protocols here into canonical route inventory only after real factory/router/pool addresses are committed and verified."
|
||||
]
|
||||
},
|
||||
"documentedTokens": [
|
||||
{
|
||||
"symbol": "AUSDT",
|
||||
"address": "0x015B1897Ed5279930bC2Be46F661894d219292A6",
|
||||
"decimals": 18,
|
||||
"category": "stablecoin",
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "USDT",
|
||||
"address": "0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e",
|
||||
"decimals": 18,
|
||||
"category": "stablecoin",
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "USDC",
|
||||
"address": "0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881",
|
||||
"decimals": 18,
|
||||
"category": "stablecoin",
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "WETH",
|
||||
"address": "0x798F6762BB40d6801A593459d08F890603D3979C",
|
||||
"decimals": 18,
|
||||
"category": "wrapped-native",
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "WALL",
|
||||
"address": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4",
|
||||
"decimals": 18,
|
||||
"category": "wrapped-native",
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "HYDX",
|
||||
"address": "0x0d9793861AEB9244AD1B34375a83A6730F6AdD38",
|
||||
"decimals": 18,
|
||||
"category": "dex-token",
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "HYBX",
|
||||
"address": "0x1839f77eBed7F388c7035f7061B4B8Ef0E72317a",
|
||||
"decimals": 8,
|
||||
"category": "defi-token",
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "CHT",
|
||||
"address": "0xE59Bb804F4884FcEA183a4A67B1bb04f4a4567bc",
|
||||
"decimals": 8,
|
||||
"category": "defi-token",
|
||||
"status": "verified"
|
||||
},
|
||||
{
|
||||
"symbol": "AUDA",
|
||||
"address": "0x690740f055A41FA7669f5a379Bf71B0cDF353073",
|
||||
"decimals": 18,
|
||||
"category": "defi-token",
|
||||
"status": "verified"
|
||||
}
|
||||
],
|
||||
"protocols": [
|
||||
{
|
||||
"name": "AlltraDEX / EnhancedSwapRouter",
|
||||
"family": "custom_router",
|
||||
"status": "documented_inventory_pending",
|
||||
"factoryAddress": null,
|
||||
"routerAddress": null,
|
||||
"notes": [
|
||||
"Documented in docs/11-references/ALL_MAINNET_ROUTING_ENGINE.md as the intended same-chain swap surface.",
|
||||
"No committed canonical factory/router/pool inventory is currently published in-repo."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "HYDX",
|
||||
"family": "custom_router",
|
||||
"status": "token_present_protocol_surface_pending",
|
||||
"factoryAddress": null,
|
||||
"routerAddress": null,
|
||||
"envKeys": [
|
||||
"CHAIN_651940_HYDX_FACTORY",
|
||||
"CHAIN_651940_HYDX_ROUTER",
|
||||
"CHAIN_651940_HYDX_START_BLOCK",
|
||||
"CHAIN_651940_HYDX_PAIR_CREATED_EVENT"
|
||||
],
|
||||
"notes": [
|
||||
"The HYDX token is documented and verified on ALL Mainnet.",
|
||||
"The repo expects factory/router discovery via env, but no canonical pool inventory is currently committed."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Uniswap V2",
|
||||
"family": "uniswap_v2",
|
||||
"status": "env_placeholder_only",
|
||||
"factoryAddress": null,
|
||||
"routerAddress": null,
|
||||
"notes": [
|
||||
"Referenced in token-aggregation dex-factory config and docs as an env-driven surface.",
|
||||
"Do not treat as routable until real factory/router/pair addresses are committed."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Uniswap V3",
|
||||
"family": "uniswap_v3",
|
||||
"status": "env_placeholder_only",
|
||||
"factoryAddress": null,
|
||||
"routerAddress": null,
|
||||
"notes": [
|
||||
"Referenced in token-aggregation dex-factory config and docs as an env-driven surface.",
|
||||
"Do not treat as routable until real factory/router/pool addresses are committed."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "DODO PMM",
|
||||
"family": "dodo_pmm",
|
||||
"status": "env_placeholder_only",
|
||||
"factoryAddress": null,
|
||||
"routerAddress": null,
|
||||
"notes": [
|
||||
"Mentioned in docs as placeholder-only for ALL Mainnet.",
|
||||
"No committed DODO PMM pool inventory is currently published for chain 651940."
|
||||
]
|
||||
}
|
||||
],
|
||||
"bridgeSurface": {
|
||||
"adapter": {
|
||||
"name": "AlltraAdapter",
|
||||
"address": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc",
|
||||
"status": "live"
|
||||
},
|
||||
"supportedBridgeAssets": [
|
||||
"cUSDC",
|
||||
"cUSDT"
|
||||
]
|
||||
},
|
||||
"nextTasks": [
|
||||
"Publish real same-chain pool inventory before promoting ALL Mainnet beyond bridge-live inventory.",
|
||||
"Commit canonical factory/router metadata once HYDX or AlltraDEX routing addresses are confirmed.",
|
||||
"Add pool-level addresses and verification artifacts before enabling public route generation from this protocol surface."
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
@@ -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",
|
||||
|
||||
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."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
# Copy to a path outside VCS (or set inline) and:
|
||||
# export URA_PRODUCTION_ENV_FILE=/path/to/ura-production-ready.env
|
||||
# pnpm ura:production-ready
|
||||
# # or (staging: skips manifest strict closure; does NOT claim production evidence closure)
|
||||
# URA_PRODUCTION_MODE=connectivity pnpm ura:production-ready
|
||||
#
|
||||
# shellcheck disable=SC2034
|
||||
|
||||
export PHOENIX_BASE_URL="https://phoenix.example.invalid"
|
||||
export SERVER_FUNDS_SIDECAR_URL="https://server-funds-sidecar.example.invalid"
|
||||
export POLICY_PROFILE_REGISTRY_ADDRESS="0x0000000000000000000000000000000000000000"
|
||||
|
||||
# export GRU_REQUIRED=1
|
||||
# export GRU_M00_DIAMOND_ADDRESS="0x0000000000000000000000000000000000000000"
|
||||
|
||||
# export LEDGER_E2E_EVIDENCE_FILE="/path/to/ledger-ticket.md"
|
||||
# export SETTLEMENT_E2E_EVIDENCE_FILE="/path/to/settlement-ticket.md"
|
||||
# export REQUIRE_CUSTODY=1
|
||||
# export CUSTODY_E2E_EVIDENCE_FILE="/path/to/custody-ticket.md"
|
||||
# export COUNSEL_SIGNOFF_FILE="/path/to/counsel-signoff.pdf"
|
||||
10
config/xdc-zero/deployed/endpoint-apothem-or-mainnet.env
Normal file
10
config/xdc-zero/deployed/endpoint-apothem-or-mainnet.env
Normal file
@@ -0,0 +1,10 @@
|
||||
# XDC parent endpoint stack for Chain 138 pair
|
||||
# Deployed 2026-04-16 from /home/intlc/projects/XDC-Zero/endpoint
|
||||
# Operator-local record only; gitignored by default.
|
||||
|
||||
ETHEREUM_TRIE_DB=0x99B3511A2d315A497C8112C1fdd8D508d4B1E506
|
||||
MERKLE_PATRICIA=0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6
|
||||
ENDPOINT=0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
|
||||
|
||||
# Parent-side CSC for Chain 138 roots is still pending.
|
||||
# Do not treat this file as a completed pair registration artifact yet.
|
||||
12
config/xdc-zero/deployed/endpoint-chain138.env
Normal file
12
config/xdc-zero/deployed/endpoint-chain138.env
Normal file
@@ -0,0 +1,12 @@
|
||||
# Chain 138 XDC Zero Endpoint stack
|
||||
# Deployed 2026-04-01 from /home/intlc/projects/XDC-Zero/endpoint
|
||||
# Operator-local record only; gitignored by default.
|
||||
|
||||
ETHEREUM_TRIE_DB=0xB7A32E86Fa1533ebb0Ed1D41Ce502110E739E54A
|
||||
MERKLE_PATRICIA=0xAF12F73f0BCa1E52559Db807A2B438BD14de6B09
|
||||
ENDPOINT=0x43F435cDC82e415500c0abcf48261176052CadcA
|
||||
|
||||
# Final coherent tx set for the linked stack above:
|
||||
ETHEREUM_TRIE_DB_TX=0x09d5549b877dbb17e82d6998328e914abd1f98000a9af73b4ebf6f6f251a40b3
|
||||
MERKLE_PATRICIA_TX=0x70bf28a946510c5bd7077b8acf1ccbf5fba76706dfbd5d1405ec5bad70aea844
|
||||
ENDPOINT_TX=0x98bccdc032e178e109b1472c7d00248523692a054f11aa01744d1a5753fe5e55
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"chain138": {
|
||||
"endpoint": "0x43F435cDC82e415500c0abcf48261176052CadcA",
|
||||
"registers": [
|
||||
{
|
||||
"chainId": 50,
|
||||
"csc": "0x3cf12c78b5E52EB802aD4f3b4653c616786b792c",
|
||||
"endpoint": "0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e"
|
||||
}
|
||||
],
|
||||
"applications": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
[
|
||||
{
|
||||
"chainId": 138,
|
||||
"csc": "0x105F8A15b819948a89153505762444Ee9f324684",
|
||||
"endpoint": "0x43F435cDC82e415500c0abcf48261176052CadcA"
|
||||
}
|
||||
]
|
||||
Submodule cross-chain-pmm-lps updated: 589ebaff86...1cf845cb3a
Submodule dbis_core updated: 1190476b0a...97a1cb1b96
148
docs/00-meta/AAVE_CHAIN138_AND_MARIONETTE_TSUNAMISWAP_PLAN.md
Normal file
148
docs/00-meta/AAVE_CHAIN138_AND_MARIONETTE_TSUNAMISWAP_PLAN.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# AAVE Chain 138 and Marionette TsunamiSwap Plan
|
||||
|
||||
**Last Updated:** 2026-04-23
|
||||
**Status:** Active planning / operator runbook
|
||||
**Purpose:** Canonical repo-local reference for the TsunamiSwap DEX footprint in this workspace, including deployment target, current endpoint, and the operator flow to bring the VM online.
|
||||
|
||||
---
|
||||
|
||||
## Scope
|
||||
|
||||
This document covers the TsunamiSwap deployment target currently reserved in the Proxmox operational template:
|
||||
|
||||
- **VMID:** `5010`
|
||||
- **Hostname:** `tsunamiswap`
|
||||
- **IPv4:** `192.168.11.91`
|
||||
- **Preferred node:** `r630-01`
|
||||
- **Category:** `defi`
|
||||
- **Published port in template:** `80`
|
||||
|
||||
Canonical sources:
|
||||
|
||||
- [docs/00-meta/OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) section `5c`
|
||||
- [docs/02-architecture/DBIS_NODE_ROLE_MATRIX.md](../02-architecture/DBIS_NODE_ROLE_MATRIX.md)
|
||||
- [docs/04-configuration/ALL_VMIDS_ENDPOINTS.md](../04-configuration/ALL_VMIDS_ENDPOINTS.md)
|
||||
- [`config/proxmox-operational-template.json`](../../config/proxmox-operational-template.json)
|
||||
- [`scripts/deployment/tsunamiswap-vm-5010-provision.sh`](../../scripts/deployment/tsunamiswap-vm-5010-provision.sh)
|
||||
|
||||
---
|
||||
|
||||
## Current URLs
|
||||
|
||||
The canonical public TsunamiSwap URLs are:
|
||||
|
||||
- **Landing page:** `https://tsunamiswap.com`
|
||||
- **Working application:** `https://app.tsunamiswap.com`
|
||||
|
||||
The VM service target on port `80` remains the backend origin:
|
||||
|
||||
- **Origin / backend target:** `http://192.168.11.91/`
|
||||
|
||||
Important notes:
|
||||
|
||||
- `https://tsunamiswap.com` is the canonical public landing page.
|
||||
- `https://app.tsunamiswap.com` is the canonical working application URL.
|
||||
- `http://192.168.11.91/` remains the internal service origin for VM `5010`.
|
||||
- Both hostnames are currently recorded against VM `5010`; if the landing page and app split onto different upstreams later, update this document and the Proxmox operational template together.
|
||||
|
||||
---
|
||||
|
||||
## Deployment State
|
||||
|
||||
Current known state in this repo:
|
||||
|
||||
- VM `5010` exists in inventory and architecture docs.
|
||||
- The helper script [`scripts/deployment/tsunamiswap-vm-5010-provision.sh`](../../scripts/deployment/tsunamiswap-vm-5010-provision.sh) is **inventory only** and explicitly says provisioning is still informational.
|
||||
- The operator checklist expects follow-up scripts such as `create-tsunamiswap-vm.sh`, `setup-tsunamiswap-vm-5010.sh`, and `deploy-tsunamiswap-to-5010.sh`, but those scripts are **not present in this workspace** today.
|
||||
- Because of that, TsunamiSwap should currently be treated as **planned / partially documented infrastructure**, not a fully repo-automated deployment.
|
||||
|
||||
---
|
||||
|
||||
## Operator Flow
|
||||
|
||||
### 1. Check VM inventory status
|
||||
|
||||
```bash
|
||||
./scripts/deployment/tsunamiswap-vm-5010-provision.sh
|
||||
```
|
||||
|
||||
Expected behavior:
|
||||
|
||||
- Confirms whether VMID `5010` exists on the target Proxmox host.
|
||||
- If missing, prints the intended sizing and placement.
|
||||
|
||||
### 2. Target VM profile
|
||||
|
||||
From the operator checklist, the intended baseline is:
|
||||
|
||||
- `8` vCPU
|
||||
- `16 GB` RAM
|
||||
- `~160 GB` disk
|
||||
- default host `r630-01`
|
||||
- default IP `192.168.11.91`
|
||||
|
||||
### 3. Planned post-create steps
|
||||
|
||||
The checklist indicates this intended flow:
|
||||
|
||||
```bash
|
||||
./scripts/create-tsunamiswap-vm.sh --dry-run
|
||||
./scripts/create-tsunamiswap-vm.sh
|
||||
./scripts/setup-tsunamiswap-vm-5010.sh --dry-run
|
||||
./scripts/setup-tsunamiswap-vm-5010.sh
|
||||
./scripts/deploy-tsunamiswap-to-5010.sh --dry-run
|
||||
./scripts/deploy-tsunamiswap-to-5010.sh
|
||||
```
|
||||
|
||||
Current repo reality:
|
||||
|
||||
- These commands are referenced operationally.
|
||||
- The underlying scripts are not present in this workspace right now.
|
||||
- If automation is needed, those scripts should be added in a future pass and then linked back here.
|
||||
|
||||
---
|
||||
|
||||
## Publish Checklist
|
||||
|
||||
Before calling TsunamiSwap publicly live, complete all of the following:
|
||||
|
||||
1. Confirm VM `5010` exists and serves HTTP on `192.168.11.91:80`.
|
||||
2. Confirm `tsunamiswap.com` and `app.tsunamiswap.com` are present under VM `5010` `fqdns` in `config/proxmox-operational-template.json`.
|
||||
3. Add both hostnames to the canonical endpoint inventory docs.
|
||||
4. Publish the NPMplus proxy mappings:
|
||||
`tsunamiswap.com` for the landing page and `app.tsunamiswap.com` for the working application, both currently targeting `192.168.11.91:80`.
|
||||
5. Verify end-to-end routing with the standard E2E verifier.
|
||||
|
||||
Suggested canonical follow-up files to update once a public hostname exists:
|
||||
|
||||
- [docs/04-configuration/ALL_VMIDS_ENDPOINTS.md](../04-configuration/ALL_VMIDS_ENDPOINTS.md)
|
||||
- [docs/04-configuration/FQDN_EXPECTED_CONTENT.md](../04-configuration/FQDN_EXPECTED_CONTENT.md)
|
||||
- [docs/03-deployment/OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md)
|
||||
- [`config/proxmox-operational-template.json`](../../config/proxmox-operational-template.json)
|
||||
|
||||
---
|
||||
|
||||
## AAVE / Marionette Relationship
|
||||
|
||||
This workspace currently contains the TsunamiSwap infrastructure reservation and operator references, but it does **not** yet contain a fuller in-repo specification for:
|
||||
|
||||
- AAVE-specific market wiring
|
||||
- Marionette-specific orchestration details
|
||||
- TsunamiSwap backend architecture
|
||||
- TsunamiSwap contract inventory
|
||||
- TsunamiSwap public domain / branding decision
|
||||
|
||||
So this document should be read as the canonical **deployment placeholder + operator reference**, not a complete product architecture spec.
|
||||
|
||||
---
|
||||
|
||||
## Decision
|
||||
|
||||
The canonical public URLs for TsunamiSwap in this repo are:
|
||||
|
||||
- `https://tsunamiswap.com`
|
||||
- `https://app.tsunamiswap.com`
|
||||
|
||||
The corresponding internal service origin is:
|
||||
|
||||
- `http://192.168.11.91/`
|
||||
@@ -1,17 +1,19 @@
|
||||
# Your next steps — one place
|
||||
|
||||
**Last Updated:** 2026-03-02
|
||||
**Last Updated:** 2026-04-23
|
||||
**Purpose:** Single list of what **you** need to do next (no infra/automation). Everything else the repo can do has been completed or documented.
|
||||
|
||||
**Completed (next steps run):** `run-completable-tasks-from-anywhere.sh` — config OK, on-chain 59/59, validation OK, reconcile-env. `preflight-chain138-deploy.sh` — passed. `run-all-next-steps-chain138.sh` — preflight passed; TransactionMirror and cUSDT/cUSDC pool already present; all 12 c* already GRU-registered; verification 59/59. `validate-config-files.sh` — passed. `run-e2e-flow-tasks-full-parallel.sh --dry-run` — waves E0–E7 listed.
|
||||
**Completed (latest repo-local pass, 2026-04-23):** `run-completable-tasks-from-anywhere.sh --dry-run --json-out reports/status/run-completable-tasks-latest.json` now emits machine-readable step summaries. `run-all-validation.sh --skip-genesis --json-out reports/status/run-all-validation-latest.json` passed and refreshed advisory non-EVM status (Solana, Tron, XRPL). `run-e2e-flow-tasks-full-parallel.sh`, `run-all-next-steps-chain138.sh`, and `run-all-operator-tasks-from-lan.sh` also now support optional `--json-out` summaries. Canonical docs were synchronized to the current 61-address on-chain check and five-step no-LAN runner flow.
|
||||
|
||||
**Continue and complete (2026-02-27):** Re-ran `run-completable-tasks-from-anywhere.sh` — all 4 steps passed (config, on-chain 59/59, validation, reconcile-env). Re-ran `run-all-operator-tasks-from-lan.sh --skip-backup` — dotenv loaded automatically; Blockscout verification completed (W0-1 NPMplus failed off-LAN as expected). Docs: REMAINING_SUMMARY "Continue and complete" section added; TODOS_CONSOLIDATED and NEXT_STEPS_FOR_YOU updated for operator script loading dotenv.
|
||||
**Completed (next steps run):** `run-completable-tasks-from-anywhere.sh` — config OK, on-chain 61/61, validation OK, non-EVM status refresh, reconcile-env. `preflight-chain138-deploy.sh` — passed. `run-all-next-steps-chain138.sh` — preflight passed; TransactionMirror and cUSDT/cUSDC pool already present; all 12 c* already GRU-registered; verification 61/61. `validate-config-files.sh` — passed. `run-e2e-flow-tasks-full-parallel.sh --dry-run` — waves E0–E7 listed.
|
||||
|
||||
**Completed 2026-03-02:** Documentation consolidation: [MASTER_INDEX.md](../MASTER_INDEX.md), [README.md](../README.md), [RUNBOOKS_MASTER_INDEX.md](../RUNBOOKS_MASTER_INDEX.md) created; deprecated content (ALL_IMPROVEMENTS_AND_GAPS_INDEX) marked redirect-only. `run-completable-tasks-from-anywhere.sh` run: config OK, on-chain 59/59, validation OK, reconcile-env. **Preflight** and **run-all-next-steps-chain138.sh** run: preflight passed; mirror/pool already deployed; all 12 c* already registered as GRU; verification 59/59. Next steps index and TODOS_CONSOLIDATED updated.
|
||||
**Continue and complete (2026-02-27):** Re-ran `run-completable-tasks-from-anywhere.sh` — the runner has since expanded to the current five-step flow (config, on-chain, validation, non-EVM status, reconcile-env). Re-ran `run-all-operator-tasks-from-lan.sh --skip-backup` — dotenv loaded automatically; Blockscout verification completed (W0-1 NPMplus failed off-LAN as expected). Docs: REMAINING_SUMMARY "Continue and complete" section added; TODOS_CONSOLIDATED and NEXT_STEPS_FOR_YOU updated for operator script loading dotenv.
|
||||
|
||||
**Completed 2026-03-02:** Documentation consolidation: [MASTER_INDEX.md](../MASTER_INDEX.md), [README.md](../README.md), [RUNBOOKS_MASTER_INDEX.md](../RUNBOOKS_MASTER_INDEX.md) created; deprecated content (ALL_IMPROVEMENTS_AND_GAPS_INDEX) marked redirect-only. `run-completable-tasks-from-anywhere.sh` run: config OK, on-chain 59/59 at the time, validation OK, reconcile-env. **Preflight** and **run-all-next-steps-chain138.sh** run: preflight passed; mirror/pool already deployed; all 12 c* already registered as GRU; verification 59/59 at the time. Next steps index and TODOS_CONSOLIDATED updated.
|
||||
|
||||
**Completed 2026-02-27:** Chain 138 "run all next steps" script added: `./scripts/deployment/run-all-next-steps-chain138.sh` (preflight → mirror+pool → register c* as GRU → verify). Docs updated: NEXT_STEPS_INDEX, DEPLOYMENT_ORDER_OF_OPERATIONS, TODOS_CONSOLIDATED, CONTRACT_NEXT_STEPS_LIST.
|
||||
|
||||
**Completed 2026-03-01:** Recommended next steps: `run-completable-tasks-from-anywhere.sh` (config OK, on-chain 59/59, validation OK, reconcile-env). Progress indicators added (Step 1/4–4/4). E2E flow tasks script: `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1]`. CONTRACT_ADDRESSES_REFERENCE and RECOMMENDATIONS_OPERATOR_CHECKLIST updated to use ADDRESS_MATRIX_AND_STATUS for correlated address matrix.
|
||||
**Completed 2026-03-01:** Recommended next steps: `run-completable-tasks-from-anywhere.sh` (config OK, on-chain 59/59 at the time, validation OK, reconcile-env). Progress indicators added, later expanded to the current five-step runner flow with elapsed-time summaries. E2E flow tasks script: `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1]`. CONTRACT_ADDRESSES_REFERENCE and RECOMMENDATIONS_OPERATOR_CHECKLIST updated to use ADDRESS_MATRIX_AND_STATUS for correlated address matrix.
|
||||
|
||||
**Completed 2026-02-23:** Optional and next steps: `run-completable-tasks-from-anywhere.sh` run (config OK, on-chain 36/36, run-all-validation --skip-genesis OK, reconcile-env). Shellcheck with `--optional` now non-fatal (CI and validate pass). Validate via Proxmox SSH: `bash scripts/run-via-proxmox-ssh.sh validate [--host IP]` runs full shellcheck + genesis validation; jq/shellcheck installed on host when missing. TODOS_CONSOLIDATED and OPERATOR_AND_EXTERNAL_COMPLETION_CHECKLIST updated.
|
||||
|
||||
@@ -27,7 +29,7 @@
|
||||
|
||||
## 1. Submit Ledger Live request — ✅ Done
|
||||
|
||||
The Ledger Live integration request for **Chain 138 (Defi Oracle Meta Mainnet)** has been submitted (Tally form). Await Ledger’s response and follow their process (agreement + integration steps).
|
||||
The Ledger Live integration request for **Chain 138 (DeFi Oracle Meta Mainnet)** has been submitted (Tally form). Await Ledger’s response and follow their process (agreement + integration steps).
|
||||
|
||||
**Full guide:** [docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md](../04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md)
|
||||
|
||||
@@ -39,9 +41,9 @@ These can be run from your current machine (dev, WSL, CI) without Proxmox or Led
|
||||
|
||||
| Step | Command / action |
|
||||
|------|------------------|
|
||||
| **Run all “from anywhere” checks** | `./scripts/run-completable-tasks-from-anywhere.sh` — config validation, on-chain check (SKIP_EXIT=1 if RPC unreachable), run-all-validation --skip-genesis, reconcile-env --print |
|
||||
| **Chain 138 next steps (all in one)** | `./scripts/deployment/run-all-next-steps-chain138.sh` — preflight → mirror+pool (or `--skip-mirror`) → register c* as GRU → verify. Use `--dry-run`; set `TRANSACTION_MIRROR_ADDRESS` if mirror exists. See [TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX](../03-deployment/TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX.md) if CreateCollision. |
|
||||
| **E2E flows (full parallel)** | `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1]` — run E2E flow tasks by wave; see [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md). |
|
||||
| **Run all “from anywhere” checks** | `./scripts/run-completable-tasks-from-anywhere.sh [--json-out reports/status/run-completable-tasks-latest.json]` — config validation, on-chain check (SKIP_EXIT=1 if RPC unreachable), run-all-validation --skip-genesis, non-EVM status refresh, reconcile-env --print |
|
||||
| **Chain 138 next steps (all in one)** | `./scripts/deployment/run-all-next-steps-chain138.sh [--json-out reports/status/run-all-next-steps-chain138-latest.json]` — preflight → mirror+pool (or `--skip-mirror`) → register c* as GRU → verify. Use `--dry-run`; set `TRANSACTION_MIRROR_ADDRESS` if mirror exists. See [TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX](../03-deployment/TRANSACTION_MIRROR_CHAIN138_COLLISION_FIX.md) if CreateCollision. |
|
||||
| **E2E flows (full parallel)** | `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--wave E1] [--json-out reports/status/run-e2e-flow-tasks-latest.json]` — run E2E flow tasks by wave; see [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md). |
|
||||
| **On-chain address list (no RPC)** | `./scripts/verify/check-contracts-on-chain-138.sh --dry-run` — lists addresses only (no RPC) |
|
||||
| **Config validation** | `./scripts/validation/validate-config-files.sh` or `... --dry-run` (print only) |
|
||||
| **Bridge deploy dry-run** | `./scripts/deploy-and-configure-weth9-bridge-chain138.sh --dry-run` (no keys/network) |
|
||||
@@ -49,7 +51,7 @@ These can be run from your current machine (dev, WSL, CI) without Proxmox or Led
|
||||
| **Validate via Proxmox SSH** | `bash scripts/run-via-proxmox-ssh.sh validate [--host 192.168.11.10]` — full shellcheck + genesis validation on host; installs jq/shellcheck if missing |
|
||||
| **CCIP checklist (dry)** | `bash scripts/ccip/ccip-deploy-checklist.sh` — validates env and prints deploy order (no deploy) |
|
||||
| **Tests** | `cd smom-dbis-138 && forge test` (e2e/integration subset if full suite slow); `cd alltra-lifi-settlement && forge test && npm run test:e2e -- --forceExit` |
|
||||
| **Quick wins (code)** | Add progress indicators to scripts; add `--dry-run` to scripts that lack it; extend config validation (see [IMPLEMENTATION_CHECKLIST](../10-best-practices/IMPLEMENTATION_CHECKLIST.md)) |
|
||||
| **Quick wins (code)** | Canonical wrapper-script quick wins are complete in this workspace: progress/timing, `--json-out` summaries, and stricter arg validation are in place on the main runners. Use [REPO_LOCAL_RECOMMENDATIONS_STATUS.md](REPO_LOCAL_RECOMMENDATIONS_STATUS.md) to distinguish remaining operator/external work from future maintenance. |
|
||||
| **Placeholders (code)** | All done or documented — see [REQUIRED_FIXES_UPDATES_GAPS](../REQUIRED_FIXES_UPDATES_GAPS.md) §4 (canonical addresses, AlltraAdapter setBridgeFee, smart accounts env, quote FABRIC_CHAIN_ID, .bak BAK_FILES_DEPRECATION). |
|
||||
| **API keys** | Sign up at URLs in [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md); add any new keys to `.env` |
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
# Next Steps — Index
|
||||
|
||||
**Last Updated:** 2026-03-28
|
||||
**Last Updated:** 2026-04-23
|
||||
**Purpose:** Single entry point for "what to do next." Pick by audience and granularity.
|
||||
|
||||
**Latest automation run (2026-03-28):** `./scripts/run-completable-tasks-from-anywhere.sh` completed (config validation, 61/61 on-chain, validation, reconcile print). `./scripts/run-all-operator-tasks-from-lan.sh --skip-backup` completed (NPMplus 40 hosts updated, Blockscout verification batch submitted). **Besu node lists:** push canonical `config/besu-node-lists/*` with `bash scripts/deploy-besu-node-lists-to-all.sh`; reload with `bash scripts/besu/restart-besu-reload-node-lists.sh` during a maintenance window if peers do not pick up static nodes without restart.
|
||||
**Latest automation run (2026-04-23):** `./scripts/run-completable-tasks-from-anywhere.sh --dry-run --json-out reports/status/run-completable-tasks-latest.json` completed and `bash scripts/verify/run-all-validation.sh --skip-genesis --json-out reports/status/run-all-validation-latest.json` passed, refreshing the current 61/61 on-chain-aware no-LAN flow plus advisory Solana/Tron/XRPL status. `./scripts/run-all-operator-tasks-from-lan.sh --skip-backup` remains the LAN/operator follow-on when secrets and host access are available. **Besu node lists:** push canonical `config/besu-node-lists/*` with `bash scripts/deploy-besu-node-lists-to-all.sh`; reload with `bash scripts/besu/restart-besu-reload-node-lists.sh` during a maintenance window if peers do not pick up static nodes without restart.
|
||||
|
||||
**Documentation index:** [../MASTER_INDEX.md](../MASTER_INDEX.md) — canonical docs, deprecated list, and navigation.
|
||||
**Repo-local recommendation tracker:** [REPO_LOCAL_RECOMMENDATIONS_STATUS.md](REPO_LOCAL_RECOMMENDATIONS_STATUS.md) — current slice of recommendations that can be advanced directly in this workspace.
|
||||
|
||||
**Continue and complete (operator/LAN):** (1) `./scripts/run-completable-tasks-from-anywhere.sh` then (2) `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` not set). Operator scripts load dotenv automatically.
|
||||
|
||||
@@ -15,7 +16,7 @@
|
||||
|
||||
| # | Action | Command / doc | Status |
|
||||
|---|--------|----------------|--------|
|
||||
| 1 | From anywhere: config + on-chain + validation | `./scripts/run-completable-tasks-from-anywhere.sh` | Done 2026-03-02 |
|
||||
| 1 | From anywhere: config + on-chain + validation | `./scripts/run-completable-tasks-from-anywhere.sh [--json-out reports/status/run-completable-tasks-latest.json]` | Done 2026-04-23 |
|
||||
| 2 | Before Chain 138 deploy: preflight (RPC, dotenv, nonce, cost) | `./scripts/deployment/preflight-chain138-deploy.sh [--cost]` | Done 2026-03-02 |
|
||||
| 3 | **Chain 138 next steps (all in one):** preflight → mirror+pool → register c* as GRU → verify | `./scripts/deployment/run-all-next-steps-chain138.sh [--dry-run] [--skip-mirror] [--skip-register-gru] [--skip-verify]` | Done 2026-03-02 |
|
||||
| 4 | Full deployment order (Phase 0–6) | [DEPLOYMENT_ORDER_OF_OPERATIONS.md](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) | Remaining (Operator) |
|
||||
|
||||
@@ -243,7 +243,7 @@ From **LAN** (SSH to Proxmox + reach NPMplus):
|
||||
## After running "complete all next steps"
|
||||
|
||||
1. **Automated (workspace):** `bash scripts/run-all-next-steps.sh` — report in `docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_*.md`.
|
||||
2. **Validators + tx-pool:** `bash scripts/fix-all-validators-and-txpool.sh` (requires SSH to .10, .11).
|
||||
2. **Validators + tx-pool:** `bash scripts/fix-all-validators-and-txpool.sh` then `bash scripts/maintenance/apply-chain138-strict-future-tx-pool.sh` then `bash scripts/clear-all-transaction-pools.sh` (requires SSH to .11, .12, .13, .14).
|
||||
3. **Flush stuck tx (if any):** `bash scripts/flush-stuck-tx-rpc-and-validators.sh --full` (clears RPC 2101 + validators 1000–1004).
|
||||
4. **Verify from LAN:** From a host on 192.168.11.x run `bash scripts/monitoring/monitor-blockchain-health.sh` and `bash scripts/skip-stuck-transactions.sh`. See [NEXT_STEPS_COMPLETION_RUN_20260208.md](../04-configuration/verification-evidence/NEXT_STEPS_COMPLETION_RUN_20260208.md) § Verify from LAN.
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
| **RPC_URL_138** (Chain 138 Core) | Deploy, verify, on-chain check | e.g. `http://192.168.11.211:8545` in `.env` |
|
||||
| **NPM_PASSWORD** | NPMplus backup, proxy host updates (502 fix) | `smom-dbis-138/.env` or root `.env`; from NPMplus UI |
|
||||
| **SSH to Proxmox** (e.g. root@192.168.11.10) | run-all-maintenance-via-proxmox-ssh, VM/CT creation, token-aggregation fix | SSH key or password to Proxmox host |
|
||||
| **SSH to dev VM** (CT 5700, `192.168.11.59`) | Gitea runner, `phoenix-deploy-api`, remote operator / automation (e.g. Devin) | LAN, VPN, UDM `76.53.10.40:22` allowlist, or [Cloudflare Tunnel + Access](../04-configuration/DEV_VM_SSH_REMOTE_ACCESS.md) |
|
||||
| **LINK** (on Chain 138 for bridge) | sendCrossChain (real); CCIP fees | Deployer wallet must hold LINK and approve bridge |
|
||||
| **Native gas (ETH/138)** | All Chain 138 deploys and txs | Deployer `0x4A66...` funded on 138 |
|
||||
| **Per-chain RPC + gas (Celo, Wemix, Gnosis)** | CCIP bridges deploy | CELO ~0.1, WEMIX ~0.4; RPC URLs in .env |
|
||||
|
||||
80
docs/00-meta/OPERATOR_HANDOFF_2026_04_24.md
Normal file
80
docs/00-meta/OPERATOR_HANDOFF_2026_04_24.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# Operator Handoff — 2026-04-24
|
||||
|
||||
Purpose: concise handoff for the Chain 138 Besu hardening, repo cleanup, and Git/Gitea recovery work completed on 2026-04-24.
|
||||
|
||||
## What changed
|
||||
|
||||
- Chain 138 block production and validator peer health were restored and hardened.
|
||||
- Strict future-txpool handling is now part of the standard incident path.
|
||||
- Duplicate legacy Besu RPC CTs were first retired, then destroyed after the canonical fleet was verified healthy.
|
||||
- Besu inventory was reconciled across all 5 Proxmox nodes, including `r630-03` and `r630-04`.
|
||||
- `1509` and `1510` were promoted into the canonical Besu inventory and checked-in allowlists/templates.
|
||||
- A cluster-wide Besu inventory audit was added so host-placement ambiguity is caught mechanically.
|
||||
- Surgical repo cleanup was completed, nested repos were cleaned and pushed, and the parent repo was reconciled across Gitea and GitHub.
|
||||
- `gitea.d-bis.org` TLS was repaired after an expired certificate blocked HTTPS pushes.
|
||||
|
||||
## Current live status
|
||||
|
||||
As of the final 2026-04-24 checks:
|
||||
|
||||
- `bash scripts/monitoring/monitor-blockchain-health.sh`
|
||||
- block production active
|
||||
- all 5 validators active
|
||||
- RPC peer count healthy
|
||||
- global txpool empty
|
||||
- overall status `HEALTHY`
|
||||
- `bash scripts/verify/check-cluster-besu-inventory.sh --json`
|
||||
- all 5 Proxmox nodes online
|
||||
- `missing_canonical_vmids = []`
|
||||
- `unexpected_besu_resources = []`
|
||||
|
||||
## Canonical Chain 138 incident sequence
|
||||
|
||||
Use this exact sequence when block production stalls, pending hashes keep reappearing, or future-nonce residue survives a normal txpool clear:
|
||||
|
||||
```bash
|
||||
bash scripts/fix-all-validators-and-txpool.sh
|
||||
bash scripts/maintenance/apply-chain138-strict-future-tx-pool.sh
|
||||
bash scripts/clear-all-transaction-pools.sh
|
||||
bash scripts/monitoring/monitor-blockchain-health.sh
|
||||
```
|
||||
|
||||
## Gitea TLS follow-up
|
||||
|
||||
The immediate HTTPS push blocker was an expired certificate on `gitea.d-bis.org`. The certificate was renewed and reattached through NPMplus #4, and the endpoint now verifies cleanly again.
|
||||
|
||||
Root cause of the short warning window: the live NPMplus certbot renewal config for `npm-7` included `required_profile = shortlived`, which forced a 7-day Let's Encrypt certificate instead of the normal 90-day issuance.
|
||||
|
||||
That live config was corrected on 2026-04-24 and `gitea.d-bis.org` was reissued successfully. The current live certificate now expires on `2026-07-24`.
|
||||
|
||||
Use this to check expiry before it becomes an outage:
|
||||
|
||||
```bash
|
||||
bash scripts/verify/check-gitea-certificate-expiry.sh
|
||||
WARN_DAYS=30 bash scripts/verify/check-gitea-certificate-expiry.sh
|
||||
bash scripts/maintenance/schedule-gitea-cert-check-cron.sh --install
|
||||
```
|
||||
|
||||
## Checkpoint commits
|
||||
|
||||
Key parent-repo commits in the final reconciliation chain:
|
||||
|
||||
- `a4738c1` merge of `gitea/master` into cleaned local `master`
|
||||
- `c23fdf4` explorer submodule alignment to a remote-backed commit
|
||||
- `7e2d9c5` the-order hook fix pointer update
|
||||
- `a1eacd3` duplicate Besu CT destruction + cluster inventory audit
|
||||
- `780648a` thirdweb sentries added to checked-in allowlists/templates
|
||||
- `219247b` Besu verifier gaps and monitor noise cleanup
|
||||
|
||||
Key nested-repo commits:
|
||||
|
||||
- `cross-chain-pmm-lps` `1cf845c`
|
||||
- `explorer-monorepo` remote already contained the equivalent live deploy workflow
|
||||
- `smom-dbis-138` `f3d2961`
|
||||
- `the-order` `702a836`
|
||||
|
||||
## Recommended operator habits
|
||||
|
||||
- Run `bash scripts/verify/check-cluster-besu-inventory.sh --json` after major topology or host-placement changes.
|
||||
- Run `bash scripts/verify/check-gitea-certificate-expiry.sh` periodically or wire it into a cron/monitoring path.
|
||||
- Keep parent-repo submodule pointer pushes behind successful child-repo pushes so no local-only hashes leak into the parent history.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Operator Ready Checklist — Copy-Paste Commands
|
||||
|
||||
**Last Updated:** 2026-03-28
|
||||
**Last Updated:** 2026-04-22
|
||||
**Purpose:** Single page with exact commands to complete every pending todo. Run from **repo root** on a host with **LAN** access (and `smom-dbis-138/.env` with `PRIVATE_KEY`, `NPM_PASSWORD` where noted).
|
||||
|
||||
**Do you have all necessary creds?** See [OPERATOR_CREDENTIALS_CHECKLIST.md](OPERATOR_CREDENTIALS_CHECKLIST.md) — per-task list of LAN, PRIVATE_KEY, NPM_PASSWORD, RPC_URL_138, SSH, LINK, gas, token balance.
|
||||
@@ -15,6 +15,10 @@
|
||||
|
||||
**Current live execution path:** [LIVE_SESSION_CRONOS_AND_TIER1_PHASE_C.md](../03-deployment/LIVE_SESSION_CRONOS_AND_TIER1_PHASE_C.md) — close Cronos config + LINK, then activate Tier 1 Phase C on Gnosis, Polygon, and BSC. **Current priority docs:** [FULLY_OPERATIONAL_EXECUTION_CHECKLIST.md](FULLY_OPERATIONAL_EXECUTION_CHECKLIST.md), [PHASE_C_PROFIT_FIRST_PRIORITY.md](../03-deployment/PHASE_C_PROFIT_FIRST_PRIORITY.md), [PHASE_C_TIER1_EXECUTION_TASK_SHEET.md](../03-deployment/PHASE_C_TIER1_EXECUTION_TASK_SHEET.md).
|
||||
|
||||
**Chain 138 txpool incident standard path:** `bash scripts/fix-all-validators-and-txpool.sh` then `bash scripts/maintenance/apply-chain138-strict-future-tx-pool.sh` then `bash scripts/clear-all-transaction-pools.sh` then `bash scripts/monitoring/monitor-blockchain-health.sh`. Use this sequence when block production stalls, pending hashes keep reappearing, or future-nonce residue survives a normal txpool clear.
|
||||
|
||||
**Gitea HTTPS push safeguard:** `bash scripts/verify/check-gitea-certificate-expiry.sh` (optional: `WARN_DAYS=30 bash scripts/verify/check-gitea-certificate-expiry.sh`). Use this when Git over HTTPS starts failing, or run it proactively before major push/deploy windows. To keep it checked automatically: `bash scripts/maintenance/schedule-gitea-cert-check-cron.sh --install`.
|
||||
|
||||
---
|
||||
|
||||
## Completed in this session (2026-03-26)
|
||||
@@ -106,6 +110,20 @@ Single contract retry: `./scripts/verify/run-contract-verification-with-proxy.sh
|
||||
|
||||
---
|
||||
|
||||
## 4b. LAN: Proxmox fleet vzdump, retention, cluster check
|
||||
|
||||
**Ref:** [STORAGE_GROWTH_AND_HEALTH.md](../04-configuration/STORAGE_GROWTH_AND_HEALTH.md)
|
||||
|
||||
- **Check corosync / nodes after any `pve-cluster` change:**
|
||||
`./scripts/maintenance/verify-pve-cluster-health.sh`
|
||||
Expect: **Quorate: Yes** and all expected nodes **online** in the JSON.
|
||||
- **Deploy weekly vzdump file retention (all PVE nodes):**
|
||||
`./scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh` (optional `--dry-run`). **Env:** `VZDUMP_PRUNE_KEEP=2` (default) when re-deploying.
|
||||
- **R630-01 daily all-running-CT backup** lives on the node as **`/usr/local/bin/proxmox-backup.sh`**, sourced from the repo: **`scripts/maintenance/proxmox-backup-all-running-ct.sh`**. Re-install after editing: `scp` + `chmod 755` (see file header for cron and **`VZDUMP_SKIP_VMIDS`** / **`VZDUMP_COMPRESS`**).
|
||||
- **Stuck `vzdump` or snap:** stop via **Proxmox UI task stop** if possible. If a **`task` worker** blocks **`/etc/pve`**, only then consider **`systemctl restart pve-cluster`** on that node, then re-run `verify-pve-cluster-health.sh`.
|
||||
|
||||
---
|
||||
|
||||
## 5. LAN: Run all operator tasks (backup + verify ± deploy ± create-vms)
|
||||
|
||||
```bash
|
||||
@@ -276,7 +294,7 @@ This is intentionally deferred with the rest of the Wemix path. If the chain is
|
||||
|
||||
---
|
||||
|
||||
## 10. DBIS Chain 138 — phased production path (matrix-driven)
|
||||
## 10. DeFi Oracle Meta Mainnet (Chain 138) — phased production path (matrix-driven)
|
||||
|
||||
**Ref:** [dbis_chain_138_technical_master_plan.md](../../dbis_chain_138_technical_master_plan.md), [DBIS_NODE_ROLE_MATRIX.md](../02-architecture/DBIS_NODE_ROLE_MATRIX.md)
|
||||
|
||||
|
||||
@@ -75,8 +75,8 @@
|
||||
| GET /health | ✅ Implemented | Returns { status, service } |
|
||||
| Gitea commit status | ✅ Implemented | pending/success/failure via GITEA_TOKEN |
|
||||
| HMAC webhook validation | ✅ Done | server.js: HMAC-SHA256 of raw body vs X-Gitea-Signature |
|
||||
| Deploy completion callback | ✅ Done (stub) | setGiteaCommitStatus success on /api/deploy accept; replace when real deploy runs |
|
||||
| Full deploy logic (Proxmox SSH) | ⏳ Planned | Next step doc |
|
||||
| Deploy completion callback | ✅ Done | success/failure posted after real target command and optional health check |
|
||||
| Full deploy logic (Proxmox SSH / target commands) | ✅ Done | `phoenix-deploy-api` resolves `deploy-targets.json` and executes mapped commands |
|
||||
| Sankofa Phoenix API (VMID 8600) integration | ⏳ Planned | Next step doc |
|
||||
|
||||
### OMNL Fineract API (omnl.hybxfinance.io)
|
||||
@@ -118,7 +118,7 @@
|
||||
|
||||
## Completed in this pass (2026-02-10 / 2026-02-11)
|
||||
|
||||
- **Phoenix Deploy API:** HMAC-SHA256 webhook validation (X-Gitea-Signature); deploy completion callback (stub reports success). Full deploy logic and Sankofa integration remain planned.
|
||||
- **Phoenix Deploy API:** HMAC-SHA256 webhook validation (X-Gitea-Signature); real target execution via `deploy-targets.json`; commit status updated after deploy success/failure; Sankofa API integration still planned.
|
||||
- **OMNL:** GL accounts (1000, 1050, 2000, 2100, 3000) created via `omnl-gl-accounts-create.sh`; ledger allocation T-001–T-008 posted via `omnl-ledger-post.sh`; discovery via `omnl-discovery.sh`; single-deposit helper `omnl-deposit-one.sh` (bulk = loop over discovery/CSV). See `scripts/omnl/README.md` and verification-evidence/OMNL_SCRIPTS_RUN_20260211.md.
|
||||
|
||||
**Still require operator/LAN/creds or external systems:** W0 (NPMplus, sendCrossChain, backup), Mifos 5800 access, Explorer DB, W2/W3 deploy, dbis_core TS bulk fix.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
| Question | Answer |
|
||||
|----------|--------|
|
||||
| **What is it?** | Chain 138 (Defi Oracle Meta Mainnet) added to Ledger Live’s supported networks so users see balances and send/receive on 138 in the app. |
|
||||
| **What is it?** | Chain 138 (DeFi Oracle Meta Mainnet) added to Ledger Live’s supported networks so users see balances and send/receive on 138 in the app. |
|
||||
| **Prerequisites** | Form already submitted (Tally). Nothing else you can do until Ledger replies. |
|
||||
| **Who** | You (point of contact). After Ledger responds, you or dev follow their 8-step process. |
|
||||
| **Steps to complete** | 1. **Now:** Wait for Ledger’s reply to the Tally form. 2. **When they reply:** Sign any agreement they send; follow their “Adding your blockchain to Ledger Wallet” steps (currency registration, device app, explorer, etc.). 3. **If they ask for PR/code:** Push materials from `~/projects/LedgerLive`, share link. 4. **After chain is live in Ledger Live:** Run Step 8 manual test plan (sync, receive, balance, broadcast) from `~/projects/LedgerLive/step-08-manual-tests/test-plan.md`. |
|
||||
|
||||
70
docs/00-meta/REPO_LOCAL_RECOMMENDATIONS_STATUS.md
Normal file
70
docs/00-meta/REPO_LOCAL_RECOMMENDATIONS_STATUS.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Repo-Local Recommendations Status
|
||||
|
||||
**Purpose:** Track the recommendations that can be advanced directly in this repo without requiring LAN-only access, private credentials, or third-party approvals.
|
||||
|
||||
**Canonical sources:** [ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md](ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md), [ADDITIONAL_RECOMMENDATIONS_TABLE.md](ADDITIONAL_RECOMMENDATIONS_TABLE.md), [RECOMMENDATIONS_AND_SUGGESTIONS.md](../10-best-practices/RECOMMENDATIONS_AND_SUGGESTIONS.md).
|
||||
|
||||
**Interpretation rule:** This page is only for **repo-local execution**. Operator/LAN tasks and external/vendor tasks stay in their own runbooks and checklists.
|
||||
|
||||
---
|
||||
|
||||
## Recently advanced in this workspace
|
||||
|
||||
| Area | Recommendation thread | Repo-local progress |
|
||||
|---|---|---|
|
||||
| Script UX | Progress indicators / execution visibility | `scripts/run-completable-tasks-from-anywhere.sh` and `scripts/verify/run-all-validation.sh` now print start time, per-step timing, and total elapsed time. |
|
||||
| Metrics collection | Machine-readable run summaries | `scripts/lib/run-summary.sh` now backs optional `--json-out` summaries for the two main no-LAN runners, writing per-step status/timing JSON under `reports/status/` when requested. |
|
||||
| Wrapper consistency | Shared summary coverage on orchestration entry points | The E2E, Chain 138 next-steps, and LAN operator wrappers now also expose optional `--json-out` summaries using the same shared helper. |
|
||||
| Monitoring / health checks | Public non-EVM reachability + lane status | Added `scripts/verify/check-non-evm-network-health.sh`, `scripts/verify/build-non-evm-lane-status.py`, and generated outputs under `reports/status/`. |
|
||||
| Documentation accuracy | Keep docs aligned with current runner behavior | Stale `Step 1/4–4/4` references were refreshed to the current five-step runner behavior. |
|
||||
| Documentation discoverability | Cross-links from canonical entry points | Added non-EVM health/lane references to `MASTER_INDEX.md`, `NEXT_STEPS_INDEX.md`, and `scripts/verify/README.md`. |
|
||||
|
||||
---
|
||||
|
||||
## Repo-local recommendation buckets
|
||||
|
||||
### 1. In progress now
|
||||
|
||||
| Recommendation | Status | Current repo state |
|
||||
|---|---|---|
|
||||
| Progress indicators in scripts | Completed for canonical high-use wrappers | Main no-LAN runners plus the E2E, Chain 138 orchestration, and LAN operator wrappers now show clear execution progress and timing. |
|
||||
| Improve troubleshooting and quick-reference discoverability | Advanced | Existing quick-reference and troubleshooting docs are present; index coverage is being improved incrementally instead of creating duplicates. |
|
||||
| Script header consistency | Partially addressed | New scripts follow the header pattern; older scripts still vary. Use [SCRIPT_HEADER_TEMPLATE.md](../10-best-practices/SCRIPT_HEADER_TEMPLATE.md) when touching them. |
|
||||
| Documentation accuracy review | Ongoing | Current pass fixed runner-step drift and added new reference links; broader stale-status review remains ongoing. |
|
||||
|
||||
### 2. Ready for more repo-local work
|
||||
|
||||
| Recommendation | Why it is still repo-local | Suggested next move |
|
||||
|---|---|---|
|
||||
| Script header/template normalization | Completed for touched canonical wrappers | High-use wrapper scripts edited in this pass now follow the current header/help/argument-validation pattern. |
|
||||
| Input validation in scripts | Completed for touched canonical wrappers | The main wrapper scripts now reject unknown args and validate `--wave` / `--json-out` input rather than silently accepting drift. |
|
||||
| Structured logging for scripts | Advanced | Shared timing/summary behavior is centralized in `scripts/lib/run-summary.sh`; deeper log-level normalization outside the canonical wrappers is no longer part of the active repo-local backlog. |
|
||||
| Developer documentation / standards | Completed for current canonical flows | Canonical docs now reflect current five-step/no-LAN flow, current 61-address on-chain checks, and summary JSON support. |
|
||||
| Metrics collection for script execution | Completed for canonical wrappers | Main no-LAN, E2E, Chain 138, and LAN operator wrappers now support optional `--json-out` summaries with per-step status/timing. |
|
||||
|
||||
### 3. Not repo-local in this workspace
|
||||
|
||||
| Recommendation | Reason |
|
||||
|---|---|
|
||||
| Blockscout verification settlement, Proxmox firewall changes, SSH hardening, validator key permissions | Requires LAN/host access and sometimes secrets. |
|
||||
| CoinGecko / CMC / Ledger / Trust Wallet / Consensys / Chainlist submissions | Requires external accounts, outreach, or third-party review. |
|
||||
| Real bridge sends, operator backups, Proxmox VM provisioning | Requires private keys, LAN, or live infrastructure changes. |
|
||||
|
||||
---
|
||||
|
||||
## Current repo-local completion state
|
||||
|
||||
The currently identified **repo-local** recommendation backlog in the canonical trackers has been advanced to completion for the main wrapper scripts, validation runners, and index docs. What remains is either:
|
||||
|
||||
1. operator/LAN execution,
|
||||
2. secrets-required live actions,
|
||||
3. third-party/vendor follow-through,
|
||||
4. or future maintenance when script behavior changes again.
|
||||
|
||||
---
|
||||
|
||||
## Pointers
|
||||
|
||||
- For **all** recommendations: [ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md](ALL_RECOMMENDATIONS_AND_IMPROVEMENTS_LIST.md)
|
||||
- For **operator / LAN** actions: [RECOMMENDATIONS_OPERATOR_CHECKLIST.md](RECOMMENDATIONS_OPERATOR_CHECKLIST.md)
|
||||
- For **next-step routing**: [NEXT_STEPS_INDEX.md](NEXT_STEPS_INDEX.md)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user