Compare commits
50 Commits
main
...
devin/1777
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a172101a6 | ||
|
|
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 |
@@ -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\"}"
|
||||
25
.gitea/workflow-sources/validate-on-pr.yml
Normal file
25
.gitea/workflow-sources/validate-on-pr.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
# Canonical PR validation workflow. Keep source and checked-in workflow copies byte-identical.
|
||||
# Validation checks both file sync and main/master parity.
|
||||
# PR-only: push validation already runs in deploy-to-phoenix.yml; this gives PRs the same
|
||||
# no-LAN checks without the deploy job (and without deploy secrets).
|
||||
name: Validate (PR)
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
run-all-validation:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Fetch deploy branches for workflow parity check
|
||||
run: |
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
|
||||
if git remote | grep -qx gitea; then
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
|
||||
fi
|
||||
git fetch --depth=1 "$REMOTE" main master
|
||||
- name: run-all-validation (no LAN, no genesis)
|
||||
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\"}"
|
||||
|
||||
25
.gitea/workflows/validate-on-pr.yml
Normal file
25
.gitea/workflows/validate-on-pr.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
# Canonical PR validation workflow. Keep source and checked-in workflow copies byte-identical.
|
||||
# Validation checks both file sync and main/master parity.
|
||||
# PR-only: push validation already runs in deploy-to-phoenix.yml; this gives PRs the same
|
||||
# no-LAN checks without the deploy job (and without deploy secrets).
|
||||
name: Validate (PR)
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
branches: [main, master]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
run-all-validation:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Fetch deploy branches for workflow parity check
|
||||
run: |
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-origin}"
|
||||
if git remote | grep -qx gitea; then
|
||||
REMOTE="${GITEA_WORKFLOW_REMOTE:-gitea}"
|
||||
fi
|
||||
git fetch --depth=1 "$REMOTE" main master
|
||||
- name: run-all-validation (no LAN, no genesis)
|
||||
run: bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
67
.gitignore
vendored
67
.gitignore
vendored
@@ -74,3 +74,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.
|
||||
|
||||
13
AGENTS.md
13
AGENTS.md
@@ -11,15 +11,18 @@ Orchestration for Proxmox VE, Chain 138 (`smom-dbis-138/`), explorers, NPMplus,
|
||||
| Need | Location |
|
||||
|------|-----------|
|
||||
| Doc index | `docs/MASTER_INDEX.md` |
|
||||
| Universal resource activation (manifest, CI, Phoenix) | `docs/04-configuration/universal-resource-activation/UNIVERSAL_RESOURCE_WIRING.md`, `config/universal-resource-activation/manifest.json`, `node scripts/validate/validate-universal-resource-activation.mjs`, `bash scripts/verify/smoke-universal-resource-activation.sh` (add `--http` or `PHOENIX_BASE_URL=…` for live API), `GET` `/api/v1/universal-resource-activation/manifest` on `phoenix-deploy-api` |
|
||||
| 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 +30,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",
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
@@ -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}"
|
||||
|
||||
@@ -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
@@ -1250,7 +1250,10 @@
|
||||
"port": 80
|
||||
}
|
||||
],
|
||||
"fqdns": []
|
||||
"fqdns": [
|
||||
"tsunamiswap.com",
|
||||
"app.tsunamiswap.com"
|
||||
]
|
||||
},
|
||||
{
|
||||
"vmid": 10070,
|
||||
@@ -1459,7 +1462,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 +1654,9 @@
|
||||
"port": 80
|
||||
}
|
||||
],
|
||||
"fqdns": []
|
||||
"fqdns": [
|
||||
"tsunamiswap.com"
|
||||
]
|
||||
},
|
||||
{
|
||||
"vmid": 5201,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
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
|
||||
}
|
||||
83
config/universal-resource-activation/manifest.json
Normal file
83
config/universal-resource-activation/manifest.json
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"schemaVersion": "1.0.0",
|
||||
"updatedAt": "2026-04-24T00:00:00Z",
|
||||
"description": "Canonical in-repo store for universal resource activation (SKR, server funds, infra). Replace example-* rows in production; keep valid JSON and run scripts/validate/validate-universal-resource-activation.mjs 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:example:skr-pilot-placeholder",
|
||||
"schemaVersion": 1,
|
||||
"displayName": "Example SKR / custody position (pilot template)",
|
||||
"description": "Replace with a real safekeeping or strategic evidence-backed record. Not production.",
|
||||
"family": "SKR_SAFEKEEPING",
|
||||
"subType": "CUSTODY_STATEMENT",
|
||||
"ownerParticipantId": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"jurisdiction": "TBD",
|
||||
"policyProfileId": "institutional_custody_skr_v1",
|
||||
"tokenizationMode": "NONE",
|
||||
"quantity": "0",
|
||||
"unitOfMeasure": "USD",
|
||||
"valuationMethod": "NOTIONAL",
|
||||
"encumbranceState": "unencumbered",
|
||||
"lifecycleState": "draft",
|
||||
"deployabilityState": "informational_only",
|
||||
"evidenceRefs": []
|
||||
},
|
||||
{
|
||||
"resourceId": "ura:example:server-funds-pilot",
|
||||
"schemaVersion": 1,
|
||||
"displayName": "Example server funds pool (pilot template)",
|
||||
"description": "Logical funding resource; bind to OMNL/Fineract and server-funds-sidecar when SoR is frozen. Not a wallet balance.",
|
||||
"family": "SERVER_FUNDS",
|
||||
"subType": "TREASURY_POOL",
|
||||
"ownerParticipantId": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"jurisdiction": "TBD",
|
||||
"policyProfileId": "server_funds_treasury_v1",
|
||||
"tokenizationMode": "NONE",
|
||||
"quantity": "0",
|
||||
"unitOfMeasure": "USD",
|
||||
"valuationMethod": "NOTIONAL",
|
||||
"encumbranceState": "unencumbered",
|
||||
"lifecycleState": "draft",
|
||||
"deployabilityState": "funding_eligible",
|
||||
"evidenceRefs": []
|
||||
},
|
||||
{
|
||||
"resourceId": "ura:example:infra-r630-01-capacity",
|
||||
"schemaVersion": 1,
|
||||
"displayName": "Example R630-01 capacity slice (pilot template)",
|
||||
"description": "Operational capacity record; not a tradable security. See reports/storage and ALL_VMIDS_ENDPOINTS for live inventory.",
|
||||
"family": "INFRA_CAPACITY",
|
||||
"subType": "BUNDLE",
|
||||
"ownerParticipantId": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"jurisdiction": "LAN",
|
||||
"policyProfileId": "infra_capacity_ops_v1",
|
||||
"tokenizationMode": "NONE",
|
||||
"infraHostId": "r630-01",
|
||||
"infraBundleId": "api_small",
|
||||
"encumbranceState": "unencumbered",
|
||||
"lifecycleState": "active",
|
||||
"deployabilityState": "infra_allocatable",
|
||||
"evidenceRefs": []
|
||||
}
|
||||
],
|
||||
"evidencePackages": [
|
||||
{
|
||||
"evidencePackageId": "ura:example:evidence-ura-bootstrap",
|
||||
"resourceIds": [
|
||||
"ura:example:skr-pilot-placeholder",
|
||||
"ura:example:server-funds-pilot",
|
||||
"ura:example:infra-r630-01-capacity"
|
||||
],
|
||||
"actionType": "REGISTER",
|
||||
"initiator": "repo_bootstrap",
|
||||
"timestamp": "2026-04-24T00:00:00Z",
|
||||
"reconciliationStatus": "matched",
|
||||
"explanation": "Bootstrap example package linking the three template resources; replace with real packages per UNIVERSAL_RESOURCE_PILOT_PLAN.md"
|
||||
}
|
||||
]
|
||||
}
|
||||
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)
|
||||
@@ -52,6 +52,16 @@ git remote add origin https://gitea.d-bis.org/d-bis/explorer-monorepo.git
|
||||
|
||||
---
|
||||
|
||||
## atomic-swap-dapp bootstrap remote
|
||||
|
||||
`atomic-swap-dapp` was scaffolded first as a standalone local repository and then mounted into the parent as a submodule. Its current `.gitmodules` URL may point at a local bare repository during bootstrap.
|
||||
|
||||
That is acceptable for initial local development, but before other operators rely on the parent repo for cloning, replace the local URL with the canonical hosted remote and then commit the updated `.gitmodules` plus submodule pointer.
|
||||
|
||||
See [ATOMIC_SWAP_DAPP_SUBMODULE.md](../03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md) for the submodule purpose and manifest-sync workflow.
|
||||
|
||||
---
|
||||
|
||||
## gru-docs branch
|
||||
|
||||
`gru-docs` may track **`docs-review-fixes`** (not `main`) while documentation review is open. The parent submodule pointer is intentional until upstream merges to `main` and the pointer is updated.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
> Historical note (2026-03-26): this report preserves an earlier PMM status snapshot. The current canonical Chain 138 PMM stack is `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`.
|
||||
|
||||
**Date:** 2026-03-02
|
||||
**Date:** 2026-03-02 (counts refreshed 2026-04-21 for on-chain list)
|
||||
**Purpose:** For each remaining task, verify current state before marking complete or executing. Use this report to decide what still needs to be run by Operator/LAN vs what is already satisfied.
|
||||
|
||||
---
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
| Check | Result |
|
||||
|-------|--------|
|
||||
| **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 59/59 on-chain (Chain 138), validation OK, reconcile-env printed |
|
||||
| **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 61/61 on-chain (Chain 138; per `check-contracts-on-chain-138.sh`), validation OK, reconcile-env printed |
|
||||
| **preflight-chain138-deploy.sh** | Passed — dotenv exists, RPC Core (chainId 138), nonce consistent, no stuck txs |
|
||||
|
||||
---
|
||||
@@ -23,7 +23,7 @@
|
||||
| Item | Status | Notes |
|
||||
|------|--------|-------|
|
||||
| Phase 0 (prereqs) | Satisfied | Preflight passed; .env and RPC OK |
|
||||
| Phase 1 (Chain 138 core) | Done | 59/59 contracts present |
|
||||
| Phase 1 (Chain 138 core) | Done | 61/61 contracts present (current address list in check-contracts-on-chain-138.sh) |
|
||||
| Phase 2 (TransactionMirror + PMM pools) | Done | Mirror deployed; all three pools created (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) |
|
||||
| Phase 3 (Liquidity + DODOPMMProvider) | Partially done | DODOPMMProvider deployed at `0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`; corrected canonical stack aligned. **Remaining:** add liquidity (optional per doc) via `AddLiquidityPMMPoolsChain138.s.sol` or cast |
|
||||
| Phase 4–6 | Not run | Optional / other chains; Operator |
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
# TODOs — Consolidated Task List
|
||||
|
||||
**Last Updated:** 2026-03-28
|
||||
**Last Updated:** 2026-04-23
|
||||
**Last verification run:** 2026-03-28 — completable ✅ (61/61 on-chain), operator `--skip-backup` ✅ (NPMplus 40 hosts updated, Blockscout verify batch). Prior 2026-03-06 run: validate-config ✅, check-contracts, PMM pool balances ✅ (Pool 1: 2M/2M), preflight ✅, token-aggregation build ✅, E2E routing ✅ (37 domains, 0 failed). **Mint + add-liquidity** 2026-03-06: 1M each minted, 500k each added. **Next-steps check:** [NEXT_STEPS_LIST.md](NEXT_STEPS_LIST.md); B.1/B.2/B.3 partially blocked (WEMIX tabled; LINK relay runbook pending).
|
||||
**Purpose:** Single checklist of all next steps and remaining tasks. **Indonesia / HYBX-BATCH-001 zip (4.995 ship-ready):** [HYBX-BATCH-001 — transaction package ship-ready](#hybx-batch-001--transaction-package-ship-ready-4995) below. **Full execution order (multiple routes + liquidity):** [EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md](EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md). **Additional paths (registry, LiFi/Jumper, Etherlink, 13×13):** [ADDITIONAL_PATHS_AND_EXTENSIONS.md](../04-configuration/ADDITIONAL_PATHS_AND_EXTENSIONS.md). **Dotenv/markdown audit (required info, gaps, recommendations):** [DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md](DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md). Source of truth for the full list: [NEXT_STEPS_AND_REMAINING_TODOS.md](NEXT_STEPS_AND_REMAINING_TODOS.md). **Token deployments remaining:** [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md). **Routing / swap / cross-chain:** [TASKS_ROUTING_SWAP_CROSSCHAIN.md](TASKS_ROUTING_SWAP_CROSSCHAIN.md) (A1–A5, B1–B8, C1–C8, D1–D3, E1–E2). **Verified list (LAN/Operator):** [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md](REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) — run bash/curl to confirm; doc updated 2026-03-03.
|
||||
|
||||
**Quick run:** From anywhere (no LAN): `./scripts/run-completable-tasks-from-anywhere.sh`. Before Chain 138 deploy: `./scripts/deployment/preflight-chain138-deploy.sh [--cost]`. **Chain 138 next steps (all in one):** `./scripts/deployment/run-all-next-steps-chain138.sh [--dry-run] [--skip-mirror] [--skip-register-gru] [--skip-verify]` — preflight → mirror+pool → register c* as GRU → verify. From LAN with secrets: `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms]`. **E2E flows (full parallel):** `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run]` — [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md).
|
||||
**Quick run:** From anywhere (no LAN): `./scripts/run-completable-tasks-from-anywhere.sh [--json-out reports/status/run-completable-tasks-latest.json]`. Before Chain 138 deploy: `./scripts/deployment/preflight-chain138-deploy.sh [--cost]`. **Chain 138 next steps (all in one):** `./scripts/deployment/run-all-next-steps-chain138.sh [--dry-run] [--skip-mirror] [--skip-register-gru] [--skip-verify] [--json-out reports/status/run-all-next-steps-chain138-latest.json]` — preflight → mirror+pool → register c* as GRU → verify. From LAN with secrets: `./scripts/run-all-operator-tasks-from-lan.sh [--deploy] [--create-vms] [--json-out reports/status/run-all-operator-tasks-latest.json]`. **E2E flows (full parallel):** `./scripts/run-e2e-flow-tasks-full-parallel.sh [--dry-run] [--json-out reports/status/run-e2e-flow-tasks-latest.json]` — [TASKS_TO_INCREASE_ALL_E2E_FLOWS](TASKS_TO_INCREASE_ALL_E2E_FLOWS.md).
|
||||
|
||||
**Full deployment order:** [DEPLOYMENT_ORDER_OF_OPERATIONS.md](../03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md) — Phase 0–6. **Remaining for full network coverage:** [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) — A: mint + add liquidity (138) → B–D. **Status to continue (before Phase A mint):** [REMAINING_DEPLOYMENTS § Status to continue](../03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) and [CORE_RPC_2101_2102_TXPOOL_ADMIN_STATUS §7](../04-configuration/CORE_RPC_2101_2102_TXPOOL_ADMIN_STATUS.md) — restart validator 1004, clear tx pool, then mint. **Phase execution 2026-03-04:** A.1 attempted (tx timeout); A.2 pending; B.1 Celo ✅; B.2 Wemix blocked; B.3 fund-ccip ready; Phase C/D runbooks. **Full plan:** [COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md](COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md).
|
||||
|
||||
**Last completable run (2026-03-02):** Config validation OK; on-chain 59/59; run-all-validation --skip-genesis OK; reconcile-env. **Preflight** and **run-all-next-steps-chain138.sh** run: preflight passed; mirror/pool present; 12 c* already GRU-registered; verification 59/59. Documentation: MASTER_INDEX, README, RUNBOOKS_MASTER_INDEX created; deprecated list and consolidation plan updated. Progress indicators (Step 1/4–4/4) in run-completable-tasks-from-anywhere.sh. E2E flow tasks script and doc updates (ADDRESS_MATRIX_AND_STATUS, RECOMMENDATIONS R2, NEXT_STEPS_FOR_YOU) completed. **Optional completed (2026-02-27 / 2026-03-01):** DeployCompliantFiatTokens (10 tokens); Blockscout verification; MCP allowlist-138; add-liquidity runbook; token-aggregation fallbacks + ENV_EXAMPLE_CONTENT; E2E routing verification; PMM_DEX_ROUTING_STATUS + REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS updated; cCADT line (commented) in DeployCompliantFiatTokens.s.sol. **Within-scope list (2026-02-27):** CompliantWrappedToken.sol; DeployCompliantFiatTokensForChain.s.sol (c* any chain); DeployCWTokens.s.sol (cWUSDT/cWUSDC); deploy-tokens-and-weth-all-chains-skip-canonical.sh extended with --deploy-c, --deploy-cw, 651940 env validation; TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS §6 implemented; ENV_EXAMPLE_CONTENT c*/cW*/651940 vars. **2026-02-27:** Deployment order doc, preflight script, deployment safety added; todos synced.
|
||||
**Latest repo-local automation refresh (2026-04-23):** `run-all-validation.sh --skip-genesis --json-out reports/status/run-all-validation-latest.json` passed; advisory non-EVM reachability refreshed (Solana slot 415173228, Tron block 82099136 / chain id 728126428, XRPL validated ledger 103760578). The canonical wrapper scripts now support optional machine-readable run summaries via `--json-out`: `run-completable-tasks-from-anywhere.sh`, `run-e2e-flow-tasks-full-parallel.sh`, `run-all-next-steps-chain138.sh`, and `run-all-operator-tasks-from-lan.sh`.
|
||||
|
||||
**Verified (LAN/Operator) 2026-03-06:** Preflight ✅; Core RPC 192.168.11.211:8545 ✅; deployer balance script ✅ (native ETH OK; WETH/cUSDT/cUSDC = 0 → add liquidity blocked); on-chain 59/59 ✅; config validation ✅; token-aggregation build ✅; E2E 502s fixed (address-all-remaining-502s + NPM; E2E 37 domains 0 failed); operator script run ✅ (NPMplus RPC fix, Blockscout verify). **Earlier:** 2026-03-03–04 deployer balance, on-chain, DODOPMMIntegration canonical cUSDT/cUSDC — [EXPLORER_TOKEN_LIST_CROSSCHECK](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8.
|
||||
**Last completable run (current canonical flow):** Config validation OK; on-chain 61/61; run-all-validation --skip-genesis OK; non-EVM status refresh OK; reconcile-env. **Preflight** and **run-all-next-steps-chain138.sh** run: preflight passed; mirror/pool present; 12 c* already GRU-registered; verification 61/61. Documentation: MASTER_INDEX, README, RUNBOOKS_MASTER_INDEX created; deprecated list and consolidation plan updated. Progress indicators and summary JSON support were added across the canonical wrapper scripts. **Optional completed (2026-02-27 / 2026-03-01):** DeployCompliantFiatTokens (10 tokens); Blockscout verification; MCP allowlist-138; add-liquidity runbook; token-aggregation fallbacks + ENV_EXAMPLE_CONTENT; E2E routing verification; PMM_DEX_ROUTING_STATUS + REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS updated; cCADT line (commented) in DeployCompliantFiatTokens.s.sol. **Within-scope list (2026-02-27):** CompliantWrappedToken.sol; DeployCompliantFiatTokensForChain.s.sol (c* any chain); DeployCWTokens.s.sol (cWUSDT/cWUSDC); deploy-tokens-and-weth-all-chains-skip-canonical.sh extended with --deploy-c, --deploy-cw, 651940 env validation; TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS §6 implemented; ENV_EXAMPLE_CONTENT c*/cW*/651940 vars. **2026-02-27:** Deployment order doc, preflight script, deployment safety added; todos synced.
|
||||
|
||||
**Verified (LAN/Operator) 2026-03-06:** Preflight ✅; Core RPC 192.168.11.211:8545 ✅; deployer balance script ✅ (native ETH OK; WETH/cUSDT/cUSDC = 0 → add liquidity blocked); on-chain 59/59 at the time ✅; config validation ✅; token-aggregation build ✅; E2E 502s fixed (address-all-remaining-502s + NPM; E2E 37 domains 0 failed); operator script run ✅ (NPMplus RPC fix, Blockscout verify). **Current canonical on-chain check:** 61/61. **Earlier:** 2026-03-03–04 deployer balance, on-chain, DODOPMMIntegration canonical cUSDT/cUSDC — [EXPLORER_TOKEN_LIST_CROSSCHECK](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8.
|
||||
|
||||
**Operator copy-paste commands:** [OPERATOR_READY_CHECKLIST.md](OPERATOR_READY_CHECKLIST.md) — one page with exact commands for every pending todo.
|
||||
|
||||
@@ -65,7 +67,7 @@
|
||||
|
||||
## First (before any Chain 138 deploy)
|
||||
|
||||
Verified 2026-03-06: preflight ✅, 0a balance check ✅ (script runs; WETH/cUSDT/cUSDC = 0), config validation ✅, on-chain 59/59 ✅. Re-run 0a/0/0c before each deploy.
|
||||
Verified 2026-03-06: preflight ✅, 0a balance check ✅ (script runs; WETH/cUSDT/cUSDC = 0), config validation ✅, on-chain 59/59 at the time ✅. Current canonical on-chain check: 61/61. Re-run 0a/0/0c before each deploy.
|
||||
|
||||
| # | Task | Owner | Ref |
|
||||
|---|------|--------|-----|
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
## 12. DBIS RTGS / HYBX / Hyperledger E2E stack
|
||||
|
||||
**Purpose:** Track everything required for a true end-to-end RTGS stack across DBIS Chain 138, HYBX sidecars, OMNL / Fineract, and the external banking / interoperability integrations we currently have access to.
|
||||
**Purpose:** Track everything required for a true end-to-end RTGS stack across DeFi Oracle Meta Mainnet (Chain 138), HYBX sidecars, OMNL / Fineract, and the external banking / interoperability integrations we currently have access to.
|
||||
|
||||
### 12.1 Participant / treasury / GL model
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
2. Click network dropdown (top of MetaMask)
|
||||
3. Click "Add Network" → "Add a network manually"
|
||||
4. Enter the following:
|
||||
- **Network Name**: `Defi Oracle Meta Mainnet` or `SMOM-DBIS-138`
|
||||
- **Network Name**: `DeFi Oracle Meta Mainnet` or `SMOM-DBIS-138`
|
||||
- **RPC URL**: `https://rpc-http-pub.d-bis.org` ⚠️ **Important: Must be public endpoint**
|
||||
- **Chain ID**: `138` (must be decimal, not hex)
|
||||
- **Currency Symbol**: `ETH`
|
||||
|
||||
147
docs/02-architecture/CLIENT_DIVISION_TERMINOLOGY.md
Normal file
147
docs/02-architecture/CLIENT_DIVISION_TERMINOLOGY.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# Client And Division Terminology
|
||||
|
||||
**Last Updated:** 2026-04-22
|
||||
**Status:** Canonical terminology baseline for Phoenix, Sankofa, and Gitea alignment
|
||||
**Related:** [PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md](PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md), [EXPECTED_WEB_CONTENT.md](EXPECTED_WEB_CONTENT.md), [SERVICE_DESCRIPTIONS.md](SERVICE_DESCRIPTIONS.md), [../04-configuration/PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md](../04-configuration/PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md)
|
||||
|
||||
---
|
||||
|
||||
## Purpose
|
||||
|
||||
Define the canonical vocabulary for the **commercial / governance layer** and keep it distinct from:
|
||||
|
||||
- **technical tenancy**
|
||||
- **identity provider terminology**
|
||||
- **network / infrastructure placement terminology**
|
||||
- **Mifos / Fineract business-model terminology**
|
||||
|
||||
Use these terms consistently in docs, APIs, config, and UI copy unless a client requires a more specific business label.
|
||||
|
||||
---
|
||||
|
||||
## Canonical mappings
|
||||
|
||||
| Canonical term | Equivalent / current implementation | Use |
|
||||
|----------------|--------------------------------------|-----|
|
||||
| **Client** | GitHub **Enterprise**; Azure **billing profile**; current Gitea **Organization** | Top-level commercial / governance account |
|
||||
| **Division** | Client-specific subdivision | Generic umbrella term below Client |
|
||||
| **Division type** | `realm`, `nexus`, `department`, `program`, `legal_entity`, `region`, `office`, `workspace`, etc. | Technical normalization of how a client structures divisions |
|
||||
| **Tenant** | Phoenix / Kubernetes / app isolation unit | Technical tenancy only |
|
||||
| **Site** | Proxmox / network / physical location | Infrastructure placement only |
|
||||
|
||||
**Rule:** when the repo needs a neutral term, prefer **Client** and **Division**.
|
||||
|
||||
---
|
||||
|
||||
## Current clients
|
||||
|
||||
These are the canonical Phoenix client records and should be treated as the top governance / commercial layer:
|
||||
|
||||
- `DBIS`
|
||||
- `ICCC`
|
||||
- `OMNL`
|
||||
- `XOM`
|
||||
- `AR`
|
||||
- `EI`
|
||||
- `PANDA`
|
||||
- `SAID`
|
||||
|
||||
In current Gitea implementation, each of these maps to an **Organization**.
|
||||
In Phoenix product language, each of these maps to a **Client**.
|
||||
|
||||
---
|
||||
|
||||
## Division model
|
||||
|
||||
Each client may implement subdivisions differently. Phoenix must remain flexible enough to support:
|
||||
|
||||
- business labels that are client-specific
|
||||
- multiple subdivision types under one client
|
||||
- optional mapping from business divisions to technical tenants
|
||||
|
||||
Recommended normalized model:
|
||||
|
||||
```text
|
||||
Client
|
||||
Division
|
||||
Repository / App / Service / Workspace / Environment
|
||||
```
|
||||
|
||||
Examples:
|
||||
|
||||
- `AR`
|
||||
- divisions labeled **Realms**
|
||||
- divisions labeled **Nexus**
|
||||
- `OMNL`
|
||||
- divisions labeled **legal entities**
|
||||
- divisions labeled **programs**
|
||||
- divisions labeled **regional offices**
|
||||
- `DBIS`
|
||||
- divisions labeled **departments**
|
||||
- divisions labeled **member institutions**
|
||||
- divisions labeled **programs**
|
||||
|
||||
---
|
||||
|
||||
## Reserved words and collision policy
|
||||
|
||||
The following words already carry specific meanings in the repo and should **not** be used as the global neutral replacement for Division.
|
||||
|
||||
| Term | Reserved meaning | Why it is not the generic business term |
|
||||
|------|------------------|------------------------------------------|
|
||||
| **Realm** | Keycloak / OIDC identity boundary; also AR-specific business label | Would collide with both identity and AR business language |
|
||||
| **Tenant** | Technical isolation boundary in Phoenix / Kubernetes / app models | Already used for namespaces, RBAC, and multi-tenant platform semantics |
|
||||
| **Site** | Physical / infrastructure placement (Proxmox, network, datacenter) | Already means location / topology |
|
||||
| **Office** | Org-chart / Fineract / institutional office structure | Too domain-specific for use as the global subdivision primitive |
|
||||
| **Nexus** | Sankofa / Phoenix branding and AR-specific division label | Strong branding meaning; not stable as a generic structural term |
|
||||
|
||||
---
|
||||
|
||||
## Implementation guidance
|
||||
|
||||
### Docs
|
||||
|
||||
- Use **Client** for the top account layer.
|
||||
- Use **Division** when discussing subdivisions generically.
|
||||
- Use the client-native label only when the business context needs it.
|
||||
- Example: “AR division type: `realm`”
|
||||
- Example: “Keycloak realm”
|
||||
|
||||
### UI
|
||||
|
||||
- Internal platform/admin UI may display:
|
||||
- `Client`
|
||||
- `Division`
|
||||
- Client-facing UI may replace `Division` with the client’s native label.
|
||||
- Example: `Realm`
|
||||
- Example: `Program Office`
|
||||
- Example: `Legal Entity`
|
||||
|
||||
### API / config
|
||||
|
||||
- Prefer normalized fields such as:
|
||||
- `clientId`
|
||||
- `divisionId`
|
||||
- `divisionType`
|
||||
- `tenantId`
|
||||
- `siteId`
|
||||
|
||||
- Avoid overloading:
|
||||
- `realm`
|
||||
- `tenant`
|
||||
- `site`
|
||||
|
||||
unless that exact platform-specific meaning is intended.
|
||||
|
||||
---
|
||||
|
||||
## Interpretation guide
|
||||
|
||||
When reading older docs in this repo:
|
||||
|
||||
- “organization” in Gitea context usually means **Client**
|
||||
- “tenant” in Phoenix platform context usually means **technical tenant**, not client
|
||||
- “realm” in identity docs means **Keycloak realm**
|
||||
- “site” means **infrastructure location**
|
||||
|
||||
If a document mixes these layers, update it toward this terminology baseline.
|
||||
@@ -183,7 +183,7 @@ This document reconciles **expected intent**, **current deployment state**, and
|
||||
|
||||
## 8b. public-2138.defi-oracle.io & rpc.public-2138.defi-oracle.io (testnet)
|
||||
|
||||
**Role:** Public explorer UI and JSON-RPC for **Defi Oracle Meta Testnet** (chain ID **2138**, hex `0x85a`). Not the Chain 138 explorer (`explorer.d-bis.org`).
|
||||
**Role:** Public explorer UI and JSON-RPC for **DeFi Oracle Meta Testnet** (chain ID **2138**, hex `0x85a`). Not the Chain 138 explorer (`explorer.d-bis.org`).
|
||||
|
||||
### Intended function
|
||||
- Explorer: `https://public-2138.defi-oracle.io` (per `pr-workspace/chains/_data/chains/eip155-2138.json`)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
**Last Updated:** 2026-03-25
|
||||
**Status:** Canonical baseline (reconciles assurance, Phoenix intent, and repo boundaries)
|
||||
**Related:** [NON_GOALS.md](NON_GOALS.md), [EXPECTED_WEB_CONTENT.md](EXPECTED_WEB_CONTENT.md), [SERVICE_DESCRIPTIONS.md](SERVICE_DESCRIPTIONS.md), [BRAND_RELATIONSHIP.md](BRAND_RELATIONSHIP.md), [../11-references/COMPLETE_CREDENTIAL_EIDAS_PROGRAM_REPOS.md](../11-references/COMPLETE_CREDENTIAL_EIDAS_PROGRAM_REPOS.md), [config/public-sector-program-manifest.json](../../config/public-sector-program-manifest.json)
|
||||
**Related:** [CLIENT_DIVISION_TERMINOLOGY.md](CLIENT_DIVISION_TERMINOLOGY.md), [NON_GOALS.md](NON_GOALS.md), [EXPECTED_WEB_CONTENT.md](EXPECTED_WEB_CONTENT.md), [SERVICE_DESCRIPTIONS.md](SERVICE_DESCRIPTIONS.md), [BRAND_RELATIONSHIP.md](BRAND_RELATIONSHIP.md), [../11-references/COMPLETE_CREDENTIAL_EIDAS_PROGRAM_REPOS.md](../11-references/COMPLETE_CREDENTIAL_EIDAS_PROGRAM_REPOS.md), [config/public-sector-program-manifest.json](../../config/public-sector-program-manifest.json)
|
||||
|
||||
---
|
||||
|
||||
@@ -30,6 +30,41 @@ It does **not** replace legal advice, DPIAs, or national eID supervision require
|
||||
|
||||
---
|
||||
|
||||
## Client and division terminology
|
||||
|
||||
For Phoenix and Sankofa architecture, the repo now uses the following canonical mapping:
|
||||
|
||||
| Canonical term | Equivalent |
|
||||
|----------------|------------|
|
||||
| **Client** | GitHub **Enterprise**; Azure **billing profile**; current Gitea **Organization** |
|
||||
| **Division** | Flexible, client-specific subdivision under a Client |
|
||||
| **Tenant** | Technical tenancy / isolation boundary only |
|
||||
| **Site** | Physical or infrastructure placement only |
|
||||
|
||||
Current canonical clients:
|
||||
|
||||
- `DBIS`
|
||||
- `ICCC`
|
||||
- `OMNL`
|
||||
- `XOM`
|
||||
- `AR`
|
||||
- `EI`
|
||||
- `PANDA`
|
||||
- `SAID`
|
||||
|
||||
Use **Division** as the neutral umbrella term below Client.
|
||||
Reserve client-native labels such as **Realm** and **Nexus** for the specific client that uses them.
|
||||
|
||||
**Collision policy:**
|
||||
|
||||
- **Realm** is not the generic subdivision term because the repo already uses **Keycloak realm** semantics.
|
||||
- **Tenant** is not the generic business term because Phoenix already uses it for technical isolation.
|
||||
- **Site** is not the generic business term because Proxmox and network layers already use it for placement/topology.
|
||||
|
||||
See [CLIENT_DIVISION_TERMINOLOGY.md](CLIENT_DIVISION_TERMINOLOGY.md) for the full reserved-words policy and implementation guidance.
|
||||
|
||||
---
|
||||
|
||||
## Deployment profiles (flexibility bridge)
|
||||
|
||||
| Profile | Use when | Isolation |
|
||||
|
||||
@@ -10,6 +10,7 @@ This directory contains core architecture and design documents.
|
||||
|
||||
## Documents
|
||||
|
||||
- **[CLIENT_DIVISION_TERMINOLOGY.md](CLIENT_DIVISION_TERMINOLOGY.md)** ⭐⭐⭐ - Canonical Phoenix / Sankofa / Gitea client and division terminology; reserved-word policy for `realm`, `tenant`, and `site`
|
||||
- **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** ⭐⭐⭐ - Complete network architecture with 6×/28 blocks, VLANs, NAT pools
|
||||
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** ⭐⭐⭐ - Enterprise-grade deployment orchestration guide
|
||||
- **[VMID_ALLOCATION_FINAL.md](VMID_ALLOCATION_FINAL.md)** ⭐⭐⭐ - Complete VMID allocation registry (11,000 VMIDs)
|
||||
@@ -26,10 +27,15 @@ This directory contains core architecture and design documents.
|
||||
- CCIP fleet deployment matrix (41-43 nodes)
|
||||
- Proxmox cluster orchestration
|
||||
|
||||
**Client / Division Model:**
|
||||
- `Client` = GitHub Enterprise = Azure billing profile = current Gitea Organization
|
||||
- `Division` = generic subdivision below Client
|
||||
- `Tenant` = technical isolation only
|
||||
- `Site` = infrastructure location only
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- **[../03-deployment/](../03-deployment/)** - Deployment guides
|
||||
- **[../04-configuration/](../04-configuration/)** - Configuration guides
|
||||
- **[../05-network/](../05-network/)** - Network infrastructure details
|
||||
- **[../07-ccip/](../07-ccip/)** - CCIP deployment specification
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
> Historical note (2026-03-26): this runbook originated during the earlier three-pool PMM phase. Current canonical Chain 138 PMM addresses are `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`.
|
||||
|
||||
**Purpose:** Add base/quote liquidity to the three DODO PMM pools on Chain 138 (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC).
|
||||
**Purpose:** Add base/quote liquidity to the canonical DODO PMM pools on Chain 138, including the live stable/WETH pools.
|
||||
|
||||
**Prerequisites:**
|
||||
- Deployer is **owner** of cUSDT and cUSDC contracts (to mint), or already has balance.
|
||||
@@ -37,17 +37,20 @@ Deployer must be the **owner** of both cUSDT and cUSDC contracts (onlyOwner can
|
||||
Add or set in `smom-dbis-138/.env`:
|
||||
|
||||
```bash
|
||||
# Pool addresses (from PRE_DEPLOYMENT_CHECKLIST / create-all-pmm-pools-chain138.sh)
|
||||
POOL_CUSDTCUSDC=0xff8d3b8fDF7B112759F076B69f4271D4209C0849
|
||||
POOL_CUSDTUSDT=0x6fc60DEDc92a2047062294488539992710b99D71
|
||||
POOL_CUSDCUSDC=0x9f74Be42725f2Aa072a9E0CdCce0E7203C510263
|
||||
# Pool addresses
|
||||
POOL_CUSDTCUSDC=0x9e89bAe009adf128782E19e8341996c596ac40dC
|
||||
POOL_CUSDTUSDT=0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66
|
||||
POOL_CUSDCUSDC=0xc39B7D0F40838cbFb54649d327f49a6DAC964062
|
||||
POOL_CUSDTWETH=0xaE38a008Ba4Dbf8D9F141D03e9dC8f7Dbe0ce17c
|
||||
POOL_CUSDCWETH=0xAAE68830a55767722618E869882c6Ed064Cc1eb2
|
||||
POOL_CEURTWETH=0x4a64c886cedF00db42ea5B946D6b304121ad9529
|
||||
|
||||
# Amounts in base units (6 decimals): 1M tokens = 1000000000000
|
||||
ADD_LIQUIDITY_BASE_AMOUNT=1000000000000
|
||||
ADD_LIQUIDITY_QUOTE_AMOUNT=1000000000000
|
||||
```
|
||||
|
||||
Optional per-pool overrides: `ADD_LIQUIDITY_CUSDTCUSDC_BASE`, `ADD_LIQUIDITY_CUSDTCUSDC_QUOTE`, etc.
|
||||
Optional per-pool overrides: `ADD_LIQUIDITY_CUSDTCUSDC_BASE`, `ADD_LIQUIDITY_CUSDTCUSDC_QUOTE`, `ADD_LIQUIDITY_CUSDTWETH_BASE`, `ADD_LIQUIDITY_CUSDTWETH_QUOTE`, `ADD_LIQUIDITY_CUSDCWETH_BASE`, `ADD_LIQUIDITY_CUSDCWETH_QUOTE`, `ADD_LIQUIDITY_CEURTWETH_BASE`, `ADD_LIQUIDITY_CEURTWETH_QUOTE`, etc.
|
||||
|
||||
---
|
||||
|
||||
|
||||
70
docs/03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md
Normal file
70
docs/03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Atomic Swap dApp Submodule
|
||||
|
||||
**Last Updated:** 2026-04-19
|
||||
**Purpose:** Defines the dedicated submodule for an ecosystem-wide swap + bridge dApp that can orchestrate atomic swap flows across the supported networks and assets.
|
||||
|
||||
---
|
||||
|
||||
## Location
|
||||
|
||||
- Submodule path: `atomic-swap-dapp/`
|
||||
- Parent registration: `.gitmodules`
|
||||
- Current bootstrap remote: local bare repo at `/home/intlc/projects/atomic-swap-dapp.git`
|
||||
|
||||
> Operational note: the current URL is a local bootstrap remote created to establish the submodule boundary and initial commit. Replace it with the canonical hosted remote before expecting other operators to clone it directly from the parent repo.
|
||||
|
||||
---
|
||||
|
||||
## What the submodule contains
|
||||
|
||||
- `README.md` — scope and usage
|
||||
- `docs/ATOMIC_SWAP_EXECUTION_MODEL.md` — execution model for swap -> bridge -> destination swap flows
|
||||
- `scripts/sync-ecosystem.mjs` — generates the dApp manifest from the parent repo's canonical machine-readable inventories
|
||||
- `scripts/validate-manifest.mjs` — lightweight integrity check for the generated manifest
|
||||
- `config/ecosystem-manifest.json` — generated coverage snapshot
|
||||
|
||||
---
|
||||
|
||||
## Canonical parent sources
|
||||
|
||||
The submodule intentionally derives coverage from the parent repo instead of maintaining a second source of truth:
|
||||
|
||||
- `config/aggregator-route-matrix.json`
|
||||
- `config/routing-registry.json`
|
||||
- `token-lists/lists/dbis-138.tokenlist.json`
|
||||
- `cross-chain-pmm-lps/config/chains.json`
|
||||
- `cross-chain-pmm-lps/config/token-map.json`
|
||||
- `cross-chain-pmm-lps/config/deployment-status.json`
|
||||
|
||||
This lets the dApp surface:
|
||||
|
||||
- Chain 138 live same-chain swap routes
|
||||
- bridge lanes across the routed ecosystem
|
||||
- cW* and anchor-asset inventory on the public-chain mesh
|
||||
- non-EVM network metadata where interoperability is modeled separately
|
||||
|
||||
---
|
||||
|
||||
## Working in the submodule
|
||||
|
||||
From the parent repo root:
|
||||
|
||||
```bash
|
||||
cd atomic-swap-dapp
|
||||
npm run sync:ecosystem
|
||||
npm run validate:manifest
|
||||
```
|
||||
|
||||
If the submodule is checked out outside the parent repo, set:
|
||||
|
||||
```bash
|
||||
export PROXMOX_REPO_ROOT=/path/to/proxmox
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Immediate next build steps
|
||||
|
||||
1. Add the canonical hosted remote for the submodule and update `.gitmodules`.
|
||||
2. Layer in a quote API and execution adapters for DODO PMM, CCIP, Alltra, and future non-EVM connectors.
|
||||
3. Build UI surfaces on top of `config/ecosystem-manifest.json` so chain and asset coverage stays synced with repo-backed inventories.
|
||||
@@ -0,0 +1,83 @@
|
||||
# Chain 138 → Solana — GRU Token Deployment Lineup
|
||||
|
||||
**Last updated:** 2026-04-19
|
||||
**Current status:** `partial_live_causdt_lane_confirmed_lineup_and_mints_still_outstanding` — see [config/solana-gru-bridge-lineup.json](../../config/solana-gru-bridge-lineup.json).
|
||||
|
||||
**Purpose:** Line up deployment of **all canonical GRU base-money assets** from Chain 138 to Solana as **bridge-backed SPL representations**, using the agreed model: **custom relay** (per `token-mapping-multichain.json` notes), **SPL mints**, **hub stables on Solana**, and **execution / edge liquidity** as a separate phase (CLMM + bot, CLOB MM, or future PMM-class program). The Solana lane now also has a confirmed live send/confirm for the **`cAUSDT -> cWAUSDT`** corridor, which serves as the first repo-recorded proof that the adapter path is functioning end-to-end.
|
||||
|
||||
**Machine-readable manifest:** [config/solana-gru-bridge-lineup.json](../../config/solana-gru-bridge-lineup.json) (fill `solanaMint` as mints exist).
|
||||
|
||||
---
|
||||
|
||||
## 1. Scope — which tokens
|
||||
|
||||
| Role | Count | Notes |
|
||||
|------|-------|--------|
|
||||
| **Canonical `c*` on Chain 138** | **12** | Addresses: [EXPLORER_TOKEN_LIST_CROSSCHECK.md](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §2 |
|
||||
| **WETH** | **1** | Aligns with [config/non-evm-bridge-framework.json](../../config/non-evm-bridge-framework.json) `solanaInitialLiveSet` |
|
||||
|
||||
On Solana, fiat-stable GRU assets use the **`cW*`** symbol set per `config/token-mapping-multichain.json` → `nonEvmNetworks.Solana.approvedMirroredSymbols`.
|
||||
|
||||
### Live-confirmed Solana lane
|
||||
|
||||
The broader canonical lineup is still in rollout, but the **AUSDT corridor is no longer only planned**:
|
||||
|
||||
| Item | Value |
|
||||
|------|-------|
|
||||
| Chain 138 source token | `cAUSDT` |
|
||||
| Solana destination symbol | `cWAUSDT` |
|
||||
| Minted on Chain 138 | `22,000,000` raw units |
|
||||
| Bridged to Solana | `9,000,000` raw units |
|
||||
| Bridge request | `0x69035dfb7c0af5447da6104a8c09aa6bac7b19695517441014dda3c687d4550d` |
|
||||
| Final status | `2` (`Confirmed`) |
|
||||
| Solana adapter | `0x8244a5c27C0eA32fb8cB324131a04dC9F4E433f7` |
|
||||
| Mint tx | `0x8d18b8df7024418bf167cc80d11e0425b0c81507ace13326973951f3dfd0f6f8` |
|
||||
| Bridge tx | `0x4f6368754a5b55a43f8dae4e645bf67e9cf6c9c64bfdadb4625508c351d64319` |
|
||||
| Confirm tx | `0x6cce9a740d170278c95e494052e1b031b394d1d807df05ba3bad55030a36fc68` |
|
||||
|
||||
This confirms that the Solana adapter path is live for at least one GRU-style corridor even though the full canonical `c* -> cW*` lineup and SPL mint inventory remain incomplete.
|
||||
|
||||
---
|
||||
|
||||
## 2. Repo anchors
|
||||
|
||||
| Item | Location |
|
||||
|------|----------|
|
||||
| Non-EVM rollout + initial symbol set | [config/non-evm-bridge-framework.json](../../config/non-evm-bridge-framework.json) |
|
||||
| CAIP-2, relay mode, approved symbols | [config/token-mapping-multichain.json](../../config/token-mapping-multichain.json) `nonEvmNetworks.Solana` |
|
||||
| Solana adapter (Chain 138) | `smom-dbis-138/contracts/bridge/adapters/non-evm/SolanaAdapter.sol` |
|
||||
| Relay worker stub | `smom-dbis-138/services/solana-relay/src/SolanaRelayService.ts` |
|
||||
| Hub-stable note | [cross-chain-pmm-lps/config/chains.json](../../cross-chain-pmm-lps/config/chains.json) `nonEvm[]` |
|
||||
|
||||
---
|
||||
|
||||
## 3. Phased deployment sequence
|
||||
|
||||
### Phase A — Chain 138 bridge surface
|
||||
|
||||
Deploy/register `SolanaAdapter`, define lock/mint messaging and replay/refund paths.
|
||||
|
||||
### Phase B — Solana SPL mints
|
||||
|
||||
Create SPL tokens; record **`solanaMint`** per asset in `solana-gru-bridge-lineup.json`.
|
||||
|
||||
### Phase C — Relay implementation
|
||||
|
||||
Replace relay stub with production path; fund SOL signers; E2E both directions on mainnet-beta when ready. As of **2026-04-16**, the repo now has a confirmed live `cAUSDT -> cWAUSDT` send/confirm through the deployed Solana adapter, so this phase should be treated as **partially validated in production** rather than only stubbed.
|
||||
|
||||
### Phase D — Execution on Solana
|
||||
|
||||
Resolve SPL USDC/USDT hubs; add pools/markets per chosen venue strategy.
|
||||
|
||||
### Phase E — Public exposure
|
||||
|
||||
After verifiers and E2E gates pass; align [GRU_REFERENCE_PRIMACY_AND_MESH_EXECUTION_MODEL.md](../04-configuration/GRU_REFERENCE_PRIMACY_AND_MESH_EXECUTION_MODEL.md).
|
||||
|
||||
---
|
||||
|
||||
## 4. Verification
|
||||
|
||||
```bash
|
||||
bash scripts/verify/check-gru-non-evm-readiness.sh
|
||||
bash scripts/verify/check-contracts-on-chain-138.sh
|
||||
```
|
||||
@@ -0,0 +1,183 @@
|
||||
# Chain 138 -> Wemix 1111 Bridge Completion Checklist
|
||||
|
||||
**Last Updated:** 2026-04-20
|
||||
**Purpose:** Strict operator checklist to move WEMIX `1111` from repo-deferred state into a live bridge path, with an explicit split between:
|
||||
- **inbound-only activation** for `138 -> 1111`
|
||||
- **full bidirectional activation** for `138 <-> 1111`
|
||||
|
||||
## 1. Current Repo State
|
||||
|
||||
| Item | Current State |
|
||||
|---|---|
|
||||
| Destination chain | `1111` / Wemix |
|
||||
| Destination selector | `5142893604156789321` |
|
||||
| Activation state | `planned_gas_scaffold` |
|
||||
| Bridge available | `false` |
|
||||
| Recorded `cW*` assets | `cWBTC` |
|
||||
| Recorded anchor addresses | `USDC=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D` |
|
||||
|
||||
The repo currently shows WEMIX as **not yet live**. Native WEMIX gas and bridge deployment are already in good shape; the remaining blockers depend on the target mode:
|
||||
|
||||
- **inbound-only activation**: proof transfer plus machine-readable promotion
|
||||
- **full bidirectional activation**: proof transfer, machine-readable promotion, and outbound fee coverage on the WEMIX-side bridges
|
||||
|
||||
### Current runtime blocker
|
||||
|
||||
As of `2026-04-21`, the source-side Chain 138 CCIP bridge still cannot quote the Wemix lane:
|
||||
|
||||
```bash
|
||||
cast call "$CCIPWETH9_BRIDGE_CHAIN138" \
|
||||
'calculateFee(uint64,uint256)(uint256)' \
|
||||
5142893604156789321 1000000000000000 \
|
||||
--rpc-url "$RPC_URL_138"
|
||||
```
|
||||
|
||||
Current result:
|
||||
|
||||
- reverts with `CCIPRouter: chain not supported`
|
||||
|
||||
That means the blocker is stronger than “proof transfer not yet recorded”:
|
||||
|
||||
- the peer bridge wiring is present on both sides
|
||||
- but the current Chain 138 CCIP router does not yet support the Wemix selector for source-side sends
|
||||
|
||||
Until that router-level support exists, `138 -> 1111` cannot be promoted from scaffold to live.
|
||||
|
||||
## 2. Exact Environment Surface
|
||||
|
||||
| Variable | Current Value |
|
||||
|---|---|
|
||||
| `CCIP_ROUTER_WEMIX` | `0x7798b795Fde864f4Cd1b124a38Ba9619B7F8A442` |
|
||||
| `LINK_TOKEN_WEMIX` | `0x80f1FcdC96B55e459BF52b998aBBE2c364935d69` |
|
||||
| `WETH9_WEMIX` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` |
|
||||
| `WETH10_WEMIX` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` |
|
||||
| `CCIPWETH9_BRIDGE_WEMIX` | `0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04` |
|
||||
| `CCIPWETH10_BRIDGE_WEMIX` | `0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08` |
|
||||
| `LINK_GAS_AVAILABLE_1111` | `0` |
|
||||
| `LINK_GAS_UNAVAILABLE_CHAIN_IDS` | `25,1111` |
|
||||
| `WEMIX_RPC` | `https://api.wemix.com` |
|
||||
| `CHAIN138_SELECTOR` | `138` |
|
||||
| `CCIPWETH9_BRIDGE_CHAIN138` | `0xcacfd227A040002e49e2e01626363071324f820a` |
|
||||
| `CCIPWETH10_BRIDGE_CHAIN138` | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
|
||||
|
||||
## 3. Activation Paths
|
||||
|
||||
### Path A: Inbound-only activation on WEMIX
|
||||
|
||||
Use this when the immediate goal is to make `138 -> 1111` receipt operational.
|
||||
|
||||
#### Step A1: Preflight WEMIX
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/preflight-config-ready-chains.sh wemix
|
||||
```
|
||||
|
||||
Success means:
|
||||
- `WEMIX_RPC` responds
|
||||
- deployer has native WEMIX gas
|
||||
- `CCIP_ROUTER_WEMIX`, `LINK_TOKEN_WEMIX`, `WETH9_WEMIX`, and `WETH10_WEMIX` are present
|
||||
|
||||
#### Step A2: Confirm bridge deployments on 1111
|
||||
|
||||
Status: completed in the current operator environment. Both bridge addresses above return deployed bytecode on Wemix.
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/deploy-bridges-config-ready-chains.sh wemix
|
||||
```
|
||||
|
||||
After deployment, persist the returned addresses into:
|
||||
- `CCIPWETH9_BRIDGE_WEMIX`
|
||||
- `CCIPWETH10_BRIDGE_WEMIX`
|
||||
|
||||
#### Step A3: Confirm bidirectional wiring
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/complete-config-ready-chains.sh
|
||||
```
|
||||
|
||||
Required result:
|
||||
- Chain `138` WETH9 bridge includes selector `5142893604156789321` -> `CCIPWETH9_BRIDGE_WEMIX`
|
||||
- Chain `138` WETH10 bridge includes selector `5142893604156789321` -> `CCIPWETH10_BRIDGE_WEMIX`
|
||||
- WEMIX WETH9 bridge includes `CHAIN138_SELECTOR` -> `CCIPWETH9_BRIDGE_CHAIN138`
|
||||
- WEMIX WETH10 bridge includes `CHAIN138_SELECTOR` -> `CCIPWETH10_BRIDGE_CHAIN138`
|
||||
|
||||
Status: destination wiring is already present in the current environment.
|
||||
|
||||
#### Step A4: Run proof transfer for `138 -> 1111`
|
||||
|
||||
```bash
|
||||
cast call "$CCIPWETH9_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC"
|
||||
cast call "$CCIPWETH10_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC"
|
||||
```
|
||||
|
||||
Then run a small test transfer for `WETH9` or `WETH10` from `138 -> 1111` and confirm receipt.
|
||||
|
||||
Precondition:
|
||||
- the Chain 138 CCIP router must stop reverting `calculateFee(...)` with `CCIPRouter: chain not supported`
|
||||
|
||||
Important note:
|
||||
- the WEMIX-side bridges do **not** need LINK just to receive `138 -> 1111` messages
|
||||
- CCIP fees are paid on the source-side `sendCrossChain(...)`, not on the destination-side `ccipReceive(...)`
|
||||
|
||||
### Path B: Full bidirectional activation on WEMIX
|
||||
|
||||
Use this when `1111 -> 138` or `1111 -> other-chain` sending must also be live.
|
||||
|
||||
Path B includes all inbound-only steps above, plus the outbound fee steps below.
|
||||
|
||||
#### Step B1: Fund outbound fee coverage on the WEMIX bridges
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/check-link-balance-config-ready-chains.sh wemix
|
||||
./scripts/deployment/fund-ccip-bridges-with-link.sh
|
||||
```
|
||||
|
||||
Target:
|
||||
- at least `10 LINK` on each bridge
|
||||
- `LINK_GAS_AVAILABLE_1111` becomes non-zero
|
||||
|
||||
Bridge-specific note:
|
||||
- `CCIPWETH9Bridge` can alternatively be reconfigured to use native WEMIX for outbound fees by setting `feeToken = address(0)`.
|
||||
- `CCIPWETH10Bridge` cannot use native-fee mode in the current implementation and still requires LINK for outbound sends.
|
||||
|
||||
#### Step B2: Run proof transfer from `1111`
|
||||
|
||||
After outbound funding is available, run and record a small outbound test transfer from `1111`.
|
||||
|
||||
## 4. Prepare GRU v2 `cW*` assets for 1111
|
||||
|
||||
This step is **after** the WETH bridge path is proven live.
|
||||
|
||||
Current repo state only scaffolds:
|
||||
- `cWBTC`
|
||||
|
||||
Before GRU v2 can be promoted on `1111`, the operator still needs to:
|
||||
- confirm the intended destination `cW*` asset set
|
||||
- deploy or confirm destination token contracts on `1111`
|
||||
- wire bridge or mint authority for those assets
|
||||
- only then enable DODO PMM / Uniswap V2 / other venue rollout on WEMIX
|
||||
|
||||
## 5. Promotion Conditions
|
||||
|
||||
### Promotion to inbound-only live
|
||||
|
||||
WEMIX `1111` can move to inbound-only live only after all of the following are true:
|
||||
|
||||
1. `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` are deployed and stored in `.env`.
|
||||
2. Chain `138` and chain `1111` each list the other as a valid bridge destination.
|
||||
3. A small `138 -> 1111` bridge test succeeds in both configuration and receipt.
|
||||
|
||||
### Promotion to full bidirectional live
|
||||
|
||||
WEMIX `1111` can move to full bidirectional live only after all of the following are true:
|
||||
|
||||
1. All inbound-only promotion conditions are satisfied.
|
||||
2. The WEMIX outbound fee path is funded:
|
||||
- `WETH9`: LINK or native WEMIX
|
||||
- `WETH10`: LINK
|
||||
3. A small outbound bridge test from `1111` succeeds in both configuration and receipt.
|
||||
4. The GRU v2 asset rollout plan for `1111` is explicitly wired, not just implied.
|
||||
26
docs/03-deployment/COMPREHENSIVE_CAPITAL_BASELINE.md
Normal file
26
docs/03-deployment/COMPREHENSIVE_CAPITAL_BASELINE.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Comprehensive Capital Baseline
|
||||
|
||||
- Generated: `2026-04-17T15:11:49Z`
|
||||
- Additional inventory: `config/extraction/additional-wallet-inventory.json`
|
||||
- Source-to-CEX policy: `config/extraction/source-to-cex-production-policy.json`
|
||||
- Production enabled: `False`
|
||||
- Mainnet funding posture: `dual-rail` via `cWUSDC, cWUSDT`
|
||||
|
||||
## Snapshot
|
||||
|
||||
- Immediate bucket USD: `17777520.488172`
|
||||
- Same-day corridor USD: `1381462148.370564`
|
||||
|
||||
## Off-Chain Sink Validation
|
||||
|
||||
- Validation ready: `False`
|
||||
- Included sink count: `0`
|
||||
|
||||
## Source Artifacts
|
||||
|
||||
- `immediate_and_same_day_corridor_assets`: `reports/extraction/immediate-and-same-day-corridor-assets-latest.json`
|
||||
- `source_to_cex_execution_plan`: `reports/extraction/source-to-cex-execution-plan-latest.json`
|
||||
- `source_to_cex_production_readiness`: `reports/extraction/source-to-cex-production-readiness-latest.json`
|
||||
- `source_to_cex_offchain_sink_validation`: `reports/extraction/source-to-cex-offchain-sink-validation-latest.json`
|
||||
- `source_to_cex_production_policy`: `config/extraction/source-to-cex-production-policy.json`
|
||||
- `additional_wallet_inventory`: `config/extraction/additional-wallet-inventory.json`
|
||||
70
docs/03-deployment/CROMERO_DAPP_DEPLOYMENT.md
Normal file
70
docs/03-deployment/CROMERO_DAPP_DEPLOYMENT.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# CROMERO Dapp — Phoenix Deploy
|
||||
|
||||
Deploys [`d-bis/CROMERO`](https://gitea.d-bis.org/d-bis/CROMERO) (a
|
||||
Vite + React + thirdweb v5 dapp) to
|
||||
`https://d-bis.org/ecosystem/cromero/`.
|
||||
|
||||
## Pipeline
|
||||
|
||||
1. Push to `main` on `d-bis/CROMERO` triggers
|
||||
`.gitea/workflows/deploy-to-phoenix.yml`, which POSTs
|
||||
`{repo, sha, branch, target: "default"}` to the Phoenix Deploy API.
|
||||
2. Phoenix runs the registered target (see
|
||||
`phoenix-deploy-api/deploy-targets.json`):
|
||||
`bash scripts/deployment/phoenix-deploy-cromero-from-workspace.sh`.
|
||||
3. The script builds the staged workspace (`npm ci && npm run build`)
|
||||
and rsyncs `dist/` to
|
||||
`${IP_NPMPLUS:-192.168.11.167}:/var/www/ecosystem/cromero/`.
|
||||
4. Healthcheck: `https://d-bis.org/ecosystem/cromero/` must return
|
||||
HTTP 200 with `<div id="root">` in the body.
|
||||
|
||||
## One-time nginx setup on the NPMplus host
|
||||
|
||||
The deploy script does **not** modify nginx config — install the
|
||||
location block once, then redeploys land static files only.
|
||||
|
||||
Add the following to whichever nginx server block terminates
|
||||
`d-bis.org` (or the NPMplus advanced-config tab for the d-bis.org
|
||||
proxy host):
|
||||
|
||||
```nginx
|
||||
location /ecosystem/cromero/ {
|
||||
alias /var/www/ecosystem/cromero/;
|
||||
try_files $uri $uri/ /ecosystem/cromero/index.html;
|
||||
}
|
||||
```
|
||||
|
||||
Then `nginx -t && nginx -s reload` (or restart the NPMplus
|
||||
container).
|
||||
|
||||
The Vite app already builds with `base: "/ecosystem/cromero/"` so
|
||||
hashed asset URLs resolve under that subpath.
|
||||
|
||||
## Required Actions secrets/vars on `d-bis/CROMERO`
|
||||
|
||||
| Name | Type | Value |
|
||||
| --- | --- | --- |
|
||||
| `PHOENIX_DEPLOY_URL` | secret | `http://192.168.11.59:4001/api/deploy` |
|
||||
| `PHOENIX_DEPLOY_TOKEN` | secret | matches `PHOENIX_DEPLOY_SECRET` on the Phoenix host |
|
||||
| `VITE_THIRDWEB_CLIENT_ID` | secret | thirdweb publishable Client ID |
|
||||
| `VITE_PROJECT_WALLET_ADDRESS` | var | recipient `0x…` address |
|
||||
| `VITE_CHAIN_138_RPC` | var (optional) | overrides default `https://rpc.d-bis.org` |
|
||||
| `VITE_CHAIN_138_EXPLORER` | var (optional) | overrides default `https://explorer.d-bis.org` |
|
||||
|
||||
## Manual trigger from a LAN box with `phoenix-deploy-api` access
|
||||
|
||||
```bash
|
||||
curl -sSf -X POST "http://192.168.11.59:4001/api/deploy" \
|
||||
-H "Authorization: Bearer ${PHOENIX_DEPLOY_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"repo":"d-bis/CROMERO","branch":"main","target":"default"}'
|
||||
```
|
||||
|
||||
## Dry run
|
||||
|
||||
From this repo:
|
||||
|
||||
```bash
|
||||
PHOENIX_DEPLOY_WORKSPACE=/path/to/staged/CROMERO \
|
||||
bash scripts/deployment/phoenix-deploy-cromero-from-workspace.sh --dry-run
|
||||
```
|
||||
@@ -0,0 +1,80 @@
|
||||
# Crypto.com OTC Before Vs After Operator Matrix
|
||||
|
||||
**Last Updated:** 2026-04-17
|
||||
**Purpose:** Strict operator comparison of the current ecosystem state versus the state after a real `Crypto.com OTC` destination is connected as the off-chain execution sink.
|
||||
|
||||
## Scope
|
||||
|
||||
- This matrix is grounded in the current repo-generated artifacts, especially:
|
||||
- `reports/extraction/comprehensive-capital-baseline-latest.json`
|
||||
- `reports/extraction/source-to-cex-execution-plan-latest.json`
|
||||
- `reports/extraction/source-to-cex-production-readiness-latest.json`
|
||||
- `reports/extraction/immediate-and-same-day-corridor-assets-latest.json`
|
||||
- It does **not** assume any undocumented `Crypto.com OTC` limits, settlement terms, or acceptance rules.
|
||||
- “After” means: a real off-chain sink row exists, it is enabled for production handoff, the deposit asset and address are configured, and production is intentionally promoted.
|
||||
|
||||
## Strict Matrix
|
||||
|
||||
| Dimension | Before Crypto.com OTC | After Crypto.com OTC |
|
||||
|---|---|---|
|
||||
| Terminal sink model | Public Mainnet cW-to-canonical pools | Mainnet normalization plus external OTC execution |
|
||||
| True size absorber | `cWUSDC -> USDC` pool | `Crypto.com OTC` books / negotiated execution |
|
||||
| Strongest verified direct public normalization depth | About `$213.10` via `cWUSDC -> USDC` | Still about `$213.10` on-chain, but no longer the system-wide economic cap |
|
||||
| Direct `cWUSDT -> USDT` depth | About `$2.18` | Still about `$2.18`; remains weak unless separately improved |
|
||||
| Immediate bucket (`cWUSDC`, `cWUSDT`) | About `$17.78M`, but operationally constrained by shallow public exits | About `$17.78M`, now potentially executable through bounded normalization and OTC handoff |
|
||||
| Same-day corridor bucket (`cUSDC`, `cUSDT`, stable LP feeders) | About `$1.381B`, structurally ready but terminally constrained | About `$1.381B`, now becomes a credible same-day institutional feeder set if OTC handoff is live |
|
||||
| `cUSDC` operating path | `cUSDC -> bridge -> cWUSDC -> USDC`, then stalls on shallow public sink | `cUSDC -> bridge -> cWUSDC -> USDC -> Crypto.com OTC` |
|
||||
| `cUSDT` operating path | `cUSDT -> bridge -> cWUSDT -> cWUSDC -> USDC`, still bottlenecked by public sink | `cUSDT -> bridge -> cWUSDT -> cWUSDC -> USDC -> Crypto.com OTC` |
|
||||
| Stable LP role | LPs are strong feeder-prep assets, but not meaningful exits on their own | LPs become materially more useful because unwind can feed a real external execution rail |
|
||||
| On-chain Mainnet role | Expected to absorb trade size | Reduced to a bounded conversion handshake before OTC handoff |
|
||||
| Main system bottleneck | Terminal public liquidity concentration | Off-chain execution onboarding, deposit correctness, operational governance, and settlement workflow |
|
||||
| Planner posture | `multi-path -> single shallow sink` | `multi-path -> normalized settlement asset -> OTC sink` |
|
||||
| Readiness blocker | No real off-chain sink included; production disabled | Remaining blocker becomes real-world OTC setup quality, not architecture |
|
||||
| Risk concentration | DEX liquidity and slippage | Counterparty, deposit rail, packet policy, reconciliation, and execution controls |
|
||||
| Operator dependency | Public PMM liquidity | OTC account activation, accepted asset, deposit address, and operating limits |
|
||||
| Repo readiness state | `offchain_sink_defined = blocked`; `live_production_enabled = blocked` | Can become `ready` after sink row + enablement + production promotion |
|
||||
|
||||
## Practical Reclassification
|
||||
|
||||
If `Crypto.com OTC` is connected as a real sink, the ecosystem does **not** become richer in nominal terms. It becomes more executable.
|
||||
|
||||
- Before:
|
||||
- large corridor inventory
|
||||
- tiny public terminal sink
|
||||
- strong routing structure but weak external realization
|
||||
- After:
|
||||
- same inventory
|
||||
- same bridge and normalization structure
|
||||
- materially improved ability to hand same-day corridor assets into external institutional liquidity
|
||||
|
||||
## What Changes Operationally
|
||||
|
||||
| Asset Group | Before | After |
|
||||
|---|---|---|
|
||||
| `cWUSDC` | Immediate in mechanics, but shallow public exit | Immediate normalization asset for OTC deposit preparation |
|
||||
| `cWUSDT` | Immediate in mechanics, but direct USDT path is too shallow | Usually normalize through USDC, then hand to OTC |
|
||||
| `cUSDC` | Best same-day corridor feeder, but ends at weak public sink | Best same-day corridor feeder into OTC |
|
||||
| `cUSDT` | Same-day feeder, but practically dependent on USDC normalization | Same-day feeder into OTC after USDC normalization |
|
||||
| Stable LP claims | Preparation only | Preparation plus real external execution path |
|
||||
| Non-promoted assets | Still not standard feeders | Still not standard feeders unless separately promoted |
|
||||
|
||||
## Readiness Gate
|
||||
|
||||
The repo should still treat the system as **not live** until all of the following are true:
|
||||
|
||||
1. A real `Crypto.com OTC` row exists in `config/extraction/additional-wallet-inventory.json`.
|
||||
2. `include_in_baseline` is `true`.
|
||||
3. `enabled_for_production_handoff` is `true`.
|
||||
4. `operational_status` is `enabled`.
|
||||
5. Deposit asset, chain, and address are populated.
|
||||
6. `config/extraction/source-to-cex-production-policy.json` is intentionally set to `production_enabled: true`.
|
||||
|
||||
## Bottom Line
|
||||
|
||||
Before `Crypto.com OTC`, the ecosystem is best described as:
|
||||
|
||||
`large inventory + good corridor structure + shallow public terminal sink`
|
||||
|
||||
After `Crypto.com OTC`, it becomes:
|
||||
|
||||
`large inventory + good corridor structure + bounded Mainnet normalization + real external execution destination`
|
||||
31
docs/03-deployment/CURRENCICOMBO_PHOENIX_DEPLOYMENT.md
Normal file
31
docs/03-deployment/CURRENCICOMBO_PHOENIX_DEPLOYMENT.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# CurrenciCombo Phoenix Deployment
|
||||
|
||||
**Status:** Deployed on `2026-04-22`
|
||||
**Target host:** `r630-01` (`192.168.11.11`)
|
||||
**Container:** VMID `8604`
|
||||
**CT hostname:** `currencicombo-phoenix-1`
|
||||
**Network:** VLAN `160` / `10.160.0.14`
|
||||
|
||||
## Runtime
|
||||
|
||||
- Web: `http://10.160.0.14:3000/`
|
||||
- API health: `http://10.160.0.14:8080/health`
|
||||
- Public web: `https://curucombo.曼李.com/` (`curucombo.xn--vov0g.com`)
|
||||
- systemd units:
|
||||
- `currencicombo-webapp`
|
||||
- `currencicombo-orchestrator`
|
||||
|
||||
## Deploy path
|
||||
|
||||
- Script: `scripts/deployment/deploy-currencicombo-8604.sh`
|
||||
- Phoenix target file: `phoenix-deploy-api/deploy-targets.json`
|
||||
- Repo target tuple:
|
||||
- repo: `d-bis/CurrenciCombo`
|
||||
- branch: `main`
|
||||
- target: `default`
|
||||
|
||||
## Notes
|
||||
|
||||
- The deployment currently uses local PostgreSQL and Redis inside the same CT.
|
||||
- The webapp build is temporarily configured to ignore TypeScript build errors in `webapp/next.config.ts` so deployment can proceed while the remaining Next 16 migration issues are cleaned up.
|
||||
- Public ingress was wired through the primary NPMplus (`192.168.11.167`) with a proxied Cloudflare DNS record in the `曼李.com` zone and TLS enabled in NPMplus.
|
||||
159
docs/03-deployment/CW_PUBLIC_NETWORK_PRICES.md
Normal file
159
docs/03-deployment/CW_PUBLIC_NETWORK_PRICES.md
Normal file
@@ -0,0 +1,159 @@
|
||||
# cW Public Network Prices
|
||||
|
||||
- Generated: `2026-04-20T00:49:38Z`
|
||||
- Deployment inventory: `/home/intlc/projects/proxmox/cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- Uniswap discovery snapshot: `/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json`
|
||||
- Price convention: USD per 1 token.
|
||||
- `not found` means the generator could not reach the token from a live USDC/USDT anchor using the current public-pair snapshot plus live PMM mid-price reads.
|
||||
|
||||
| Chain | Token | Price (USD) | Derived From | Source | Notes |
|
||||
|---|---|---:|---|---|---|
|
||||
| `1` Ethereum Mainnet | `cWAUDC` | `0.65569108` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6c1bD4F43c5f330E50B61DE81066dA7C61a9b5b4; midPrice=0.65569107650773755 |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.73441926` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE0F35b5736FDd0a2F4B618621b0A08F8D8A3f92A; midPrice=0.734419257773319959 |
|
||||
| | `cWCHFC` | `1.10444563` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x776Ca556deD3245984F504F4bef8Eeec55C50190; midPrice=1.104445634708087841 |
|
||||
| | `cWEURC` | `1.15145921` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0bC750F9c6DbDcd76B205695A356491b1B9ef098; midPrice=1.15145920590785613 |
|
||||
| | `cWEURT` | `1.08000050` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x9cF3DeDAaC0984c530801b9b4881c8f99Bb329c3; midPrice=1.080000496800228528 |
|
||||
| | `cWGBPC` | `1.29980755` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5488042dF882893a3e7074453E2005CaDE4101b0; midPrice=1.299807549490125931 |
|
||||
| | `cWGBPT` | `1.27000012` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xA42566bb730AD6D551Db32d50c0877132fc07c32; midPrice=1.270000120650011461 |
|
||||
| | `cWJPYC` | `0.00827694` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794; midPrice=0.008276940018827374 |
|
||||
| | `cWUSDC` | `0.24519859` | `cWUSDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x69776fc607e9edA8042e320e7e43f54d06c68f0E; midPrice=0.245198594926143744 |
|
||||
| | `cWUSDT` | `0.24377078` | `cWUSDT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2; midPrice=0.243770782727164331 |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xf6470219ce7749f8860dEABe9c347Ef2c1075E08; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x1D51a38C924382287d770AbB61deb9C39ACa96E9; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `10` Optimism | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x4B452800f6cD50326F14a6f089f4bB04e8079250; midPrice=0.66 |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x19e1fdd037F1651AcEE11c5A5Aa246b85FA63f8e; midPrice=0.74 |
|
||||
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xA97D7dfB93CBf0C10243931d93FFEda745222ec6; midPrice=1.11 |
|
||||
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x78C6aC6D7CbFcd85A3291D656F2154979a92c00B; midPrice=1.08 |
|
||||
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x631DfC86A03cB05319d7165198f8099dacF78e56; midPrice=1.08 |
|
||||
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x79BE2b70A94E954d095f9F537FAf0741D15dfA31; midPrice=1.27 |
|
||||
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5D6b5d7CA165c39c350083255774DdBf1c858e12; midPrice=1.27 |
|
||||
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x68C1c8a945ddCF3482b73aC09b6B5D4177D564AF; midPrice=0.0067 |
|
||||
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xCE25c324e41049D75abfB81c23257984A2A97a79; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xb3Ee650019d7F756ce0F79b69614Fa2761871775; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `25` Cronos | `cWAUDC` | `0.66000000` | `cWAUDC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x5b5fA8664FC1eb630b2D76deAf57Dd35ef326eAE; midPrice=0.66 |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.74000000` | `cWCADC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xFFe56BE4628f2863Cd7c38d3fFa70d6A3255FBD3; midPrice=0.74 |
|
||||
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x937E86f21007C15F28081DBD419ea39ef5bc87F2; midPrice=1.11 |
|
||||
| | `cWEURC` | `1.08000000` | `cWEURC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xbe68d6ae47049ce0EA5B6a82AB1c388f4023aec8; midPrice=1.08 |
|
||||
| | `cWEURT` | `1.08000000` | `cWEURT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xE3bb64f8F05dB65C9bb1103f5D7C445C402161Ec; midPrice=1.08 |
|
||||
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xDa60b22cDb3D3Ec67c309457Bd50C4e67D4611a4; midPrice=1.27 |
|
||||
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x1935d14D513E158D630488f2D20Cd28CFe23aAe6; midPrice=1.27 |
|
||||
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x97fD4E88490D8c4bcbe1930Cece12e8DD22529bE; midPrice=0.0067 |
|
||||
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xAA450B4Cf4EEc28C440850665546D85C67b4B2A6; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x8B11f71C0ABF2f8031c47cFd20d22b2ab2799183; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `56` BSC (BNB Chain) | `cWAUDC` | `0.66000000` | `cWAUDC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x85E2C97a931D1e5Ed31F4D6cb4094fB036AE4ED4; midPrice=0.66 |
|
||||
| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.74000000` | `cWCADC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xE193bd2f602CaC833330c6835f934f3958a7785b; midPrice=0.74 |
|
||||
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x02F70D646B57439faF5dF1B16d2B174Ee2A9F373; midPrice=1.11 |
|
||||
| | `cWEURC` | `1.08000000` | `cWEURC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xaF1EA2c0105C90C819849FBFE931D61a11De4793; midPrice=1.08 |
|
||||
| | `cWEURT` | `1.08000000` | `cWEURT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x6b97090c974eCAf77dC4e390B044F87Ec71f5fA1; midPrice=1.08 |
|
||||
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x5e19913eDaAcaB436AbF635e58f2453323cB2CB3; midPrice=1.27 |
|
||||
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x439C447b4FDa58fcAF587F0A042662A46029dC7c; midPrice=1.27 |
|
||||
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xBEceD3b25448F648a36Fa9dd6D17a68CB6e61f36; midPrice=0.0067 |
|
||||
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xe9306557758c19cb8FbeEb4777dc7b14f251f67c; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xfB094EC50d932bCD004E4136EfB62119c0f576E1; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `100` Gnosis Chain | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xeb5A688dF70be2F790719872Be9Ecc5648aEE460; midPrice=1 |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x45177D998F4022aeaa046C60e734aEf8c18aCb70; midPrice=0.74 |
|
||||
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x9ff24E16c5687330c271a52655971c7C2498FaC8; midPrice=1.11 |
|
||||
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8c8d6cc14111443Ef8572D58Df387a1E497b7C43; midPrice=1.08 |
|
||||
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB73e4C13757EE99540A1F0e973980E423987De19; midPrice=1.08 |
|
||||
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xf060E1B29FF714f5Ac89F8Bd3869cF300C5b387f; midPrice=1.27 |
|
||||
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3adB3fB8451727fDEBe3D00617170dAF3725F6B4; midPrice=1.27 |
|
||||
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xe11936EcE13B5f04156898a510B86493F2862042; midPrice=0.0067 |
|
||||
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x02BE3C506FD5541c8225dB43C6FFC5a39ADd803E; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x7069d10A0E4496D0CEa08Ff27EaE9de0BB7D0d23; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `137` Polygon | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783; midPrice=1 |
|
||||
| | `cWAUSDT` | `0.66666667` | `cWUSDC/USDC -> cWAUSDT/cWUSDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8F1038dE06d799a30D16d8B0b0ADEe629e7d4547; midPrice=1 |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xc79da1E8B33E580d53C683923685B26FFC653650; midPrice=0.74 |
|
||||
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x30dAeF9a8Dd4aEc2949013Fe18b5Ab3C2505D825; midPrice=1.11 |
|
||||
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0c6F5D3d8d52cBC52849327F6eC6aE52C8497A8D; midPrice=1.08 |
|
||||
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x36aB6bef2B3335ebf6a762665978bf5e845FDEC0; midPrice=1.08 |
|
||||
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x7a95f67E31f271A6a83219d8368D963Ee2fC106B; midPrice=1.27 |
|
||||
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xC3645c7153b7B72556e322aA1E72D77536d9A3DE; midPrice=1.27 |
|
||||
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x09658d8d81aa8fa7a21eD973787638f245bc3fe0; midPrice=0.0067 |
|
||||
| | `cWUSDC` | `1.00000000` | `cWUSDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8F1038dE06d799a30D16d8B0b0ADEe629e7d4547; midPrice=1 |
|
||||
| | `cWUSDT` | `1.00000000` | `cWUSDT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xFCB0b0Ac36d67EDBA91100c75C27De945357CD62; midPrice=1 |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3c3b9Bd130fB3aBcC0E0CE6552795DD56BCCc55c; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x37D5587Bbe17571cDe96DAB7b2e7EA234C87f525; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `1111` Wemix | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | | | | | Activation state: `deferred`; RPC configured: `False` |
|
||||
| `8453` Base | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE450F94Dc06036aa80055Db298948C6692819545; midPrice=0.66 |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5E7448AA0e3172AEFE79439E14F7E59bc1C858E0; midPrice=0.74 |
|
||||
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0673Fa737f813Af2e37A0ae2CBCf7E225498ed6a; midPrice=1.11 |
|
||||
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x72E6D93E9aF317321DF763a34068178c773FdA50; midPrice=1.08 |
|
||||
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x51c2C4Dd1fc54E20207D0732f12802B33e0E2251; midPrice=1.08 |
|
||||
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5b8B474659A5BA675E74Ef364CcF559C53071B5b; midPrice=1.27 |
|
||||
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xD035e0a6b82cDd9653261DC8259a3dbA1cF02C14; midPrice=1.27 |
|
||||
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x64D91B738026fE1577773F3F36063d16C834F042; midPrice=0.0067 |
|
||||
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xb47776505B8E2bFC63197Cf2133857CD91e7abBb; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE1C2bC36438B29E3b5092C0cB80531199874080D; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `42161` Arbitrum One | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x97f78713f5899a652d955B996BAb99E2CbbEcC5c; midPrice=0.66 |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6D3b55935F58b9433fc26743cd9E0F8963a4F6D8; midPrice=0.74 |
|
||||
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x88437Cd15CB6b07Fd8cC9830f1b8fFf50275e691; midPrice=1.11 |
|
||||
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x34c3Ae728a985Fd27f1887474bCf4e52847Cbb2c; midPrice=1.08 |
|
||||
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xEEE8C51107aE64824c4a08a502202fA3E6213702; midPrice=1.08 |
|
||||
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xFBa6D6d1471302Bf28CE7d94Be33f034b95d9AD0; midPrice=1.27 |
|
||||
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xDcA29dfa59C8faF90e4437DEAe74474F78735cDe; midPrice=1.27 |
|
||||
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB6eaF7cEB4A6e9Bc6A57fEb51011B6Bb01632C1F; midPrice=0.0067 |
|
||||
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x41e67b8b5929e44C2b7A0D772E151FAD8D5303cd; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB6b15Ba233C95d164504e24209C1fAc3304059C7; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `42220` Celo | `cWAUDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCHFC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWEURC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWEURT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWGBPC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWGBPT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWJPYC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
| `43114` Avalanche C-Chain | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x287edaBDA35195592d7CACe2C1A75eC66caF1D70; midPrice=1 |
|
||||
| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x75Ec85467927512b01C9e0481Fb1902d2d7210dC; midPrice=0.74 |
|
||||
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3a224eae91ac813a03E15d0c37B641bC6c2237d7; midPrice=1.11 |
|
||||
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xEE2742Fa6f70A40aB16c9b613c5cF6933bA92Cc3; midPrice=1.08 |
|
||||
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8507F3F3cB121072c1e3f2D912d269CA9829eEF8; midPrice=1.08 |
|
||||
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x73542F7B1CBd4552Eb8FeFEB3D1884527424da58; midPrice=1.27 |
|
||||
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xa07dEe884555f2E9D04d0039FEF0b746987a8441; midPrice=1.27 |
|
||||
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6175D065c602dab71A03753987D1ebEc99eFcC2e; midPrice=0.0067 |
|
||||
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
|
||||
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5d3a4A3Dae9FEcFe979A784F55d994c9a9fBeAfB; midPrice=3200 |
|
||||
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x1392bb9f23F938E6c1cDaAAE5c45d29BE5f8C828; midPrice=3200 |
|
||||
| | | | | | Activation state: `active`; RPC configured: `True` |
|
||||
460
docs/03-deployment/CW_PUBLIC_NETWORK_REPEG_PLAN.md
Normal file
460
docs/03-deployment/CW_PUBLIC_NETWORK_REPEG_PLAN.md
Normal file
@@ -0,0 +1,460 @@
|
||||
# cW Public Network Repeg Plan
|
||||
|
||||
- Generated: `2026-04-20T00:49:46Z`
|
||||
- Price report: `/home/intlc/projects/proxmox/reports/status/cw-public-prices-latest.json`
|
||||
- Deployment inventory: `/home/intlc/projects/proxmox/cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- Uniswap discovery: `/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json`
|
||||
- Scope: current off-peg or unreadable public-network `cW*` pools only.
|
||||
- PMM rule: if current price is below target, fund quote and buy base; if current price is above target, fund base and sell base.
|
||||
- Uniswap rule: remove bad LP or ignore stale LP, then reseed at the target reserve ratio.
|
||||
|
||||
## Off-Peg DODO PMM Pools
|
||||
|
||||
| Chain | Pair | Pool | Current | Target | Deviation | Repair Path |
|
||||
|---|---|---|---:|---:|---:|---|
|
||||
| `1` Ethereum Mainnet | `cWEURC/USDC` | `0x0bC750F9c6DbDcd76B205695A356491b1B9ef098` | `1.15145921` | `1.08000000` | `+6.62%` | Fund base side and sell base into `cWEURC/USDC` until `getMidPrice()` returns target. |
|
||||
| `1` Ethereum Mainnet | `cWGBPC/USDC` | `0x5488042dF882893a3e7074453E2005CaDE4101b0` | `1.29980755` | `1.27000000` | `+2.35%` | Fund base side and sell base into `cWGBPC/USDC` until `getMidPrice()` returns target. |
|
||||
| `1` Ethereum Mainnet | `cWJPYC/USDC` | `0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794` | `0.00827694` | `0.00670000` | `+23.54%` | Fund base side and sell base into `cWJPYC/USDC` until `getMidPrice()` returns target. |
|
||||
| `1` Ethereum Mainnet | `cWUSDC/USDC` | `0x69776fc607e9edA8042e320e7e43f54d06c68f0E` | `0.24519859` | `1.00000000` | `-75.48%` | Fund quote side and buy base through `cWUSDC/USDC` until `getMidPrice()` returns target. |
|
||||
| `1` Ethereum Mainnet | `cWUSDT/USDC` | `0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2` | `0.24377078` | `1.00000000` | `-75.62%` | Fund quote side and buy base through `cWUSDT/USDC` until `getMidPrice()` returns target. |
|
||||
| `100` Gnosis Chain | `cWAUDC/USDC` | `0xeb5A688dF70be2F790719872Be9Ecc5648aEE460` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. |
|
||||
| `137` Polygon | `cWAUDC/USDC` | `0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. |
|
||||
| `43114` Avalanche C-Chain | `cWAUDC/USDC` | `0x287edaBDA35195592d7CACe2C1A75eC66caF1D70` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. |
|
||||
|
||||
## Broken Uniswap Pairs
|
||||
|
||||
| Chain | Pair | Pool | Current Ratio | Target | Deviation | Repair Path |
|
||||
|---|---|---|---:|---:|---:|---|
|
||||
| `56` BSC (BNB Chain) | `cWAUSDT/cWUSDC` | `0x639D7e64C6f1fC676226f20a0C42aEcDD66545E8` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. |
|
||||
| `56` BSC (BNB Chain) | `cWAUSDT/cWUSDT` | `0xe9b082bAa73Fa4DEc7CB3CbD99B19D30BbfE1523` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. |
|
||||
| `137` Polygon | `cWAUSDT/cWUSDC` | `0xe6a5Cb164D4AF7E9794AEd09EC373392D0E7216c` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. |
|
||||
| `137` Polygon | `cWAUSDT/cWUSDT` | `0x8cD2Cb42B81F894eb10D15446DB22A3B31d6fB2E` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. |
|
||||
| `42220` Celo | `cWAUSDT/cWUSDC` | `0xd3B55d6d7C08fDbF5F201e486992643cfF410d91` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. |
|
||||
| `42220` Celo | `cWAUSDT/cWUSDT` | `0xEe9eEBf89C1424e63eFc888929E43a9423357D39` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. |
|
||||
| `43114` Avalanche C-Chain | `cWAUSDT/cWUSDC` | `0xaaD6aed8d28B0195D19B4d17F8ee9A1837ff2DCE` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. |
|
||||
| `43114` Avalanche C-Chain | `cWAUSDT/cWUSDT` | `0x418322F48D857277ec4BCc96Bc1580aCCB7EA253` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. |
|
||||
|
||||
## Unpriced Targets
|
||||
|
||||
| Chain | Token | Target | Status |
|
||||
|---|---|---:|---|
|
||||
| `10` Optimism | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `10` Optimism | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `25` Cronos | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `25` Cronos | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `56` BSC (BNB Chain) | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `56` BSC (BNB Chain) | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `56` BSC (BNB Chain) | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `56` BSC (BNB Chain) | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `100` Gnosis Chain | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `100` Gnosis Chain | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `8453` Base | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `8453` Base | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `42161` Arbitrum One | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `42161` Arbitrum One | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWAUDC` | `0.66000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWCADC` | `0.74000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWCHFC` | `1.11000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWEURC` | `1.08000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWEURT` | `1.08000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWGBPC` | `1.27000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWGBPT` | `1.27000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWJPYC` | `0.00670000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWXAUC` | `3200.00000000` | no live price path found from current public snapshot |
|
||||
| `42220` Celo | `cWXAUT` | `3200.00000000` | no live price path found from current public snapshot |
|
||||
| `43114` Avalanche C-Chain | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `43114` Avalanche C-Chain | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `43114` Avalanche C-Chain | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
|
||||
| `43114` Avalanche C-Chain | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot |
|
||||
### `1` Ethereum Mainnet `cWEURC/USDC`
|
||||
|
||||
- Suggested funding side: `cWEURC`
|
||||
- Suggested trade raw: `82716`
|
||||
- Suggested trade units: `0.082716`
|
||||
- Gap fraction: `0.066166`
|
||||
- Deployer balance on funding side: `0.004987` `cWEURC`
|
||||
- Deployer shortfall: `0.077729` `cWEURC`
|
||||
- Covered: `False`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
|
||||
export POOL="0x0bC750F9c6DbDcd76B205695A356491b1B9ef098"
|
||||
export BASE_TOKEN="0xD4aEAa8cD3fB41Dc8437FaC7639B6d91B60A5e8d"
|
||||
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
||||
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
|
||||
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
|
||||
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `1` Ethereum Mainnet `cWGBPC/USDC`
|
||||
|
||||
- Suggested funding side: `cWGBPC`
|
||||
- Suggested trade raw: `2939`
|
||||
- Suggested trade units: `0.002939`
|
||||
- Gap fraction: `0.023471`
|
||||
- Deployer balance on funding side: `0.000478` `cWGBPC`
|
||||
- Deployer shortfall: `0.002461` `cWGBPC`
|
||||
- Covered: `False`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
|
||||
export POOL="0x5488042dF882893a3e7074453E2005CaDE4101b0"
|
||||
export BASE_TOKEN="0xc074007dc0bfb384b1cf6426a56287ed23fe4d52"
|
||||
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
||||
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
|
||||
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
|
||||
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `1` Ethereum Mainnet `cWJPYC/USDC`
|
||||
|
||||
- Suggested funding side: `cWJPYC`
|
||||
- Suggested trade raw: `26502`
|
||||
- Suggested trade units: `0.026502`
|
||||
- Gap fraction: `0.235364`
|
||||
- Deployer balance on funding side: `0` `cWJPYC`
|
||||
- Deployer shortfall: `0.026502` `cWJPYC`
|
||||
- Covered: `False`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
|
||||
export POOL="0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794"
|
||||
export BASE_TOKEN="0x07EEd0D7dD40984e47B9D3a3bdded1c536435582"
|
||||
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
||||
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
|
||||
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
|
||||
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `1` Ethereum Mainnet `cWUSDC/USDC`
|
||||
|
||||
- Suggested funding side: `USDC`
|
||||
- Suggested trade raw: `665998742`
|
||||
- Suggested trade units: `665.998742`
|
||||
- Gap fraction: `0.754801`
|
||||
- Deployer balance on funding side: `52.51225` `USDC`
|
||||
- Deployer shortfall: `613.486492` `USDC`
|
||||
- Covered: `False`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
|
||||
export POOL="0x69776fc607e9edA8042e320e7e43f54d06c68f0E"
|
||||
export BASE_TOKEN="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
|
||||
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
||||
export QUOTE_IN_RAW=REPLACE_QUOTE_IN_RAW
|
||||
export MIN_BASE_OUT_RAW=REPLACE_MIN_BASE_OUT_RAW
|
||||
cast send "$QUOTE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$QUOTE_IN_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$QUOTE_TOKEN" "$QUOTE_IN_RAW" "$MIN_BASE_OUT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `1` Ethereum Mainnet `cWUSDT/USDC`
|
||||
|
||||
- Suggested funding side: `USDC`
|
||||
- Suggested trade raw: `7071662`
|
||||
- Suggested trade units: `7.071662`
|
||||
- Gap fraction: `0.756229`
|
||||
- Deployer balance on funding side: `52.51225` `USDC`
|
||||
- Deployer shortfall: `0` `USDC`
|
||||
- Covered: `True`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
|
||||
export POOL="0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2"
|
||||
export BASE_TOKEN="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
|
||||
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
||||
export QUOTE_IN_RAW=REPLACE_QUOTE_IN_RAW
|
||||
export MIN_BASE_OUT_RAW=REPLACE_MIN_BASE_OUT_RAW
|
||||
cast send "$QUOTE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$QUOTE_IN_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$QUOTE_TOKEN" "$QUOTE_IN_RAW" "$MIN_BASE_OUT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `100` Gnosis Chain `cWAUDC/USDC`
|
||||
|
||||
- Suggested funding side: `cWAUDC`
|
||||
- Suggested trade raw: `0`
|
||||
- Suggested trade units: `0`
|
||||
- Gap fraction: `0.515152`
|
||||
- Deployer balance on funding side: `0` `cWAUDC`
|
||||
- Deployer shortfall: `0` `cWAUDC`
|
||||
- Covered: `True`
|
||||
- Reserve snapshot: `baseRaw=0 quoteRaw=0`
|
||||
- Sizing note: `Pool reports zero vault reserves; heuristic trade size is informational only.`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_RPC_URL}"
|
||||
export INTEGRATION="0x5866c2CeAfcdB36375A731532B434c370885678a"
|
||||
export POOL="0xeb5A688dF70be2F790719872Be9Ecc5648aEE460"
|
||||
export BASE_TOKEN="0xddc4063f770f7c49d00b5a10fb552e922aa39b2c"
|
||||
export QUOTE_TOKEN="0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83"
|
||||
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
|
||||
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
|
||||
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `137` Polygon `cWAUDC/USDC`
|
||||
|
||||
- Suggested funding side: `unknown`
|
||||
- Suggested trade raw: `unknown`
|
||||
- Suggested trade units: `unknown`
|
||||
- Gap fraction: `unknown`
|
||||
- Deployer balance on funding side: `unknown` ``
|
||||
- Deployer shortfall: `unknown` ``
|
||||
- Covered: `unknown`
|
||||
- Sizing note: `Error: contract 0xc21223249ca28397b4b6541dffaecc539bff0c59 does not have any code`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export INTEGRATION="0x84353eD1f0C7a703a17aBAd19b0dB15Bc9A5e3e5"
|
||||
export POOL="0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783"
|
||||
export BASE_TOKEN="0xFb4B6Cc81211F7d886950158294A44C312abCA29"
|
||||
export QUOTE_TOKEN="0xc21223249CA28397B4B6541dfFaEcC539BfF0c59"
|
||||
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
|
||||
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
|
||||
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `43114` Avalanche C-Chain `cWAUDC/USDC`
|
||||
|
||||
- Suggested funding side: `cWAUDC`
|
||||
- Suggested trade raw: `0`
|
||||
- Suggested trade units: `0`
|
||||
- Gap fraction: `0.515152`
|
||||
- Deployer balance on funding side: `0` `cWAUDC`
|
||||
- Deployer shortfall: `0` `cWAUDC`
|
||||
- Covered: `True`
|
||||
- Reserve snapshot: `baseRaw=0 quoteRaw=0`
|
||||
- Sizing note: `Pool reports zero vault reserves; heuristic trade size is informational only.`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export INTEGRATION="0xf1B771c95573113E993374c0c7cB2dc1a7908B12"
|
||||
export POOL="0x287edaBDA35195592d7CACe2C1A75eC66caF1D70"
|
||||
export BASE_TOKEN="0x04e1e22b0d41e99f4275bd40a50480219bc9a223"
|
||||
export QUOTE_TOKEN="0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
|
||||
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
|
||||
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
|
||||
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `56` BSC (BNB Chain) `cWAUSDT/cWUSDC`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export PAIR="0x639D7e64C6f1fC676226f20a0C42aEcDD66545E8"
|
||||
export TOKEN_A="0xe1a51Bc037a79AB36767561B147eb41780124934"
|
||||
export TOKEN_B="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
|
||||
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
# Optional: remove bad LP first if you control LP tokens for this pair.
|
||||
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `56` BSC (BNB Chain) `cWAUSDT/cWUSDT`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export PAIR="0xe9b082bAa73Fa4DEc7CB3CbD99B19D30BbfE1523"
|
||||
export TOKEN_A="0xe1a51Bc037a79AB36767561B147eb41780124934"
|
||||
export TOKEN_B="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
|
||||
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
# Optional: remove bad LP first if you control LP tokens for this pair.
|
||||
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `137` Polygon `cWAUSDT/cWUSDC`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export ROUTER="0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff"
|
||||
export PAIR="0xe6a5Cb164D4AF7E9794AEd09EC373392D0E7216c"
|
||||
export TOKEN_A="0xf12e262F85107df26741726b074606CaFa24AAe7"
|
||||
export TOKEN_B="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
|
||||
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
# Optional: remove bad LP first if you control LP tokens for this pair.
|
||||
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `137` Polygon `cWAUSDT/cWUSDT`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export ROUTER="0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff"
|
||||
export PAIR="0x8cD2Cb42B81F894eb10D15446DB22A3B31d6fB2E"
|
||||
export TOKEN_A="0xf12e262F85107df26741726b074606CaFa24AAe7"
|
||||
export TOKEN_B="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
|
||||
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
# Optional: remove bad LP first if you control LP tokens for this pair.
|
||||
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `42220` Celo `cWAUSDT/cWUSDC`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_RPC_URL}"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export PAIR="0xd3B55d6d7C08fDbF5F201e486992643cfF410d91"
|
||||
export TOKEN_A="0xC158b6cD3A3088C52F797D41f5Aa02825361629e"
|
||||
export TOKEN_B="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
|
||||
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
# Optional: remove bad LP first if you control LP tokens for this pair.
|
||||
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `42220` Celo `cWAUSDT/cWUSDT`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_RPC_URL}"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export PAIR="0xEe9eEBf89C1424e63eFc888929E43a9423357D39"
|
||||
export TOKEN_A="0xC158b6cD3A3088C52F797D41f5Aa02825361629e"
|
||||
export TOKEN_B="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
|
||||
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
# Optional: remove bad LP first if you control LP tokens for this pair.
|
||||
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `43114` Avalanche C-Chain `cWAUSDT/cWUSDC`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export PAIR="0xaaD6aed8d28B0195D19B4d17F8ee9A1837ff2DCE"
|
||||
export TOKEN_A="0xff3084410A732231472Ee9f93F5855dA89CC5254"
|
||||
export TOKEN_B="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
|
||||
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
# Optional: remove bad LP first if you control LP tokens for this pair.
|
||||
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
|
||||
### `43114` Avalanche C-Chain `cWAUSDT/cWUSDT`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export PAIR="0x418322F48D857277ec4BCc96Bc1580aCCB7EA253"
|
||||
export TOKEN_A="0xff3084410A732231472Ee9f93F5855dA89CC5254"
|
||||
export TOKEN_B="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
|
||||
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
# Optional: remove bad LP first if you control LP tokens for this pair.
|
||||
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
```
|
||||
60
docs/03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md
Normal file
60
docs/03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# cW Token USD Pricing (Ethereum Mainnet)
|
||||
|
||||
This runbook explains how to attach **USD context** to wrapped basket tokens (`cW*`) when block explorers show **balance** but **$0 value** (no listed market price).
|
||||
|
||||
## Tooling
|
||||
|
||||
From the repo root:
|
||||
|
||||
```bash
|
||||
./scripts/deployment/price-cw-token-mainnet.sh
|
||||
./scripts/deployment/price-cw-token-mainnet.sh --json | jq .
|
||||
```
|
||||
|
||||
The script sources `scripts/lib/load-project-env.sh` when present so addresses match your `smom-dbis-138/.env` (or overrides).
|
||||
|
||||
**Dependencies:** `cast` (Foundry), `python3`, and `jq` (for `--json`).
|
||||
|
||||
## What the script reports
|
||||
|
||||
1. **Accounting assumption (1 cWUSDT ≈ 1 USD)**
|
||||
Use only if your policy treats the wrapper as tracking the underlying stable 1:1. Appropriate for internal books and dashboards where you need a **single consistent mark** without relying on DEX liquidity.
|
||||
|
||||
2. **DODO PMM integration — `getPoolPriceOrOracle` / `getPoolPrice`**
|
||||
Reads `DODO_PMM_INTEGRATION_MAINNET` for the configured pool (`POOL_CWUSDT_USDC_MAINNET`). The integration returns a `uint256` scaled by **1e18** in the project docs when the oracle is aligned with “USD.”
|
||||
**Important:** For stable/stable pools, the raw integration mid can disagree with **reserve-implied** prices depending on base/quote orientation and PMM parameters. Treat this as one signal, not the only mark.
|
||||
|
||||
3. **Implied from vault reserves**
|
||||
Uses `getPoolReserves` on the same integration for **base** and **quote** raw balances, then applies **token `decimals()`** for cWUSDT and **mainnet canonical USDC** (`USDC_MAINNET`, default `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`).
|
||||
Computes **USDC per 1 cWUSDT** when base/quote order matches the pool (cWUSDT vs USDC). This is a strong **sanity check** for deep stable pools; thin or imbalanced pools skew the ratio.
|
||||
|
||||
4. **Chainlink ETH/USD (macro only)**
|
||||
Optional reference to the standard ETH/USD feed (`CHAINLINK_ETH_USD_FEED`). This is **not** a direct cW* price; it is useful for macro context or cross-checking RPC health.
|
||||
|
||||
## Environment overrides
|
||||
|
||||
| Variable | Role |
|
||||
|----------|------|
|
||||
| `ETHEREUM_MAINNET_RPC` | Mainnet JSON-RPC endpoint |
|
||||
| `DODO_PMM_INTEGRATION_MAINNET` | DODO PMM integration contract |
|
||||
| `POOL_CWUSDT_USDC_MAINNET` | cWUSDT/USDC pool address |
|
||||
| `CWUSDT_MAINNET` | cWUSDT token |
|
||||
| `USDC_MAINNET` | Mainnet canonical USDC (do not substitute Chain 138 `OFFICIAL_USDC_ADDRESS` for this script) |
|
||||
| `CHAINLINK_ETH_USD_FEED` | Chainlink ETH/USD aggregator |
|
||||
|
||||
## Etherscan and “$0 value”
|
||||
|
||||
Explorers derive the **Value** column from **external** price feeds (Etherscan relies heavily on **CoinGecko** / similar for Ethereum Mainnet ERC-20 USD). Custom `cW*` tokens usually have **no** listing for that contract on chain ID **1**, so **USD shows as zero** even when balances and pools are real.
|
||||
|
||||
- **Internal / treasury marks:** use this script’s **accounting line**, **reserve-implied** USDC ratio, or policy—not Etherscan’s Value column.
|
||||
- **Actually changing Etherscan’s Value:** requires **off-chain** listing so aggregators publish a USD price for the **Mainnet** contract. Step-by-step: [ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](../04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md) (CoinGecko/CMC submission ties to [CMC_COINGECKO_SUBMISSION_RUNBOOK.md](../04-configuration/coingecko/CMC_COINGECKO_SUBMISSION_RUNBOOK.md)).
|
||||
|
||||
## Broader cW* price table
|
||||
|
||||
A generated multi-chain table (mid prices from PMM where available) lives in:
|
||||
|
||||
`docs/03-deployment/CW_PUBLIC_NETWORK_PRICES.md`
|
||||
|
||||
## Extending to other tokens
|
||||
|
||||
The shell script is parameterized by env vars for **cWUSDT** and its **USDC** pool. For other `cW*` assets, point `CWUSDT_MAINNET`, `POOL_*`, and (if needed) quote token at the correct mainnet addresses and re-run. For portfolio-level marks (CoinGecko, OTC, fund admin), use your **external** pricing process; this repo script stays **on-chain** and **policy-transparent**.
|
||||
@@ -1,11 +1,11 @@
|
||||
# DBIS Chain 138 — Phases 1-3 Production Gate
|
||||
# DeFi Oracle Meta Mainnet (Chain 138) — Phases 1-3 Production Gate
|
||||
|
||||
**Last updated:** 2026-03-28
|
||||
**Purpose:** Convert the DBIS master plan into an operational production gate. This document records which Phase 1-3 conditions are currently satisfied, which are partially satisfied, and which still block an honest production declaration.
|
||||
|
||||
## Overall status
|
||||
|
||||
**Current conclusion:** DBIS Chain 138 has a healthy Besu production base and a working Phase 3 liveness slice, but it is **not yet fully production-complete across the broader DBIS Hyperledger stack**.
|
||||
**Current conclusion:** DeFi Oracle Meta Mainnet (Chain 138) has a healthy Besu production base and a working Phase 3 liveness slice, but it is **not yet fully production-complete across the broader DBIS Hyperledger stack**.
|
||||
|
||||
### What is genuinely production-capable now
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
## Production blockers
|
||||
|
||||
The following items still prevent a full “DBIS Chain 138 production complete” declaration:
|
||||
The following items still prevent a full “DeFi Oracle Meta Mainnet (Chain 138) production complete” declaration:
|
||||
|
||||
1. `6201` is not a verified active secondary FireFly node and is currently treated as retired / standby until rebuilt.
|
||||
2. Fabric `6000-6002` are not active peer/orderer workloads; current evidence showed placeholder CTs only, and they have now been stopped and retained as reserve inventory.
|
||||
|
||||
@@ -64,7 +64,7 @@ The orchestrator:
|
||||
| **Chain 138** | If token-aggregation has no c*→WETH pool: fund deployer via **genesis alloc** or **validator transfer**. See [FUNDING_AND_DEPLOYMENT_CHECKLIST.md](FUNDING_AND_DEPLOYMENT_CHECKLIST.md). |
|
||||
| **Protocolink (public chains)** | Use the quote/output from `protocolink-swap-to-gas.cjs`. Build transaction via [Protocolink API](https://docs.protocolink.com/protocolink-api/overview) (estimate router data, build tx); sign with deployer key and submit. |
|
||||
| **Cronos (25)** | **Manual (multiple routes):** Protocolink does not support Cronos. Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/USDT/USDC → CRO; send to deployer on Cronos. Required ~15 CRO. List all routes: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list`. |
|
||||
| **Wemix (1111)** | **Manual (multiple routes):** Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/POL → WEMIX; send to deployer on chain 1111. Required ~0.4 WEMIX. List all routes: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list`. Then run `deploy-bridges-config-ready-chains.sh wemix` and complete-config. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). |
|
||||
| **Wemix (1111)** | **Manual (multiple routes, only if gas needs a top-up):** Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/POL → WEMIX; send to deployer on chain 1111. Current blocker is no longer native gas by default; the live gap is LINK funding on the deployed WEMIX bridge contracts plus a proof transfer. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). |
|
||||
|
||||
---
|
||||
|
||||
|
||||
37
docs/03-deployment/EXTERNAL_DEPENDENCY_BLOCKERS.md
Normal file
37
docs/03-deployment/EXTERNAL_DEPENDENCY_BLOCKERS.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# External Dependency Blockers
|
||||
|
||||
**Purpose:** Canonical list of delivery items that cannot be resolved by repo-only changes and must be satisfied by external implementation, deployment, or infrastructure provisioning.
|
||||
|
||||
**Action checklist to clear every blocker:** [REMOVE_ALL_BLOCKERS_CHECKLIST.md](REMOVE_ALL_BLOCKERS_CHECKLIST.md)
|
||||
|
||||
## Current blockers
|
||||
|
||||
| Blocker ID | External dependency | Pass condition | Repo-side signal |
|
||||
|---|---|---|---|
|
||||
| `EXT-DBIS-CORE` | `dbis_core` deployment | `DBIS_CORE_URL` is set and reachable | `scripts/verify/check-external-dependencies.sh` |
|
||||
| `EXT-CC-PAYMENT-ADAPTERS` | `cc-payment-adapters` implementation and hosting | `CC_PAYMENT_ADAPTERS_URL` is set and reachable | `scripts/verify/check-external-dependencies.sh` |
|
||||
| `EXT-CC-AUDIT-LEDGER` | `cc-audit-ledger` implementation and hosting | `CC_AUDIT_LEDGER_URL` is set and reachable | `scripts/verify/check-external-dependencies.sh` |
|
||||
| `EXT-CC-SHARED-EVENTS` | `cc-shared-events` implementation and hosting | `CC_SHARED_EVENTS_URL` is set and reachable | `scripts/verify/check-external-dependencies.sh` |
|
||||
| `EXT-CC-SHARED-SCHEMAS` | `cc-shared-schemas` implementation and hosting | `CC_SHARED_SCHEMAS_URL` is set and reachable | `scripts/verify/check-external-dependencies.sh` |
|
||||
| `EXT-FIN-GATEWAY` | FIN / Alliance Access gateway | `FIN_GATEWAY_URL` or `ALLIANCE_ACCESS_URL` is set and reachable | `scripts/verify/check-external-dependencies.sh` |
|
||||
| `EXT-CHAIN138-CI-RPC` | Chain 138 node reachable from CI runners | `CHAIN138_CI_RPC_URL` or `RPC_URL_138_PUBLIC` returns a block number | `scripts/verify/check-external-dependencies.sh` |
|
||||
|
||||
## How to check
|
||||
|
||||
Strict mode:
|
||||
|
||||
```bash
|
||||
bash scripts/verify/check-external-dependencies.sh
|
||||
```
|
||||
|
||||
Advisory mode:
|
||||
|
||||
```bash
|
||||
bash scripts/verify/check-external-dependencies.sh --advisory
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- These blockers are expected to remain unresolved until external systems are deployed or pointed at live instances.
|
||||
- Repo-side readiness scripts now surface these blockers explicitly instead of failing with generic env or connectivity errors.
|
||||
- `dbis_core` source exists in this workspace, but that does not satisfy `EXT-DBIS-CORE`; the blocker closes only when a live reachable instance exists.
|
||||
@@ -0,0 +1,5 @@
|
||||
# Immediate And Same-Day Corridor Assets
|
||||
|
||||
Immediate bucket: Mainnet `cWUSDC` and `cWUSDT` with `17777520.488172` USD nominally near-immediate but still constrained by shallow verified public exits.
|
||||
|
||||
Same-day corridor bucket: Chain 138 `cUSDC`, `cUSDT`, and stable LP claims totaling `1381462148.370564` USD under the current corridor model.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Immediate Live Production Task List: Source To CEX Execution
|
||||
|
||||
This task list is now backed by repo-native policy and readiness artifacts:
|
||||
|
||||
- `config/extraction/source-to-cex-production-policy.json`
|
||||
- `config/extraction/additional-wallet-inventory.json`
|
||||
- `reports/extraction/source-to-cex-offchain-sink-validation-latest.json`
|
||||
- `docs/03-deployment/SOURCE_TO_CEX_EXECUTION_PLAN.md`
|
||||
- `docs/03-deployment/SOURCE_TO_CEX_PRODUCTION_READINESS.md`
|
||||
|
||||
Immediate repo-completable phases are done: policy, planning, inventory schema, and readiness reporting. The remaining blockers are live off-chain sink details and operator promotion of `production_enabled`.
|
||||
@@ -14,6 +14,8 @@ This document provides a master index of all operational runbooks and procedures
|
||||
|
||||
**Proxmox VE hosts, peering, FQDN/NPMplus summary, deployment gates (human + JSON):** [PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md](PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md).
|
||||
|
||||
**Chain 138 txpool incident standard recovery:** `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`. This is the default path when pending hashes keep reappearing, future-nonce junk survives a clear, or block production is affected by txpool residue.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
@@ -202,6 +204,7 @@ If an RPC node returns wrong chain ID or block 0 / no block: use the dedicated r
|
||||
- **[QBFT_TROUBLESHOOTING.md](../09-troubleshooting/QBFT_TROUBLESHOOTING.md)** - QBFT consensus troubleshooting
|
||||
- **Block Production Issues** - [BLOCK_PRODUCTION_FIX_RUNBOOK.md](../08-monitoring/BLOCK_PRODUCTION_FIX_RUNBOOK.md) — restore block production (permissioning TOML, tx-pool, restart validators 1000–1004)
|
||||
- **Validator Recognition** - Validator not being recognized
|
||||
- **Chain 138 txpool incidents** - Run `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`. The strict future-queue step normalizes `tx-pool-max-future-by-sender=1` fleet-wide so far-future thirdweb or automation residue does not repopulate the mesh after restart.
|
||||
|
||||
---
|
||||
|
||||
@@ -213,6 +216,13 @@ If an RPC node returns wrong chain ID or block 0 / no block: use the dedicated r
|
||||
|
||||
---
|
||||
|
||||
## TsunamiSwap
|
||||
|
||||
- **[../00-meta/AAVE_CHAIN138_AND_MARIONETTE_TSUNAMISWAP_PLAN.md](../00-meta/AAVE_CHAIN138_AND_MARIONETTE_TSUNAMISWAP_PLAN.md)** — Canonical TsunamiSwap VM `5010` plan, current repo-authoritative DEX link, and publish checklist.
|
||||
- **Inventory helper:** [`../../scripts/deployment/tsunamiswap-vm-5010-provision.sh`](../../scripts/deployment/tsunamiswap-vm-5010-provision.sh)
|
||||
|
||||
---
|
||||
|
||||
## GRU M1 Listing Operations
|
||||
|
||||
### GRU M1 Listing Dry-Run
|
||||
|
||||
227
docs/03-deployment/PROMOD_GRU_V2_FULL_MESH_GAP_REPORT.md
Normal file
227
docs/03-deployment/PROMOD_GRU_V2_FULL_MESH_GAP_REPORT.md
Normal file
@@ -0,0 +1,227 @@
|
||||
# Mr. Promod GRU v2 Full Mesh Gap Report
|
||||
|
||||
- Generated: `2026-04-18T11:53:36Z`
|
||||
- Program: `promod-gru-v2-full-mesh-gap-report`
|
||||
- Purpose: strict per-network report for the remaining GRU v2 `cW*` mesh across DODO PMM, Uniswap V2, Balancer, Curve, and related venue surfaces.
|
||||
|
||||
## Accounting Rule
|
||||
|
||||
- Source balance fraction to move: `75%`
|
||||
- Destination network count: `10`
|
||||
- Per-chain fraction of current source balance: `7.5%`
|
||||
- Base unit rule: `amount_75 = balance * 75 // 100; per_chain = amount_75 // 10; remainder stays on Chain 138 or is adjusted on the last transfer`
|
||||
|
||||
## Repo Reality
|
||||
|
||||
- Chain 138 generic source-to-all-destinations bridge: `not_available_as_single_generic_bridge_button`
|
||||
- Supported pattern: destination cW deployment plus lock/mint bridge or destination-side minting through the CW bridge program where selectors, mappings, and destination receivers are actually configured
|
||||
- Venue summary:
|
||||
- DODO PMM: live cW asset pools are recorded across the public network set
|
||||
- Uniswap V2: live core rail is recorded in deployment-status; live wave-1 wrapped mesh completion is tracked separately in the phase-2 completion report
|
||||
- Balancer: currently modeled as reference or planned venue surface, not a live cW asset mesh deployment set
|
||||
- Curve: currently modeled as reference or planned venue surface, not a live cW asset mesh deployment set
|
||||
- Uniswap V3: currently modeled as reference surface in deployment-status gasReferenceVenues
|
||||
- 1inch: aggregator visibility surface only, not a pool deployment venue
|
||||
|
||||
## Network Summary
|
||||
|
||||
- DODO PMM live chain count: `10` / `10`
|
||||
- Uniswap V2 wave-1 complete chain count: `10` / `10`
|
||||
- Balancer live chain count: `0` / `10`
|
||||
- Curve live chain count: `0` / `10`
|
||||
- Uniswap V3 live chain count: `0` / `10`
|
||||
|
||||
| Chain | Network | Bridge | DODO PMM | Uniswap V2 | Balancer | Curve | Remaining Mesh Assets After Wave 1 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `True` | `15 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `10` | Optimism | `True` | `12 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `25` | Cronos | `True` | `12 live` | `6 wave-1 pairs` | `unsupported` | `unsupported` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `56` | BSC (BNB Chain) | `True` | `10 live` | `6 wave-1 pairs` | `unsupported` | `unsupported` | `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` |
|
||||
| `100` | Gnosis Chain | `True` | `10 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `137` | Polygon | `True` | `12 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `8453` | Base | `True` | `10 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `42161` | Arbitrum One | `True` | `10 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `42220` | Celo | `True` | `10 live` | `6 wave-1 pairs` | `unsupported` | `reference_only` | `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` |
|
||||
| `43114` | Avalanche C-Chain | `True` | `10 live` | `6 wave-1 pairs` | `unsupported` | `reference_only` | `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` |
|
||||
|
||||
## Per-Network Detail
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `15`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWUSDC/USDC`, `cWUSDC/USDT`, `cWUSDT/USDC`, `cWUSDT/USDT`, `cWUSDT/cWUSDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `12`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWUSDC/USDC`, `cWUSDT/USDT`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `12`
|
||||
- `cWAUDC/USDT`, `cWCADC/USDT`, `cWCHFC/USDT`, `cWEURC/USDT`, `cWEURT/USDT`, `cWGBPC/USDT`, `cWGBPT/USDT`, `cWJPYC/USDT`, `cWUSDC/USDC`, `cWUSDT/USDT`, `cWXAUC/USDT`, `cWXAUT/USDT`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `unsupported`
|
||||
- Curve status: `unsupported`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `56` — BSC (BNB Chain)
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDT`, `cWCADC/USDT`, `cWCHFC/USDT`, `cWEURC/USDT`, `cWEURT/USDT`, `cWGBPC/USDT`, `cWGBPT/USDT`, `cWJPYC/USDT`, `cWXAUC/USDT`, `cWXAUT/USDT`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `unsupported`
|
||||
- Curve status: `unsupported`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWUSDW/cWUSDC`, `cWUSDW/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `100` — Gnosis Chain
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `12`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWUSDC/USDC`, `cWUSDT/USDT`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `unsupported`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWUSDW/cWUSDC`, `cWUSDW/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `43114` — Avalanche C-Chain
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `unsupported`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWUSDW/cWUSDC`, `cWUSDW/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
@@ -0,0 +1,27 @@
|
||||
# Mr. Promod Uniswap V2 First Deployment Target Matrix
|
||||
|
||||
- Generated: `2026-04-17T17:47:29Z`
|
||||
- Program: Mr. Promod Uniswap V2 cW Deep Liquidity Program
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
- Purpose: choose the first pair per chain so the first live pool rollout is concrete rather than generic.
|
||||
|
||||
| Chain | Network | First Pair | Why It Should Be First | Required Tokens | Other GRU v2 cW* Tokens | Next Wrapped Expansion Pairs | Post-Deploy Commands |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `10` | Optimism | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `25` | Cronos | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `56` | BSC | `cWUSDT/cWUSDC` | Core wrapped support rail and the one we are standardizing on first; it creates transferable depth between the two settlement-adjacent cW rails before any canonical stable exit pool. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `100` | Gnosis | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `137` | Polygon | `cWUSDT/cWUSDC` | Core wrapped support rail and the one we are standardizing on first; it creates transferable depth between the two settlement-adjacent cW rails before any canonical stable exit pool. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `8453` | Base | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `42161` | Arbitrum One | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `42220` | Celo | `cWUSDT/cWUSDC` | Core wrapped support rail and the one we are standardizing on first; it creates transferable depth between the two settlement-adjacent cW rails before any canonical stable exit pool. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `43114` | Avalanche C-Chain | `cWUSDT/cWUSDC` | Core wrapped support rail and the one we are standardizing on first; it creates transferable depth between the two settlement-adjacent cW rails before any canonical stable exit pool. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
|
||||
## Selection Rule
|
||||
|
||||
- First choice is always `cWUSDT/cWUSDC` when both rails are documented on the chain.
|
||||
- If `cWUSDT/cWUSDC` is unavailable, prefer a wrapped-first fallback before opening a canonical settlement rail.
|
||||
- The other documented GRU v2 `cW*` assets expand next as wrapped pairs against `cWUSDC` and `cWUSDT`.
|
||||
- Canonical settlement rails such as `cWUSDC/USDC` or `cWUSDT/USDT` become the first target only when the chain cannot open with the wrapped support rail.
|
||||
- `cWAUSDT` remains a wrapped-depth support asset, not the default first target, unless it is required as the only viable wrapped-first fallback.
|
||||
40
docs/03-deployment/PROMOD_UNISWAP_V2_LIQUIDITY_PROGRAM.md
Normal file
40
docs/03-deployment/PROMOD_UNISWAP_V2_LIQUIDITY_PROGRAM.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Mr. Promod Uniswap V2 Liquidity Program
|
||||
|
||||
- Generated: `2026-04-17T17:47:28Z`
|
||||
- Program: Mr. Promod Uniswap V2 cW Deep Liquidity Program
|
||||
- Strict note: this is a repo-native desired-state rollout package for Uniswap V2 or Uniswap-V2-compatible pools. It does not claim live deployment unless factory/router addresses and pool addresses are recorded.
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
|
||||
## Deployment Model
|
||||
|
||||
- Phase 1: build wrapped-depth support first when canonical USDC or USDT is scarce.
|
||||
- Phase 2: add or deepen canonical settlement rails once enough hub-stable inventory exists.
|
||||
- Promotion gate: do not treat any Uniswap V2 rail as live until its factory/router env, pool address, and indexer visibility are all recorded.
|
||||
|
||||
## Wrapped-Depth Policy
|
||||
|
||||
- Preferred wrapped pairs: `cWAUSDT/cWUSDC, cWAUSDT/cWUSDT, cWUSDT/cWUSDC`
|
||||
- Allocation split: flagship `50%`, second `30%`, third `20%`
|
||||
|
||||
## Operator Matrix
|
||||
|
||||
| Chain | Network | Tier | Hub Stable | Core Wrapped Pairs | Additional GRU v2 cW* Tokens | Next Wrapped Expansion Pairs | Settlement Phase Pairs | Existing PMM Analogs |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `tier_1` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWUSDT/cWUSDC` |
|
||||
| `10` | Optimism | `tier_1` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | `cWUSDC/USDC` |
|
||||
| `25` | Cronos | `tier_2` | `USDT` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDT`, `cWUSDT/USDT` | `cWUSDT/USDT` |
|
||||
| `56` | BSC | `tier_2` | `USDT` | `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDT`, `cWUSDT/USDT`, `cWAUSDT/USDT` | — |
|
||||
| `100` | Gnosis | `tier_2` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | — |
|
||||
| `137` | Polygon | `tier_1` | `USDC` | `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` | `cWUSDC/USDC` |
|
||||
| `8453` | Base | `tier_1` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | — |
|
||||
| `42161` | Arbitrum One | `tier_1` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | — |
|
||||
| `42220` | Celo | `tier_2` | `USDC` | `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` | — |
|
||||
| `43114` | Avalanche C-Chain | `tier_2` | `USDC` | `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` | — |
|
||||
|
||||
## Readiness Rules
|
||||
|
||||
- Use `cWAUSDT` as a wrapped-depth support asset, not as a full replacement for `USDC` or `USDT` settlement.
|
||||
- Keep `cWUSDT/cWUSDC` available everywhere both core wrapped rails are documented.
|
||||
- After the first rail is live, expand the other documented GRU v2 `cW*` assets against `cWUSDC` and `cWUSDT` before opening broad canonical settlement exits.
|
||||
- Prefer `cWUSDC/USDC`, `cWUSDT/USDT`, or `cWAUSDT/USDC|USDT` only after canonical hub inventory is deep enough to matter.
|
||||
- For every promoted chain, add the new pools to `deployment-status.json`, Uniswap V2 env config, and token-aggregation indexing.
|
||||
19
docs/03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md
Normal file
19
docs/03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Mr. Promod Uniswap V2 Live Pair Discovery
|
||||
|
||||
- Generated: `2026-04-22T04:59:28Z`
|
||||
- Live pairs discovered: `19`
|
||||
- Healthy live pairs: `10`
|
||||
- Write mode: `False`
|
||||
|
||||
| Chain | Network | Env Ready | Live Pairs Found | Healthy Live Pairs |
|
||||
|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `True` | `cWUSDC/USDC`, `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `10` | Optimism | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `25` | Cronos | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `56` | BSC (BNB Chain) | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `100` | Gnosis Chain | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `137` | Polygon | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `42220` | Celo | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `43114` | Avalanche C-Chain | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `8453` | Base | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `42161` | Arbitrum One | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
112
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_3X_MATRIX.md
Normal file
112
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_3X_MATRIX.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Bridge 3x Matrix
|
||||
|
||||
- Generated: `2026-04-17T18:22:33Z`
|
||||
- Purpose: strict triple-sized Chain 138 bridge funding plan for the remaining phase-1 pool rollout.
|
||||
- Bridge multiplier: `3x`
|
||||
- Total cUSDT to bridge from Chain 138: `21000`
|
||||
- Total cUSDC to bridge from Chain 138: `21002.4`
|
||||
|
||||
| Chain | Network | Base cUSDT Need | Base cUSDC Need | 3x cUSDT To Bridge | 3x cUSDC To Bridge | Bridge Env |
|
||||
|---|---|---:|---:|---:|---:|---|
|
||||
| `1` | Ethereum Mainnet | `0` | `0` | `0` | `0` | `CW_BRIDGE_MAINNET` |
|
||||
| `10` | Optimism | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_OPTIMISM` |
|
||||
| `25` | Cronos | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_CRONOS` |
|
||||
| `56` | BSC | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_BSC` |
|
||||
| `100` | Gnosis | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_GNOSIS` |
|
||||
| `137` | Polygon | `0` | `0` | `0` | `0` | `CW_BRIDGE_POLYGON` |
|
||||
| `8453` | Base | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_BASE` |
|
||||
| `42161` | Arbitrum One | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_ARBITRUM` |
|
||||
| `42220` | Celo | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_CELO` |
|
||||
| `43114` | Avalanche | `0` | `0.8` | `0` | `2.4` | `CW_BRIDGE_AVALANCHE` |
|
||||
|
||||
## Notes
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Recommended action: `seed_now`
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `0`
|
||||
- Bridge env: `CW_BRIDGE_MAINNET`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `1` via `CW_BRIDGE_MAINNET` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_OPTIMISM`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `10` via `CW_BRIDGE_OPTIMISM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_CRONOS`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `25` via `CW_BRIDGE_CRONOS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_BSC`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `56` via `CW_BRIDGE_BSC` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_GNOSIS`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `100` via `CW_BRIDGE_GNOSIS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Recommended action: `seed_now`
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `0`
|
||||
- Bridge env: `CW_BRIDGE_POLYGON`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `137` via `CW_BRIDGE_POLYGON` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_BASE`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `8453` via `CW_BRIDGE_BASE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_ARBITRUM`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `42161` via `CW_BRIDGE_ARBITRUM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_CELO`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `42220` via `CW_BRIDGE_CELO` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Recommended action: `bridge_or_mint_missing_side_then_seed`
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `2.4`
|
||||
- Bridge env: `CW_BRIDGE_AVALANCHE`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `43114` via `CW_BRIDGE_AVALANCHE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
@@ -0,0 +1,420 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Bridge 3x Operator Packet
|
||||
|
||||
- Generated: `2026-04-17T18:23:46Z`
|
||||
- Purpose: strict operator packet for `3x` bridge sizing and post-funding pool deployment.
|
||||
- Bridge multiplier: `3x`
|
||||
|
||||
| Chain | Network | 3x cUSDT | 3x cUSDC | Destination cW Addresses | CW_BRIDGE Env |
|
||||
|---|---|---:|---:|---|---|
|
||||
| `1` | Ethereum Mainnet | `0` | `0` | `cWUSDT=0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE`, `cWUSDC=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | `CW_BRIDGE_MAINNET` |
|
||||
| `10` | Optimism | `3000` | `3000` | `cWUSDT=0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`, `cWUSDC=0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `CW_BRIDGE_OPTIMISM` |
|
||||
| `25` | Cronos | `3000` | `3000` | `cWUSDT=0x72948a7a813B60b37Cd0c920C4657DbFF54312b8`, `cWUSDC=0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec` | `CW_BRIDGE_CRONOS` |
|
||||
| `56` | BSC | `3000` | `3000` | `cWUSDT=0x9a1D0dBEE997929ED02fD19E0E199704d20914dB`, `cWUSDC=0x5355148C4740fcc3D7a96F05EdD89AB14851206b` | `CW_BRIDGE_BSC` |
|
||||
| `100` | Gnosis | `3000` | `3000` | `cWUSDT=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`, `cWUSDC=0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `CW_BRIDGE_GNOSIS` |
|
||||
| `137` | Polygon | `0` | `0` | `cWUSDT=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`, `cWUSDC=0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `CW_BRIDGE_POLYGON` |
|
||||
| `8453` | Base | `3000` | `3000` | `cWUSDT=0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`, `cWUSDC=0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `CW_BRIDGE_BASE` |
|
||||
| `42161` | Arbitrum One | `3000` | `3000` | `cWUSDT=0x73ADaF7dBa95221c080db5631466d2bC54f6a76B`, `cWUSDC=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `CW_BRIDGE_ARBITRUM` |
|
||||
| `42220` | Celo | `3000` | `3000` | `cWUSDT=0x73376eB92c16977B126dB9112936A20Fa0De3442`, `cWUSDC=0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` | `CW_BRIDGE_CELO` |
|
||||
| `43114` | Avalanche | `0` | `2.4` | `cWUSDT=0x8142BA530B08f3950128601F00DaaA678213DFdf`, `cWUSDC=0x0C242b513008Cd49C89078F5aFb237A3112251EB` | `CW_BRIDGE_AVALANCHE` |
|
||||
|
||||
## Post-Funding Deploy Blocks
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `0`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_MAINNET`
|
||||
- Recommended action: `seed_now`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_1_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_1_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
|
||||
export CWUSDC="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="8888511867466"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_OPTIMISM`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export FACTORY="0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf"
|
||||
export ROUTER="0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CRONOS`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CRONOS_RPC_URL}"
|
||||
export FACTORY="0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15"
|
||||
export ROUTER="0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae"
|
||||
export CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BSC`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export FACTORY="0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_GNOSIS`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export FACTORY="0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
||||
export ROUTER="0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `0`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_POLYGON`
|
||||
- Recommended action: `seed_now`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_137_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_137_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="996297636"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BASE`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_ARBITRUM`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CELO`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export FACTORY="0x62d5b84bE28a183aBB507E125B384122D2C25fAE"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `2.4`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_AVALANCHE`
|
||||
- Recommended action: `bridge_or_mint_missing_side_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export FACTORY="0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="2400000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
@@ -0,0 +1,112 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Bridge-From-138 Matrix
|
||||
|
||||
- Generated: `2026-04-17T18:20:51Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: strict destination funding matrix from Chain 138 GRU v2 feeder inventory for the remaining phase-1 pool rollout.
|
||||
- Total cUSDT needed from Chain 138: `7000`
|
||||
- Total cUSDC needed from Chain 138: `7000.8`
|
||||
|
||||
| Chain | Network | cUSDT Needed | cUSDC Needed | Bridge Env | Bridge Present | Recommended Action |
|
||||
|---|---|---:|---:|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `0` | `0` | `CW_BRIDGE_MAINNET` | `true` | `seed_now` |
|
||||
| `10` | Optimism | `1000` | `1000` | `CW_BRIDGE_OPTIMISM` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `25` | Cronos | `1000` | `1000` | `CW_BRIDGE_CRONOS` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `56` | BSC | `1000` | `1000` | `CW_BRIDGE_BSC` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `100` | Gnosis | `1000` | `1000` | `CW_BRIDGE_GNOSIS` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `137` | Polygon | `0` | `0` | `CW_BRIDGE_POLYGON` | `true` | `seed_now` |
|
||||
| `8453` | Base | `1000` | `1000` | `CW_BRIDGE_BASE` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `42161` | Arbitrum One | `1000` | `1000` | `CW_BRIDGE_ARBITRUM` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `42220` | Celo | `1000` | `1000` | `CW_BRIDGE_CELO` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `43114` | Avalanche | `0` | `0.8` | `CW_BRIDGE_AVALANCHE` | `true` | `bridge_or_mint_missing_side_then_seed` |
|
||||
|
||||
## Notes
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Tokens missing on destination: `none`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_MAINNET`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `seed_now`
|
||||
- Bridge note: Bridge path is structurally available for chain `1` via `CW_BRIDGE_MAINNET` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `true`
|
||||
- Bridge config env: `CW_BRIDGE_OPTIMISM`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `10` via `CW_BRIDGE_OPTIMISM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_CRONOS`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `25` via `CW_BRIDGE_CRONOS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_BSC`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `56` via `CW_BRIDGE_BSC` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_GNOSIS`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `100` via `CW_BRIDGE_GNOSIS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Tokens missing on destination: `none`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_POLYGON`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `seed_now`
|
||||
- Bridge note: Bridge path is structurally available for chain `137` via `CW_BRIDGE_POLYGON` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `true`
|
||||
- Bridge config env: `CW_BRIDGE_BASE`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `8453` via `CW_BRIDGE_BASE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_ARBITRUM`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `42161` via `CW_BRIDGE_ARBITRUM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_CELO`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `42220` via `CW_BRIDGE_CELO` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Tokens missing on destination: `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_AVALANCHE`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_missing_side_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `43114` via `CW_BRIDGE_AVALANCHE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
@@ -0,0 +1,760 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Bridge-Or-Mint Execution Runbook
|
||||
|
||||
- Generated: `2026-04-17T18:42:43Z`
|
||||
- Purpose: strict bridge-or-mint runbook matched to the `3x` operator packet.
|
||||
- Source chain: `138` / Chain 138
|
||||
- Source cUSDT: `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22`
|
||||
- Source cUSDC: `0xf22258f57794CC8E06237084b353Ab30fFfa640b`
|
||||
|
||||
## Operating Rule
|
||||
|
||||
1. If the chain is already funded, seed the pool directly.
|
||||
2. If the chain has a documented selector env and `CW_BRIDGE_<CHAIN>`, prefer bridge preflight and then follow the cW bridge runbooks.
|
||||
3. If the bridge path is not fully parameterized in repo env, use the exact destination mint fallback block.
|
||||
4. After funding lands, execute the post-funding deploy block and then refresh discovery and promotion gates.
|
||||
|
||||
| Chain | Network | Preferred Path | 3x cUSDT | 3x cUSDC | CW_BRIDGE Env | Selector Env |
|
||||
|---|---|---|---:|---:|---|---|
|
||||
| `1` | Ethereum Mainnet | `seed_now` | `0` | `0` | `CW_BRIDGE_MAINNET` | `ETH_MAINNET_SELECTOR` |
|
||||
| `10` | Optimism | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_OPTIMISM` | `OPTIMISM_SELECTOR` |
|
||||
| `25` | Cronos | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_CRONOS` | `CRONOS_SELECTOR` |
|
||||
| `56` | BSC | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_BSC` | `BSC_SELECTOR` |
|
||||
| `100` | Gnosis | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_GNOSIS` | `GNOSIS_SELECTOR` |
|
||||
| `137` | Polygon | `seed_now` | `0` | `0` | `CW_BRIDGE_POLYGON` | `POLYGON_SELECTOR` |
|
||||
| `8453` | Base | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_BASE` | `BASE_SELECTOR` |
|
||||
| `42161` | Arbitrum One | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_ARBITRUM` | `ARBITRUM_SELECTOR` |
|
||||
| `42220` | Celo | `mint_then_seed` | `3000` | `3000` | `CW_BRIDGE_CELO` | `missing` |
|
||||
| `43114` | Avalanche | `bridge_then_seed` | `0` | `2.4` | `CW_BRIDGE_AVALANCHE` | `AVALANCHE_SELECTOR` |
|
||||
|
||||
## Per-Chain Runbook
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Preferred path: `seed_now`
|
||||
- Recommended action: `seed_now`
|
||||
- 3x cUSDT from 138: `0`
|
||||
- 3x cUSDC from 138: `0`
|
||||
- Destination cWUSDT: `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE`
|
||||
- Destination cWUSDC: `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_MAINNET`
|
||||
- Selector env: `ETH_MAINNET_SELECTOR`
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_1_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_1_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
|
||||
export CWUSDC="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="8888511867466"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`
|
||||
- Destination cWUSDC: `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_OPTIMISM`
|
||||
- Selector env: `OPTIMISM_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_OPTIMISM}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${OPTIMISM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export FACTORY="0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf"
|
||||
export ROUTER="0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x72948a7a813B60b37Cd0c920C4657DbFF54312b8`
|
||||
- Destination cWUSDC: `0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CRONOS`
|
||||
- Selector env: `CRONOS_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CRONOS_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CRONOS}"
|
||||
export DEST_CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export DEST_CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${CRONOS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CRONOS_RPC_URL}"
|
||||
export FACTORY="0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15"
|
||||
export ROUTER="0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae"
|
||||
export CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x9a1D0dBEE997929ED02fD19E0E199704d20914dB`
|
||||
- Destination cWUSDC: `0x5355148C4740fcc3D7a96F05EdD89AB14851206b`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BSC`
|
||||
- Selector env: `BSC_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BSC_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BSC}"
|
||||
export DEST_CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export DEST_CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BSC_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export FACTORY="0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`
|
||||
- Destination cWUSDC: `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_GNOSIS`
|
||||
- Selector env: `GNOSIS_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_GNOSIS}"
|
||||
export DEST_CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export DEST_CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${GNOSIS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export FACTORY="0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
||||
export ROUTER="0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Preferred path: `seed_now`
|
||||
- Recommended action: `seed_now`
|
||||
- 3x cUSDT from 138: `0`
|
||||
- 3x cUSDC from 138: `0`
|
||||
- Destination cWUSDT: `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`
|
||||
- Destination cWUSDC: `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_POLYGON`
|
||||
- Selector env: `POLYGON_SELECTOR`
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_137_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_137_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="996297636"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`
|
||||
- Destination cWUSDC: `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BASE`
|
||||
- Selector env: `BASE_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BASE}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BASE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x73ADaF7dBa95221c080db5631466d2bC54f6a76B`
|
||||
- Destination cWUSDC: `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_ARBITRUM`
|
||||
- Selector env: `ARBITRUM_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_ARBITRUM}"
|
||||
export DEST_CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export DEST_CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${ARBITRUM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73ADaF7dBa95221c080db5631466d2bC54f6a76B" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Preferred path: `mint_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x73376eB92c16977B126dB9112936A20Fa0De3442`
|
||||
- Destination cWUSDC: `0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CELO`
|
||||
- Selector env: `missing`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CELO}"
|
||||
export DEST_CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export DEST_CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
# DEST_SELECTOR env is not currently documented for this chain in smom-dbis-138/.env
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73376eB92c16977B126dB9112936A20Fa0De3442" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export FACTORY="0x62d5b84bE28a183aBB507E125B384122D2C25fAE"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_missing_side_then_seed`
|
||||
- 3x cUSDT from 138: `0`
|
||||
- 3x cUSDC from 138: `2.4`
|
||||
- Destination cWUSDT: `0x8142BA530B08f3950128601F00DaaA678213DFdf`
|
||||
- Destination cWUSDC: `0x0C242b513008Cd49C89078F5aFb237A3112251EB`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_AVALANCHE`
|
||||
- Selector env: `AVALANCHE_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_AVALANCHE}"
|
||||
export DEST_CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export DEST_CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="0"
|
||||
export BRIDGE_CUSDC_HUMAN="2.4"
|
||||
export BRIDGE_CUSDT_RAW="0"
|
||||
export BRIDGE_CUSDC_RAW="2400000"
|
||||
export DEST_SELECTOR="${AVALANCHE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDC` `0.8`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export FACTORY="0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="2400000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
@@ -0,0 +1,195 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Execution Checklist
|
||||
|
||||
- Generated: `2026-04-17T17:55:54Z`
|
||||
- Program: Mr. Promod Uniswap V2 cW Deep Liquidity Program
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
- Purpose: exact chain-by-chain checklist for the first full phase 1 rollout of `cWUSDT/cWUSDC`.
|
||||
|
||||
## Global Rule
|
||||
|
||||
- Do not advance to the next chain until the current chain's `cWUSDT/cWUSDC` pair is discoverable on-chain and recordable in `deployment-status.json`.
|
||||
|
||||
| Chain | Network | Phase 1 Pair | Required Env | RPC Keys | Required Token Addresses |
|
||||
|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `cWUSDT/cWUSDC` | `CHAIN_1_UNISWAP_V2_FACTORY`, `CHAIN_1_UNISWAP_V2_ROUTER`, `CHAIN_1_UNISWAP_V2_START_BLOCK` | `ETHEREUM_MAINNET_RPC` | `cWUSDT=0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE`, `cWUSDC=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| `10` | Optimism | `cWUSDT/cWUSDC` | `CHAIN_10_UNISWAP_V2_FACTORY`, `CHAIN_10_UNISWAP_V2_ROUTER`, `CHAIN_10_UNISWAP_V2_START_BLOCK` | `OPTIMISM_RPC_URL`, `OPTIMISM_MAINNET_RPC` | `cWUSDT=0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`, `cWUSDC=0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` |
|
||||
| `25` | Cronos | `cWUSDT/cWUSDC` | `CHAIN_25_UNISWAP_V2_FACTORY`, `CHAIN_25_UNISWAP_V2_ROUTER`, `CHAIN_25_UNISWAP_V2_START_BLOCK` | `CRONOS_RPC_URL`, `CRONOS_MAINNET_RPC` | `cWUSDT=0x72948a7a813B60b37Cd0c920C4657DbFF54312b8`, `cWUSDC=0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec` |
|
||||
| `56` | BSC | `cWUSDT/cWUSDC` | `CHAIN_56_UNISWAP_V2_FACTORY`, `CHAIN_56_UNISWAP_V2_ROUTER`, `CHAIN_56_UNISWAP_V2_START_BLOCK` | `BSC_RPC_URL`, `BSC_MAINNET_RPC` | `cWUSDT=0x9a1D0dBEE997929ED02fD19E0E199704d20914dB`, `cWUSDC=0x5355148C4740fcc3D7a96F05EdD89AB14851206b` |
|
||||
| `100` | Gnosis | `cWUSDT/cWUSDC` | `CHAIN_100_UNISWAP_V2_FACTORY`, `CHAIN_100_UNISWAP_V2_ROUTER`, `CHAIN_100_UNISWAP_V2_START_BLOCK` | `GNOSIS_RPC_URL`, `GNOSIS_MAINNET_RPC`, `GNOSIS_RPC` | `cWUSDT=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`, `cWUSDC=0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` |
|
||||
| `137` | Polygon | `cWUSDT/cWUSDC` | `CHAIN_137_UNISWAP_V2_FACTORY`, `CHAIN_137_UNISWAP_V2_ROUTER`, `CHAIN_137_UNISWAP_V2_START_BLOCK` | `POLYGON_MAINNET_RPC`, `POLYGON_RPC_URL` | `cWUSDT=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`, `cWUSDC=0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` |
|
||||
| `8453` | Base | `cWUSDT/cWUSDC` | `CHAIN_8453_UNISWAP_V2_FACTORY`, `CHAIN_8453_UNISWAP_V2_ROUTER`, `CHAIN_8453_UNISWAP_V2_START_BLOCK` | `BASE_RPC_URL`, `BASE_MAINNET_RPC` | `cWUSDT=0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`, `cWUSDC=0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` |
|
||||
| `42161` | Arbitrum One | `cWUSDT/cWUSDC` | `CHAIN_42161_UNISWAP_V2_FACTORY`, `CHAIN_42161_UNISWAP_V2_ROUTER`, `CHAIN_42161_UNISWAP_V2_START_BLOCK` | `ARBITRUM_RPC_URL`, `ARBITRUM_MAINNET_RPC` | `cWUSDT=0x73ADaF7dBa95221c080db5631466d2bC54f6a76B`, `cWUSDC=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` |
|
||||
| `42220` | Celo | `cWUSDT/cWUSDC` | `CHAIN_42220_UNISWAP_V2_FACTORY`, `CHAIN_42220_UNISWAP_V2_ROUTER`, `CHAIN_42220_UNISWAP_V2_START_BLOCK` | `CELO_RPC_URL`, `CELO_MAINNET_RPC`, `CELO_RPC` | `cWUSDT=0x73376eB92c16977B126dB9112936A20Fa0De3442`, `cWUSDC=0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` |
|
||||
| `43114` | Avalanche C-Chain | `cWUSDT/cWUSDC` | `CHAIN_43114_UNISWAP_V2_FACTORY`, `CHAIN_43114_UNISWAP_V2_ROUTER`, `CHAIN_43114_UNISWAP_V2_START_BLOCK` | `AVALANCHE_RPC_URL`, `AVALANCHE_MAINNET_RPC` | `cWUSDT=0x8142BA530B08f3950128601F00DaaA678213DFdf`, `cWUSDC=0x0C242b513008Cd49C89078F5aFb237A3112251EB` |
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
1. Confirm `CHAIN_1_UNISWAP_V2_FACTORY`, `CHAIN_1_UNISWAP_V2_ROUTER`, and `CHAIN_1_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `1`: `ETHEREUM_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_1_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE 0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a --rpc-url "${ETHEREUM_MAINNET_RPC}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_1_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE 0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a --rpc-url "${ETHEREUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_1_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
1. Confirm `CHAIN_10_UNISWAP_V2_FACTORY`, `CHAIN_10_UNISWAP_V2_ROUTER`, and `CHAIN_10_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `10`: `OPTIMISM_RPC_URL`, `OPTIMISM_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_10_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6 0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105 --rpc-url "${OPTIMISM_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_10_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6 0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105 --rpc-url "${OPTIMISM_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_10_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
1. Confirm `CHAIN_25_UNISWAP_V2_FACTORY`, `CHAIN_25_UNISWAP_V2_ROUTER`, and `CHAIN_25_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `25`: `CRONOS_RPC_URL`, `CRONOS_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_25_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x72948a7a813B60b37Cd0c920C4657DbFF54312b8 0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec --rpc-url "${CRONOS_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_25_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x72948a7a813B60b37Cd0c920C4657DbFF54312b8 0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec --rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_25_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
1. Confirm `CHAIN_56_UNISWAP_V2_FACTORY`, `CHAIN_56_UNISWAP_V2_ROUTER`, and `CHAIN_56_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `56`: `BSC_RPC_URL`, `BSC_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_56_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x9a1D0dBEE997929ED02fD19E0E199704d20914dB 0x5355148C4740fcc3D7a96F05EdD89AB14851206b --rpc-url "${BSC_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_56_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x9a1D0dBEE997929ED02fD19E0E199704d20914dB 0x5355148C4740fcc3D7a96F05EdD89AB14851206b --rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_56_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
1. Confirm `CHAIN_100_UNISWAP_V2_FACTORY`, `CHAIN_100_UNISWAP_V2_ROUTER`, and `CHAIN_100_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `100`: `GNOSIS_RPC_URL`, `GNOSIS_MAINNET_RPC`, `GNOSIS_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_100_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF 0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4 --rpc-url "${GNOSIS_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_100_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF 0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4 --rpc-url "${GNOSIS_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_100_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
1. Confirm `CHAIN_137_UNISWAP_V2_FACTORY`, `CHAIN_137_UNISWAP_V2_ROUTER`, and `CHAIN_137_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `137`: `POLYGON_MAINNET_RPC`, `POLYGON_RPC_URL`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_137_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF 0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4 --rpc-url "${POLYGON_MAINNET_RPC}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_137_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF 0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4 --rpc-url "${POLYGON_MAINNET_RPC}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_137_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
1. Confirm `CHAIN_8453_UNISWAP_V2_FACTORY`, `CHAIN_8453_UNISWAP_V2_ROUTER`, and `CHAIN_8453_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `8453`: `BASE_RPC_URL`, `BASE_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_8453_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6 0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105 --rpc-url "${BASE_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_8453_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6 0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105 --rpc-url "${BASE_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_8453_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
1. Confirm `CHAIN_42161_UNISWAP_V2_FACTORY`, `CHAIN_42161_UNISWAP_V2_ROUTER`, and `CHAIN_42161_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `42161`: `ARBITRUM_RPC_URL`, `ARBITRUM_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_42161_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x73ADaF7dBa95221c080db5631466d2bC54f6a76B 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF --rpc-url "${ARBITRUM_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_42161_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x73ADaF7dBa95221c080db5631466d2bC54f6a76B 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF --rpc-url "${ARBITRUM_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_42161_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
1. Confirm `CHAIN_42220_UNISWAP_V2_FACTORY`, `CHAIN_42220_UNISWAP_V2_ROUTER`, and `CHAIN_42220_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `42220`: `CELO_RPC_URL`, `CELO_MAINNET_RPC`, `CELO_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_42220_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x73376eB92c16977B126dB9112936A20Fa0De3442 0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3 --rpc-url "${CELO_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_42220_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x73376eB92c16977B126dB9112936A20Fa0De3442 0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3 --rpc-url "${CELO_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_42220_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `43114` — Avalanche C-Chain
|
||||
|
||||
1. Confirm `CHAIN_43114_UNISWAP_V2_FACTORY`, `CHAIN_43114_UNISWAP_V2_ROUTER`, and `CHAIN_43114_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `43114`: `AVALANCHE_RPC_URL`, `AVALANCHE_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_43114_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x8142BA530B08f3950128601F00DaaA678213DFdf 0x0C242b513008Cd49C89078F5aFb237A3112251EB --rpc-url "${AVALANCHE_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_43114_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x8142BA530B08f3950128601F00DaaA678213DFdf 0x0C242b513008Cd49C89078F5aFb237A3112251EB --rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_43114_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
284
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_ACTIONS.md
Normal file
284
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_ACTIONS.md
Normal file
@@ -0,0 +1,284 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Funding Actions
|
||||
|
||||
- Generated: `2026-04-17T18:13:05Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: strict per-chain action plan for phase-1 funding and deployment.
|
||||
|
||||
| Chain | Network | Action | Tokens Missing | Gas Issue | Recommended Seed |
|
||||
|---|---|---|---|---|---:|
|
||||
| `1` | Ethereum Mainnet | `seed_now` | `none` | `false` | `8888511.867466` |
|
||||
| `10` | Optimism | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `true` | `1000` |
|
||||
| `25` | Cronos | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `56` | BSC | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `100` | Gnosis | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `137` | Polygon | `seed_now` | `none` | `false` | `996.297636` |
|
||||
| `8453` | Base | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `true` | `1000` |
|
||||
| `42161` | Arbitrum One | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `42220` | Celo | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `43114` | Avalanche | `mint_missing_side_then_seed` | `cWUSDC` | `false` | `0.8` |
|
||||
|
||||
## Per-Chain Actions
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Action: `seed_now`
|
||||
- Tokens missing: `none`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `1` via `CW_BRIDGE_MAINNET` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_1_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_1_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
|
||||
export CWUSDC="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="8888511867466"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `true`
|
||||
- Gas note: Top up native gas on Optimism before minting or seeding; current balance is below the 0.001 safety threshold.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `10` via `CW_BRIDGE_OPTIMISM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `25` via `CW_BRIDGE_CRONOS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `56` via `CW_BRIDGE_BSC` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `100` via `CW_BRIDGE_GNOSIS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Action: `seed_now`
|
||||
- Tokens missing: `none`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `137` via `CW_BRIDGE_POLYGON` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_137_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_137_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="996297636"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `true`
|
||||
- Gas note: Top up native gas on Base before minting or seeding; current balance is below the 0.001 safety threshold.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `8453` via `CW_BRIDGE_BASE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `42161` via `CW_BRIDGE_ARBITRUM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73ADaF7dBa95221c080db5631466d2bC54f6a76B" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `42220` via `CW_BRIDGE_CELO` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73376eB92c16977B126dB9112936A20Fa0De3442" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Action: `mint_missing_side_then_seed`
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `43114` via `CW_BRIDGE_AVALANCHE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDC` `0.8` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
100
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_BUNDLE.md
Normal file
100
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_BUNDLE.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Funding Bundle
|
||||
|
||||
- Generated: `2026-04-17T20:05:59Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: strict per-chain funding bundle for `cWUSDT/cWUSDC` phase-1 rollout.
|
||||
|
||||
| Chain | Network | Tokens Missing | Minimum Gas Issue | Max Equal Seed | Funding Ready Now |
|
||||
|---|---|---|---|---:|---|
|
||||
| `1` | Ethereum Mainnet | `cWUSDC` | `false` | `0` | `false` |
|
||||
| `10` | Optimism | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `25` | Cronos | `none` | `false` | `1000` | `false` |
|
||||
| `56` | BSC | `none` | `false` | `1000` | `false` |
|
||||
| `100` | Gnosis | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `137` | Polygon | `cWUSDC` | `false` | `0` | `false` |
|
||||
| `8453` | Base | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `42161` | Arbitrum One | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `42220` | Celo | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `43114` | Avalanche | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
|
||||
## Exact Post-Funding Deploy Blocks
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Tokens missing: `none`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `1000`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Tokens missing: `none`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `1000`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
@@ -0,0 +1,89 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Funding Readiness
|
||||
|
||||
- Generated: `2026-04-17T20:05:54Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: live deployer-wallet funding view for seeding `cWUSDT/cWUSDC` phase-1 pools chain by chain.
|
||||
- Completed: `1`, `10`, `25`, `56`, `100`, `137`, `8453`, `42161`, `42220`, `43114`
|
||||
- Ready now: none
|
||||
- Needs funding: none
|
||||
|
||||
| Chain | Network | Status | Pair Exists | Seeded Live | Native Gas | cWUSDT | cWUSDC | Max Equal Seed |
|
||||
|---|---|---|---|---|---:|---:|---:|---:|
|
||||
| `1` | Ethereum Mainnet | `completed` | `true` | `true` | `0.028982898459925766` | `397.197013` | `0` | `0` |
|
||||
| `10` | Optimism | `completed` | `true` | `true` | `0.001980670026642148` | `0` | `0` | `0` |
|
||||
| `25` | Cronos | `completed` | `true` | `true` | `22.401143346977489259` | `1000` | `1000` | `1000` |
|
||||
| `56` | BSC | `completed` | `true` | `true` | `0.010626271367072709` | `1000` | `1000` | `1000` |
|
||||
| `100` | Gnosis | `completed` | `true` | `true` | `2.407080479781350729` | `0` | `0` | `0` |
|
||||
| `137` | Polygon | `completed` | `true` | `true` | `24.318080574425380349` | `2.686028` | `0` | `0` |
|
||||
| `8453` | Base | `completed` | `true` | `true` | `0.002877934067617928` | `0` | `0` | `0` |
|
||||
| `42161` | Arbitrum One | `completed` | `true` | `true` | `0.001055113904178255` | `0` | `0` | `0` |
|
||||
| `42220` | Celo | `completed` | `true` | `true` | `8.537307308649465530` | `0` | `0` | `0` |
|
||||
| `43114` | Avalanche | `completed` | `true` | `true` | `0.446784013286210977` | `0` | `0` | `0` |
|
||||
|
||||
## Blockers
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- no funding blockers
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- no funding blockers
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
@@ -0,0 +1,634 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Remaining 8 Operator Paste Pack
|
||||
|
||||
- Generated: `2026-04-17T18:51:53Z`
|
||||
- Purpose: one flat paste-ready pack for the remaining eight phase-1 chains after `1` and `137`.
|
||||
|
||||
| Order | Chain | Network | Preferred Path | 3x cUSDT | 3x cUSDC | CW_BRIDGE Env | Selector Env |
|
||||
|---|---|---|---|---:|---:|---|---|
|
||||
| `1` | `10` | Optimism | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_OPTIMISM` | `OPTIMISM_SELECTOR` |
|
||||
| `2` | `25` | Cronos | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_CRONOS` | `CRONOS_SELECTOR` |
|
||||
| `3` | `56` | BSC | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_BSC` | `BSC_SELECTOR` |
|
||||
| `4` | `100` | Gnosis | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_GNOSIS` | `GNOSIS_SELECTOR` |
|
||||
| `5` | `8453` | Base | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_BASE` | `BASE_SELECTOR` |
|
||||
| `6` | `42161` | Arbitrum One | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_ARBITRUM` | `ARBITRUM_SELECTOR` |
|
||||
| `7` | `42220` | Celo | `mint_then_seed` | `3000` | `3000` | `CW_BRIDGE_CELO` | `missing` |
|
||||
| `8` | `43114` | Avalanche | `bridge_then_seed` | `0` | `2.4` | `CW_BRIDGE_AVALANCHE` | `AVALANCHE_SELECTOR` |
|
||||
|
||||
## Flat Paste Pack
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_OPTIMISM`
|
||||
- Selector env: `OPTIMISM_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_OPTIMISM}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${OPTIMISM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export FACTORY="0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf"
|
||||
export ROUTER="0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CRONOS`
|
||||
- Selector env: `CRONOS_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CRONOS_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CRONOS}"
|
||||
export DEST_CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export DEST_CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${CRONOS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CRONOS_RPC_URL}"
|
||||
export FACTORY="0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15"
|
||||
export ROUTER="0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae"
|
||||
export CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BSC`
|
||||
- Selector env: `BSC_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BSC_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BSC}"
|
||||
export DEST_CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export DEST_CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BSC_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export FACTORY="0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_GNOSIS`
|
||||
- Selector env: `GNOSIS_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_GNOSIS}"
|
||||
export DEST_CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export DEST_CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${GNOSIS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export FACTORY="0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
||||
export ROUTER="0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BASE`
|
||||
- Selector env: `BASE_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BASE}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BASE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_ARBITRUM`
|
||||
- Selector env: `ARBITRUM_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_ARBITRUM}"
|
||||
export DEST_CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export DEST_CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${ARBITRUM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73ADaF7dBa95221c080db5631466d2bC54f6a76B" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Preferred path: `mint_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CELO`
|
||||
- Selector env: `missing`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CELO}"
|
||||
export DEST_CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export DEST_CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
# DEST_SELECTOR env is not currently documented for this chain in smom-dbis-138/.env
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73376eB92c16977B126dB9112936A20Fa0De3442" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export FACTORY="0x62d5b84bE28a183aBB507E125B384122D2C25fAE"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `0`
|
||||
- 3x cUSDC from 138: `2.4`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_AVALANCHE`
|
||||
- Selector env: `AVALANCHE_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_AVALANCHE}"
|
||||
export DEST_CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export DEST_CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="0"
|
||||
export BRIDGE_CUSDC_HUMAN="2.4"
|
||||
export BRIDGE_CUSDT_RAW="0"
|
||||
export BRIDGE_CUSDC_RAW="2400000"
|
||||
export DEST_SELECTOR="${AVALANCHE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDC` `0.8`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export FACTORY="0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="2400000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
@@ -0,0 +1,458 @@
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_OPTIMISM}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${OPTIMISM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export FACTORY="0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf"
|
||||
export ROUTER="0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CRONOS_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CRONOS}"
|
||||
export DEST_CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export DEST_CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${CRONOS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CRONOS_RPC_URL}"
|
||||
export FACTORY="0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15"
|
||||
export ROUTER="0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae"
|
||||
export CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BSC_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BSC}"
|
||||
export DEST_CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export DEST_CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BSC_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export FACTORY="0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_GNOSIS}"
|
||||
export DEST_CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export DEST_CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${GNOSIS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export FACTORY="0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
||||
export ROUTER="0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BASE}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BASE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_ARBITRUM}"
|
||||
export DEST_CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export DEST_CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${ARBITRUM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73ADaF7dBa95221c080db5631466d2bC54f6a76B" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CELO}"
|
||||
export DEST_CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export DEST_CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
# DEST_SELECTOR env is not currently documented for this chain in smom-dbis-138/.env
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73376eB92c16977B126dB9112936A20Fa0De3442" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export FACTORY="0x62d5b84bE28a183aBB507E125B384122D2C25fAE"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_AVALANCHE}"
|
||||
export DEST_CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export DEST_CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="0"
|
||||
export BRIDGE_CUSDC_HUMAN="2.4"
|
||||
export BRIDGE_CUSDT_RAW="0"
|
||||
export BRIDGE_CUSDC_RAW="2400000"
|
||||
export DEST_SELECTOR="${AVALANCHE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export FACTORY="0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="2400000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user