Compare commits
1 Commits
sync/curre
...
devin/phas
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
25283c3eaf |
@@ -20,8 +20,6 @@ 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=
|
||||
@@ -42,10 +40,6 @@ 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=
|
||||
@@ -100,58 +94,13 @@ 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=
|
||||
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=
|
||||
CHAIN138_CI_RPC_URL=
|
||||
ALL_MAINNET_RPC=
|
||||
CHAIN_651940_RPC_URL=
|
||||
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=
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
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\"}"
|
||||
@@ -3,36 +3,9 @@ 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
|
||||
|
||||
# The cw* mesh matrix and deployment-status validators read
|
||||
# cross-chain-pmm-lps/config/*.json. .gitmodules mixes Gitea HTTPS
|
||||
# with git@github.com: SSH URLs, so `submodules: recursive` on the
|
||||
# parent checkout isn't safe. Shallow-clone the public mirror of the
|
||||
# pmm-lps repo directly (config-only, no secrets needed).
|
||||
- name: Materialize cross-chain-pmm-lps (config only)
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [ ! -f cross-chain-pmm-lps/config/deployment-status.json ]; then
|
||||
rm -rf cross-chain-pmm-lps
|
||||
git clone --depth=1 \
|
||||
https://gitea.d-bis.org/d-bis/cross-chain-pmm-lps.git \
|
||||
cross-chain-pmm-lps
|
||||
fi
|
||||
|
||||
- name: Run repo validation gate
|
||||
run: |
|
||||
bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
|
||||
deploy:
|
||||
needs: validate
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
@@ -40,47 +13,8 @@ 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\":\"${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\"}"
|
||||
-d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${{ gitea.sha }}\",\"branch\":\"${{ gitea.ref_name }}\"}"
|
||||
continue-on-error: true
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
# 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: Materialize cross-chain-pmm-lps (config only)
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [ ! -f cross-chain-pmm-lps/config/deployment-status.json ]; then
|
||||
rm -rf cross-chain-pmm-lps
|
||||
git clone --depth=1 \
|
||||
https://gitea.d-bis.org/d-bis/cross-chain-pmm-lps.git \
|
||||
cross-chain-pmm-lps
|
||||
fi
|
||||
- name: run-all-validation (no LAN, no genesis)
|
||||
run: bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
33
.gitignore
vendored
33
.gitignore
vendored
@@ -74,36 +74,3 @@ 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/
|
||||
.venv-checkjson/
|
||||
|
||||
# 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-*/
|
||||
|
||||
# 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/
|
||||
|
||||
28
.gitmodules
vendored
28
.gitmodules
vendored
@@ -4,19 +4,25 @@
|
||||
# Primary integration remote is Gitea; use GitHub only as an optional mirror when available.
|
||||
[submodule "mcp-proxmox"]
|
||||
path = mcp-proxmox
|
||||
url = https://gitea.d-bis.org/d-bis/mcp-proxmox.git
|
||||
url = https://github.com/gilby125/mcp-proxmox.git
|
||||
[submodule "smom-dbis-138"]
|
||||
path = smom-dbis-138
|
||||
url = git@github.com:Order-of-Hospitallers/smom-dbis-138.git
|
||||
url = https://gitea.d-bis.org/d-bis/smom-dbis-138.git
|
||||
# Canonical = Gitea. Pinned commit exists on Gitea only (verified 2026-04-18).
|
||||
[submodule "ProxmoxVE"]
|
||||
path = ProxmoxVE
|
||||
url = https://gitea.d-bis.org/d-bis/ProxmoxVE.git
|
||||
[submodule "metamask-integration"]
|
||||
path = metamask-integration
|
||||
url = git@github.com:Defi-Oracle-Meta-Blockchain/metamask-integration.git
|
||||
url = https://gitea.d-bis.org/d-bis/metamask-integration.git
|
||||
# Canonical = Gitea. Pinned commit fetchable from both Gitea and
|
||||
# github.com/Defi-Oracle-Meta-Blockchain/metamask-integration (verified 2026-04-18).
|
||||
[submodule "dbis_core"]
|
||||
path = dbis_core
|
||||
url = git@github.com:Order-of-Hospitallers/dbis_core.git
|
||||
url = https://github.com/Order-of-Hospitallers/dbis_core.git
|
||||
# TODO: migrate to gitea.d-bis.org/d-bis/dbis_core once the Gitea mirror
|
||||
# catches up — pinned commit is currently reachable only via GitHub
|
||||
# (verified 2026-04-18). Switched from SSH to HTTPS to unblock HTTPS-only envs.
|
||||
[submodule "defi-arbitrage"]
|
||||
path = dbis_core/src/core/defi/arbitrage
|
||||
url = https://gitea.d-bis.org/d-bis/defi-arbitrage.git
|
||||
@@ -36,7 +42,10 @@
|
||||
path = omada-api
|
||||
url = https://github.com/ARROMIS/omada-api.git
|
||||
# Note: This is a workspace package that was tracked as a submodule.
|
||||
# If this repository doesn't exist, consider converting to a regular workspace package.
|
||||
# The GitHub repo currently returns 403 from HTTPS-only environments (verified
|
||||
# 2026-04-18). Pinned commit 18a4e508 may be unreachable. Candidate for
|
||||
# conversion to a regular workspace package or removal — tracked in
|
||||
# docs/00-meta/SUBMODULE_HYGIENE.md.
|
||||
[submodule "pr-workspace/app-ethereum"]
|
||||
path = pr-workspace/app-ethereum
|
||||
url = https://github.com/defiQUG/app-ethereum.git
|
||||
@@ -45,7 +54,10 @@
|
||||
url = https://github.com/defiQUG/chains.git
|
||||
[submodule "the-order"]
|
||||
path = the-order
|
||||
url = git@github.com:Order-of-Hospitallers/the-order-monorepo.git
|
||||
url = https://github.com/Order-of-Hospitallers/the-order-monorepo.git
|
||||
# TODO: migrate to Gitea once a mirror exists. gitea.d-bis.org/d-bis/the-order
|
||||
# is a DIFFERENT repo; the pinned commit is only reachable on GitHub
|
||||
# (verified 2026-04-18). Switched from SSH to HTTPS to unblock HTTPS-only envs.
|
||||
[submodule "arromis-monorepo"]
|
||||
path = arromis-monorepo
|
||||
url = https://github.com/ARROMIS/arromis-monorepo.git
|
||||
@@ -64,7 +76,3 @@
|
||||
[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.
|
||||
|
||||
11
AGENTS.md
11
AGENTS.md
@@ -17,11 +17,9 @@ Orchestration for Proxmox VE, Chain 138 (`smom-dbis-138/`), explorers, NPMplus,
|
||||
| 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). 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` — `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. |
|
||||
| Submodule + explorer remotes | `docs/00-meta/SUBMODULE_HYGIENE.md` |
|
||||
| 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` |
|
||||
@@ -29,12 +27,7 @@ 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` |
|
||||
| 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`) |
|
||||
| Operator (LAN + secrets) | `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` unset) |
|
||||
| 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: f126ae50b4...682bd76349
Submodule ProxmoxVE updated: 35b5957ad1...53d837b48f
Submodule ai-mcp-pmm-controller updated: cb92278aff...3e3f55fe79
Submodule alltra-lifi-settlement updated: 5e3b9db91a...1dabf29f6d
Submodule atomic-swap-dapp deleted from cf1da27545
@@ -20,5 +20,7 @@ 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,138-weth-1111-ccip,planned,bridge,138,1111,,,,,,,,,,,,"Wemix bridge contracts are deployed and destinations are wired, but the 1111 bridge contracts still hold zero LINK and the lane has not been proven by a successful test transfer."
|
||||
blockedOrPlannedRoute,cw-edge-pools-public-chains,planned,swap,1,43114,,,,,,,,,,,,"cW* token addresses exist on several public chains, but deployment-status.json contains no PMM pools."
|
||||
blockedOrPlannedRoute,138-weth-1111-ccip,planned,bridge,138,1111,,,,,,,,,,,,Wemix bridge is pending funding and deployment.
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,161 +0,0 @@
|
||||
{
|
||||
"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,21 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
{
|
||||
"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."
|
||||
]
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
# 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
|
||||
@@ -1,8 +0,0 @@
|
||||
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"
|
||||
@@ -1,446 +0,0 @@
|
||||
# Contracts which are
|
||||
# * unproxied singletons: specify a standard "address"
|
||||
# * proxied : specify a standard "implementation_address"
|
||||
# * neither : specify neither a standard "address" nor "implementation_address"
|
||||
|
||||
["op-contracts/v6.0.0"]
|
||||
system_config = { version = "3.13.1", implementation_address = "0xd392c27b84b1ca776528f2704bc67b82a62132d2" }
|
||||
fault_dispute_game = { version = "2.2.0" }
|
||||
permissioned_dispute_game = { version = "2.2.0" }
|
||||
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
|
||||
optimism_portal = { version = "5.2.0", implementation_address = "0x97cebbf8959e2a5476fbe9b98a21806ec234609b" }
|
||||
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
|
||||
anchor_state_registry = { version = "3.7.0", implementation_address = "0x36398155cd17cfe804f69b233edda800dd4d5aa5" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.4.0", implementation_address = "0xc040f392e52cb6970ca8e110c280fe24e07c5e2c" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
|
||||
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
|
||||
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
|
||||
op_contracts_manager = { version = "6.0.0", address = "0x50f47b43c24f40b92c873fa0704d4207586d0c9f" }
|
||||
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
|
||||
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
|
||||
|
||||
# The L1 contracts are unchanged from Upgrade 18 / v6.0.0-rc.1, this entry is required for a release of op-deployer
|
||||
# with updates to L2 contracts only.
|
||||
["op-contracts/v6.0.0-rc.2"]
|
||||
system_config = { version = "3.13.1", implementation_address = "0xd392c27b84b1ca776528f2704bc67b82a62132d2" }
|
||||
fault_dispute_game = { version = "2.2.0" }
|
||||
permissioned_dispute_game = { version = "2.2.0" }
|
||||
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
|
||||
optimism_portal = { version = "5.2.0", implementation_address = "0x97cebbf8959e2a5476fbe9b98a21806ec234609b" }
|
||||
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
|
||||
anchor_state_registry = { version = "3.7.0", implementation_address = "0x36398155cd17cfe804f69b233edda800dd4d5aa5" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.4.0", implementation_address = "0xc040f392e52cb6970ca8e110c280fe24e07c5e2c" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
|
||||
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
|
||||
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
|
||||
op_contracts_manager = { version = "6.0.0", address = "0x50f47b43c24f40b92c873fa0704d4207586d0c9f" }
|
||||
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
|
||||
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
|
||||
|
||||
# Upgrade 18 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv6.0.0-rc.1
|
||||
["op-contracts/v6.0.0-rc.1"]
|
||||
system_config = { version = "3.13.1", implementation_address = "0xd392c27b84b1ca776528f2704bc67b82a62132d2" }
|
||||
fault_dispute_game = { version = "2.2.0" }
|
||||
permissioned_dispute_game = { version = "2.2.0" }
|
||||
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
|
||||
optimism_portal = { version = "5.2.0", implementation_address = "0x97cebbf8959e2a5476fbe9b98a21806ec234609b" }
|
||||
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
|
||||
anchor_state_registry = { version = "3.7.0", implementation_address = "0x36398155cd17cfe804f69b233edda800dd4d5aa5" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.4.0", implementation_address = "0xc040f392e52cb6970ca8e110c280fe24e07c5e2c" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
|
||||
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
|
||||
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
|
||||
op_contracts_manager = { version = "6.0.0", address = "0x50f47b43c24f40b92c873fa0704d4207586d0c9f" }
|
||||
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
|
||||
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
|
||||
|
||||
# Upgrade 17 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv5.0.0
|
||||
["op-contracts/v5.0.0"]
|
||||
system_config = { version = "3.11.0", implementation_address = "0x2fa28989fc559836e9d66dff3010c7f7f41c65ed" }
|
||||
fault_dispute_game = { version = "1.8.0" }
|
||||
permissioned_dispute_game = { version = "1.8.0" }
|
||||
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
|
||||
optimism_portal = { version = "5.1.1", implementation_address = "0x7cf803296662e8c72a6c1d6450572209acf7f202" }
|
||||
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
|
||||
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.3.0", implementation_address = "0x74fac1d45b98bae058f8f566201c9a81b85c7d50" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
|
||||
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
|
||||
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
|
||||
op_contracts_manager = { version = "4.2.0", address = "0xfa1ef97fb02b0da2ee2346b8e310907ab5519449" }
|
||||
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
|
||||
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
|
||||
|
||||
# Upgrade 17 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv5.0.0-rc.2
|
||||
["op-contracts/v5.0.0-rc.2"]
|
||||
system_config = { version = "3.11.0", implementation_address = "0x2fa28989fc559836e9d66dff3010c7f7f41c65ed" }
|
||||
fault_dispute_game = { version = "1.8.0" }
|
||||
permissioned_dispute_game = { version = "1.8.0" }
|
||||
mips = { version = "1.9.0", address = "0x6463dEE3828677F6270d83d45408044fc5eDB908" }
|
||||
optimism_portal = { version = "5.1.1", implementation_address = "0x7cf803296662e8c72a6c1d6450572209acf7f202" }
|
||||
optimism_portal_interop = { version = "5.1.0+interop", implementation_address = "0x5cb365a10e99335d8fedfa225aac5e21287302dd" }
|
||||
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.3.0", implementation_address = "0x74fac1d45b98bae058f8f566201c9a81b85c7d50" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.11.0", implementation_address = "0xb686f13aff1e427a1f993f29ab0f2e7383729fe0" }
|
||||
l1_erc721_bridge = { version = "2.9.0", implementation_address = "0x74f1ac50eb0be98853805d381c884f5f9abdecf9" }
|
||||
l1_standard_bridge = { version = "2.8.0", implementation_address = "0x61525eaacddb97d9184afc205827e6a4fd0bf62a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.2", implementation_address = "0x8ee6fb13c6c9a7e401531168e196fbf8b05ceabb" }
|
||||
op_contracts_manager = { version = "4.2.0", address = "0xfa1ef97fb02b0da2ee2346b8e310907ab5519449" }
|
||||
superchain_config = { version = "2.4.0", implementation_address = "0xb08cc720f511062537ca78bdb0ae691f04f5a957" }
|
||||
protocol_versions = { version = "1.1.1", implementation_address = "0x1f734b89bb1b422b9910118fb8d44c06e33d4dda" }
|
||||
|
||||
# Upgrade 16a https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.1.0
|
||||
["op-contracts/v4.1.0"]
|
||||
system_config = { version = "3.7.0", implementation_address = "0x2bfe4a5bd5a41e9d848d843ebcdfa15954e9a557" }
|
||||
fault_dispute_game = { version = "1.7.0" }
|
||||
permissioned_dispute_game = { version = "1.7.0" }
|
||||
mips = { version = "1.8.0", address = "0x07babe08ee4d07dba236530183b24055535a7011" }
|
||||
optimism_portal = { version = "5.0.0", implementation_address = "0x381e729ff983fa4bced820e7b922d79bf653b999" }
|
||||
optimism_portal_interop = { version = "5.0.0+interop", implementation_address = "0xb0eb854fd842e0e564d49d2fe6b2ac25d035523c" }
|
||||
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.10.0", implementation_address = "0x22d12e0faebd62d429514a65ebae32dd316c12d6" }
|
||||
l1_erc721_bridge = { version = "2.8.0", implementation_address = "0x7f1d12fb2911eb095278085f721e644c1f675696" }
|
||||
l1_standard_bridge = { version = "2.7.0", implementation_address = "0xe32b192fb1dca88fcb1c56b3acb429e32238adcb" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
|
||||
op_contracts_manager = { version = "3.2.0", address = "0x8123739c1368c2dedc8c564255bc417feeebff9d" }
|
||||
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
|
||||
|
||||
# Upgrade 16a https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.1.0-rc.3
|
||||
["op-contracts/v4.1.0-rc.3"]
|
||||
system_config = { version = "3.7.0", implementation_address = "0x2bfe4a5bd5a41e9d848d843ebcdfa15954e9a557" }
|
||||
fault_dispute_game = { version = "1.7.0" }
|
||||
permissioned_dispute_game = { version = "1.7.0" }
|
||||
mips = { version = "1.8.0", address = "0x07babe08ee4d07dba236530183b24055535a7011" }
|
||||
optimism_portal = { version = "5.0.0", implementation_address = "0x381e729ff983fa4bced820e7b922d79bf653b999" }
|
||||
optimism_portal_interop = { version = "5.0.0+interop", implementation_address = "0xb0eb854fd842e0e564d49d2fe6b2ac25d035523c" }
|
||||
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.10.0", implementation_address = "0x22d12e0faebd62d429514a65ebae32dd316c12d6" }
|
||||
l1_erc721_bridge = { version = "2.8.0", implementation_address = "0x7f1d12fb2911eb095278085f721e644c1f675696" }
|
||||
l1_standard_bridge = { version = "2.7.0", implementation_address = "0xe32b192fb1dca88fcb1c56b3acb429e32238adcb" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
|
||||
op_contracts_manager = { version = "3.2.0", address = "0x8123739c1368c2dedc8c564255bc417feeebff9d" }
|
||||
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
|
||||
|
||||
# Upgrade 16 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.0.0
|
||||
["op-contracts/v4.0.0"]
|
||||
system_config = { version = "3.4.0", implementation_address = "0xfaa660bf783cbaa55e1b7f3475c20db74a53b9fa" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.7.0" }
|
||||
mips = { version = "1.4.0-patch.2", address = "0xa1b54d89e305bcd322ba0c9c094093173c0d6b3a" }
|
||||
optimism_portal = { version = "4.6.0", implementation_address = "0xefed7f38bb9be74bba583a1a5b7d0fe7c9d5787a" }
|
||||
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.9.0", implementation_address = "0xd26bb3aaaa4cb5638a8581a4c4b1d937d8e05c54" }
|
||||
l1_erc721_bridge = { version = "2.7.0", implementation_address = "0x25d6cedeb277ad7ebee71226ed7877768e0b7a2f" }
|
||||
l1_standard_bridge = { version = "2.6.0", implementation_address = "0x44afb7722af276a601d524f429016a18b6923df0" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
|
||||
op_contracts_manager = { version = "2.4.0", address = "0x56ebc5c4870f5367b836081610592241ad3e0734" }
|
||||
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
|
||||
|
||||
# Upgrade 16 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.0.0-rc.8
|
||||
["op-contracts/v4.0.0-rc.8"]
|
||||
system_config = { version = "3.4.0", implementation_address = "0xfaa660bf783cbaa55e1b7f3475c20db74a53b9fa" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.7.0" }
|
||||
mips = { version = "1.4.0-patch.2", address = "0xa1b54d89e305bcd322ba0c9c094093173c0d6b3a" }
|
||||
optimism_portal = { version = "4.6.0", implementation_address = "0xefed7f38bb9be74bba583a1a5b7d0fe7c9d5787a" }
|
||||
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.9.0", implementation_address = "0xd26bb3aaaa4cb5638a8581a4c4b1d937d8e05c54" }
|
||||
l1_erc721_bridge = { version = "2.7.0", implementation_address = "0x25d6cedeb277ad7ebee71226ed7877768e0b7a2f" }
|
||||
l1_standard_bridge = { version = "2.6.0", implementation_address = "0x44afb7722af276a601d524f429016a18b6923df0" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
|
||||
op_contracts_manager = { version = "2.4.0", address = "0x56ebc5c4870f5367b836081610592241ad3e0734" }
|
||||
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
|
||||
|
||||
# Upgrade 16 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.0.0-rc.7
|
||||
["op-contracts/v4.0.0-rc.7"]
|
||||
system_config = { version = "3.4.0", implementation_address = "0xfaa660bf783cbaa55e1b7f3475c20db74a53b9fa" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.7.0" }
|
||||
mips = { version = "1.4.0", address = "0x8a4e5594662775f71b05977a6c90590dd14e3c8f" }
|
||||
optimism_portal = { version = "4.6.0", implementation_address = "0xefed7f38bb9be74bba583a1a5b7d0fe7c9d5787a" }
|
||||
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.9.0", implementation_address = "0xd26bb3aaaa4cb5638a8581a4c4b1d937d8e05c54" }
|
||||
l1_erc721_bridge = { version = "2.7.0", implementation_address = "0x25d6cedeb277ad7ebee71226ed7877768e0b7a2f" }
|
||||
l1_standard_bridge = { version = "2.6.0", implementation_address = "0x44afb7722af276a601d524f429016a18b6923df0" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
|
||||
op_contracts_manager = { version = "2.4.0", address = "0x4fefd0c327d08143be8037c45f8a29fa0d711e50" }
|
||||
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
|
||||
|
||||
# Upgrade 16 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv4.0.0-rc.6
|
||||
["op-contracts/v4.0.0-rc.6"]
|
||||
system_config = { version = "3.4.0", implementation_address = "0xfaa660bf783cbaa55e1b7f3475c20db74a53b9fa" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.7.0" }
|
||||
mips = { version = "1.4.0", address = "0x8a4e5594662775f71b05977a6c90590dd14e3c8f" }
|
||||
optimism_portal = { version = "4.6.0", implementation_address = "0xefed7f38bb9be74bba583a1a5b7d0fe7c9d5787a" }
|
||||
anchor_state_registry = { version = "3.5.0", implementation_address = "0xeb69cc681e8d4a557b30dffbad85affd47a2cf2e" }
|
||||
delayed_weth = { version = "1.5.0", implementation_address = "0x33dadc2d1aa9bb613a7ae6b28425ea00d44c6998" }
|
||||
eth_lockbox = { version = "1.2.0", implementation_address = "0x784d2f03593a42a6e4676a012762f18775ecbbe6" }
|
||||
dispute_game_factory = { version = "1.2.0", implementation_address = "0x33d1e8571a85a538ed3d5a4d88f46c112383439d" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.9.0", implementation_address = "0xd26bb3aaaa4cb5638a8581a4c4b1d937d8e05c54" }
|
||||
l1_erc721_bridge = { version = "2.7.0", implementation_address = "0x25d6cedeb277ad7ebee71226ed7877768e0b7a2f" }
|
||||
l1_standard_bridge = { version = "2.6.0", implementation_address = "0x44afb7722af276a601d524f429016a18b6923df0" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677a186f64805fe7317d6993ba4863988f" }
|
||||
op_contracts_manager = { version = "2.4.0", address = "0x4fefd0c327d08143be8037c45f8a29fa0d711e50" }
|
||||
superchain_config = { version = "2.3.0", implementation_address = "0xce28685eb204186b557133766eca00334eb441e4" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37e15e4d6dffa9e5e320ee1ec036922e563cb76c" }
|
||||
|
||||
# Only the DeployOPChain.s.sol script changed between v3.0.0 and v3.0.1
|
||||
["op-contracts/v3.0.1"]
|
||||
system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.4.1" }
|
||||
mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0
|
||||
optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" }
|
||||
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
|
||||
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
|
||||
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" }
|
||||
l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" }
|
||||
l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
|
||||
op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" }
|
||||
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
|
||||
|
||||
# Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0
|
||||
# Only the L2 predeploys changed between rc.1 and rc.2. See https://github.com/ethereum-optimism/optimism/pull/14848.
|
||||
["op-contracts/v3.0.0"]
|
||||
system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.4.1" }
|
||||
mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0
|
||||
optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" }
|
||||
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
|
||||
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
|
||||
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" }
|
||||
l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" }
|
||||
l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
|
||||
op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" }
|
||||
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
|
||||
|
||||
# Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0-rc.2
|
||||
# Only the L2 predeploys changed between rc.1 and rc.2. See https://github.com/ethereum-optimism/optimism/pull/14848.
|
||||
["op-contracts/v3.0.0-rc.2"]
|
||||
system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.4.1" }
|
||||
mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0
|
||||
optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" }
|
||||
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
|
||||
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
|
||||
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" }
|
||||
l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" }
|
||||
l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
|
||||
op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" }
|
||||
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
|
||||
|
||||
# Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0-rc.1
|
||||
["op-contracts/v3.0.0-rc.1"]
|
||||
system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.4.1" }
|
||||
mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0
|
||||
optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" }
|
||||
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
|
||||
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
|
||||
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" }
|
||||
l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" }
|
||||
l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
|
||||
op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" }
|
||||
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
|
||||
|
||||
# OPCM https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv2.2.0
|
||||
["op-contracts/v2.2.0"]
|
||||
system_config = { version = "2.4.0", implementation_address = "0x760c48c62a85045a6b69f07f4a9f22868659cbcc" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.4.1" }
|
||||
mips = { version = "1.3.0", address = "0xaa59a0777648bc75cd10364083e878c1ccd6112a" }
|
||||
optimism_portal = { version = "3.13.0", implementation_address = "0x2d7e764a0d9919e16983a46595cfa81fc34fa7cd" }
|
||||
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
|
||||
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
|
||||
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.5.0", implementation_address = "0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231" }
|
||||
l1_erc721_bridge = { version = "2.3.1", implementation_address = "0x276d3730f219f7ec22274f7263180b8452b46d47" }
|
||||
l1_standard_bridge = { version = "2.2.2", implementation_address = "0x78972E88Ab8BBB517a36cAea23b931BAB58AD3c6" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
|
||||
op_contracts_manager = { version = "1.7.0", address = "0x1c7bfa38a25ad22cafc556a9bd827e1da7ec1791" }
|
||||
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
|
||||
|
||||
# OPCM https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv2.0.0
|
||||
["op-contracts/v2.0.0"]
|
||||
system_config = { version = "2.4.0", implementation_address = "0x760c48c62a85045a6b69f07f4a9f22868659cbcc" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.4.1" }
|
||||
mips = { version = "1.3.0", address = "0xaa59a0777648bc75cd10364083e878c1ccd6112a" }
|
||||
optimism_portal = { version = "3.13.0", implementation_address = "0x2d7e764a0d9919e16983a46595cfa81fc34fa7cd" }
|
||||
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
|
||||
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
|
||||
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.5.0", implementation_address = "0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231" }
|
||||
l1_erc721_bridge = { version = "2.3.1", implementation_address = "0x276d3730f219f7ec22274f7263180b8452b46d47" }
|
||||
l1_standard_bridge = { version = "2.2.2", implementation_address = "0x78972E88Ab8BBB517a36cAea23b931BAB58AD3c6" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
|
||||
op_contracts_manager = { version = "1.6.0", address = "0x026b2f158255beac46c1e7c6b8bbf29a4b6a7b76" }
|
||||
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
|
||||
|
||||
# OPCM https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv2.0.0-rc.1
|
||||
["op-contracts/v2.0.0-rc.1"]
|
||||
system_config = { version = "2.4.0", implementation_address = "0x760c48c62a85045a6b69f07f4a9f22868659cbcc" }
|
||||
fault_dispute_game = { version = "1.4.1" }
|
||||
permissioned_dispute_game = { version = "1.4.1" }
|
||||
mips = { version = "1.3.0", address = "0xaa59a0777648bc75cd10364083e878c1ccd6112a" }
|
||||
optimism_portal = { version = "3.13.0", implementation_address = "0x2d7e764a0d9919e16983a46595cfa81fc34fa7cd" }
|
||||
anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" }
|
||||
delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" }
|
||||
dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" }
|
||||
preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" }
|
||||
l1_cross_domain_messenger = { version = "2.5.0", implementation_address = "0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231" }
|
||||
l1_erc721_bridge = { version = "2.3.1", implementation_address = "0x276d3730f219f7ec22274f7263180b8452b46d47" }
|
||||
l1_standard_bridge = { version = "2.2.2", implementation_address = "0x78972E88Ab8BBB517a36cAea23b931BAB58AD3c6" }
|
||||
optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" }
|
||||
op_contracts_manager = { version = "1.6.0", address = "0x026b2f158255beac46c1e7c6b8bbf29a4b6a7b76" }
|
||||
superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" }
|
||||
protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }
|
||||
|
||||
# Holocene https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.8.0
|
||||
["op-contracts/v1.8.0"]
|
||||
# Updated in this release
|
||||
system_config = { version = "2.3.0", implementation_address = "0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375" } # UPDATED IN THIS RELEASE
|
||||
fault_dispute_game = { version = "1.3.1" } # UPDATED IN THIS RELEASE
|
||||
permissioned_dispute_game = { version = "1.3.1" } # UPDATED IN THIS RELEASE
|
||||
mips = { version = "1.2.1", address = "0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C" } # UPDATED IN THIS RELEASE
|
||||
# Unchanged in this release
|
||||
optimism_portal = { version = "3.10.0", implementation_address = "0xe2F826324b2faf99E513D16D266c3F80aE87832B" }
|
||||
anchor_state_registry = { version = "2.0.0" }
|
||||
delayed_weth = { version = "1.1.0", implementation_address = "0x71e966Ae981d1ce531a7b6d23DC0f27B38409087" }
|
||||
dispute_game_factory = { version = "1.0.0", implementation_address = "0xc641A33cab81C559F2bd4b21EA34C290E2440C2B" }
|
||||
preimage_oracle = { version = "1.1.2", address = "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277" }
|
||||
l1_cross_domain_messenger = { version = "2.3.0", implementation_address = "0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65" }
|
||||
l1_erc721_bridge = { version = "2.1.0", implementation_address = "0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d" }
|
||||
l1_standard_bridge = { version = "2.1.0", implementation_address = "0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF" }
|
||||
# l2_output_oracle -- This contract not used in fault proofs
|
||||
optimism_mintable_erc20_factory = { version = "1.9.0", implementation_address = "0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846" }
|
||||
op_contracts_manager = { version = "1.0.0-beta.21", implementation_address = "0x5269eed89b0d04d909a0973439e2587e815ba932" }
|
||||
|
||||
# Holocene https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.8.0-rc.4
|
||||
["op-contracts/v1.8.0-rc.4"]
|
||||
# Updated in this release
|
||||
system_config = { version = "2.3.0", implementation_address = "0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375" } # UPDATED IN THIS RELEASE
|
||||
fault_dispute_game = { version = "1.3.1" } # UPDATED IN THIS RELEASE
|
||||
permissioned_dispute_game = { version = "1.3.1" } # UPDATED IN THIS RELEASE
|
||||
mips = { version = "1.2.1", address = "0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C" } # UPDATED IN THIS RELEASE
|
||||
# Unchanged in this release
|
||||
optimism_portal = { version = "3.10.0", implementation_address = "0xe2F826324b2faf99E513D16D266c3F80aE87832B" }
|
||||
anchor_state_registry = { version = "2.0.0" }
|
||||
delayed_weth = { version = "1.1.0", implementation_address = "0x71e966Ae981d1ce531a7b6d23DC0f27B38409087" }
|
||||
dispute_game_factory = { version = "1.0.0", implementation_address = "0xc641A33cab81C559F2bd4b21EA34C290E2440C2B" }
|
||||
preimage_oracle = { version = "1.1.2", address = "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277" }
|
||||
l1_cross_domain_messenger = { version = "2.3.0", implementation_address = "0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65" }
|
||||
l1_erc721_bridge = { version = "2.1.0", implementation_address = "0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d" }
|
||||
l1_standard_bridge = { version = "2.1.0", implementation_address = "0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF" }
|
||||
# l2_output_oracle -- This contract not used in fault proofs
|
||||
optimism_mintable_erc20_factory = { version = "1.9.0", implementation_address = "0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846" }
|
||||
op_contracts_manager = { version = "1.0.0-beta.21", implementation_address = "0x5269eed89b0d04d909a0973439e2587e815ba932" }
|
||||
|
||||
# Fault Proofs https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.6.0
|
||||
["op-contracts/v1.6.0"]
|
||||
optimism_portal = { version = "3.10.0", implementation_address = "0xe2F826324b2faf99E513D16D266c3F80aE87832B" }
|
||||
system_config = { version = "2.2.0", implementation_address = "0xF56D96B2535B932656d3c04Ebf51baBff241D886" }
|
||||
anchor_state_registry = { version = "2.0.0" }
|
||||
delayed_weth = { version = "1.1.0", implementation_address = "0x71e966Ae981d1ce531a7b6d23DC0f27B38409087" }
|
||||
dispute_game_factory = { version = "1.0.0", implementation_address = "0xc641A33cab81C559F2bd4b21EA34C290E2440C2B" }
|
||||
fault_dispute_game = { version = "1.3.0" }
|
||||
permissioned_dispute_game = { version = "1.3.0" }
|
||||
mips = { version = "1.1.0", address = "0x16e83cE5Ce29BF90AD9Da06D2fE6a15d5f344ce4" }
|
||||
preimage_oracle = { version = "1.1.2", address = "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277" }
|
||||
l1_cross_domain_messenger = { version = "2.3.0", implementation_address = "0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65" }
|
||||
l1_erc721_bridge = { version = "2.1.0", implementation_address = "0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d" }
|
||||
l1_standard_bridge = { version = "2.1.0", implementation_address = "0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF" }
|
||||
# l2_output_oracle -- This contract not used in fault proofs
|
||||
optimism_mintable_erc20_factory = { version = "1.9.0", implementation_address = "0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846" }
|
||||
op_contracts_manager = { version = "1.0.0-beta.21", implementation_address = "0x9BC0A1eD534BFb31a6Be69e5b767Cba332f14347" }
|
||||
|
||||
# Fault Proofs https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.4.0
|
||||
["op-contracts/v1.4.0"]
|
||||
optimism_portal = { version = "3.10.0", implementation_address = "0xe2F826324b2faf99E513D16D266c3F80aE87832B" }
|
||||
system_config = { version = "2.2.0", implementation_address = "0xF56D96B2535B932656d3c04Ebf51baBff241D886" }
|
||||
anchor_state_registry = { version = "1.0.0" }
|
||||
delayed_weth = { version = "1.0.0", implementation_address = "0x97988d5624F1ba266E1da305117BCf20713bee08" }
|
||||
dispute_game_factory = { version = "1.0.0", implementation_address = "0xc641A33cab81C559F2bd4b21EA34C290E2440C2B" }
|
||||
fault_dispute_game = { version = "1.2.0" }
|
||||
permissioned_dispute_game = { version = "1.2.0" }
|
||||
mips = { version = "1.0.1", address = "0x0f8EdFbDdD3c0256A80AD8C0F2560B1807873C9c" }
|
||||
preimage_oracle = { version = "1.0.0", address = "0xD326E10B8186e90F4E2adc5c13a2d0C137ee8b34" }
|
||||
|
||||
# MCP https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.3.0
|
||||
["op-contracts/v1.3.0"]
|
||||
l1_cross_domain_messenger = { version = "2.3.0", implementation_address = "0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65" }
|
||||
l1_erc721_bridge = { version = "2.1.0", implementation_address = "0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d" }
|
||||
l1_standard_bridge = { version = "2.1.0", implementation_address = "0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF" }
|
||||
l2_output_oracle = { version = "1.8.0", implementation_address = "0xF243BEd163251380e78068d317ae10f26042B292" }
|
||||
optimism_mintable_erc20_factory = { version = "1.9.0", implementation_address = "0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846" }
|
||||
optimism_portal = { version = "2.5.0", implementation_address = "0x2D778797049FE9259d947D1ED8e5442226dFB589" }
|
||||
system_config = { version = "1.12.0", implementation_address = "0xba2492e52F45651B60B8B38d4Ea5E2390C64Ffb1" }
|
||||
File diff suppressed because it is too large
Load Diff
@@ -35,9 +35,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0xc9901ce2Ddb6490FAA183645147a87496d8b20B6",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 1,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to MAINNET_CCIP_WETH9_BRIDGE from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -53,9 +54,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 56,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_BSC from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -71,9 +73,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0xF7736443f02913e7e0773052103296CfE1637448",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 137,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_POLYGON from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -89,9 +92,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0x6e94e53F73893b2a6784Df663920D31043A6dE07",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 10,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_OPTIMISM from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -107,9 +111,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0x937824f2516fa58f25aeAb92E7BFf7D74F463B4c",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 42161,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_ARBITRUM from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -125,9 +130,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 43114,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_AVALANCHE from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -143,9 +149,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 8453,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_BASE from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -161,9 +168,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0xc8656F24488cb90c452058da92d1a25BA464eaAE",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 100,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_GNOSIS from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -179,9 +187,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 25,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_CRONOS from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -197,9 +206,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0xAb57BF30F1354CA0590af22D8974c7f24DB2DbD7",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 42220,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_CELO from .env"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
@@ -215,9 +225,10 @@
|
||||
"toChain": 138,
|
||||
"asset": "WETH",
|
||||
"pathType": "CCIP",
|
||||
"bridgeAddress": "0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04",
|
||||
"bridgeAddress": "0x0000000000000000000000000000000000000000",
|
||||
"bridgeChainId": 1111,
|
||||
"label": "CCIPWETH9Bridge"
|
||||
"label": "CCIPWETH9Bridge",
|
||||
"note": "Set to CCIPWETH9_BRIDGE_WEMIX from .env when deployed"
|
||||
},
|
||||
{
|
||||
"fromChain": 138,
|
||||
|
||||
@@ -1,160 +0,0 @@
|
||||
{
|
||||
"$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.2.0",
|
||||
"updated": "2026-04-19",
|
||||
"version": "1.1.0",
|
||||
"updated": "2026-02-27",
|
||||
"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)"
|
||||
},
|
||||
@@ -442,70 +442,70 @@
|
||||
"key": "Compliant_EURC_cW",
|
||||
"name": "cEURC→cWEURC",
|
||||
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
|
||||
"addressTo": "0x25603ae4bff0b71d637b3573d1b6657f5f6d17ef",
|
||||
"addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66",
|
||||
"notes": "138 cEURC → Gnosis cWEURC; set when deployed"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_EURT_cW",
|
||||
"name": "cEURT→cWEURT",
|
||||
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
|
||||
"addressTo": "0x8e54c52d34a684e22865ac9f2d7c27c30561a7b9",
|
||||
"addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427",
|
||||
"notes": "138 cEURT → cWEURT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPC_cW",
|
||||
"name": "cGBPC→cWGBPC",
|
||||
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
|
||||
"addressTo": "0x4d9bc6c74ba65e37c4139f0aec9fc5ddff28dcc4",
|
||||
"addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036",
|
||||
"notes": "138 cGBPC → cWGBPC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPT_cW",
|
||||
"name": "cGBPT→cWGBPT",
|
||||
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
|
||||
"addressTo": "0x9f6d2578003fe04e58a9819a4943732f2a203a61",
|
||||
"addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd",
|
||||
"notes": "138 cGBPT → cWGBPT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_AUDC_cW",
|
||||
"name": "cAUDC→cWAUDC",
|
||||
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
|
||||
"addressTo": "0xddc4063f770f7c49d00b5a10fb552e922aa39b2c",
|
||||
"addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29",
|
||||
"notes": "138 cAUDC → cWAUDC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_JPYC_cW",
|
||||
"name": "cJPYC→cWJPYC",
|
||||
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
|
||||
"addressTo": "0x145e8e8c49b6a021969dd9d2c01c8fea44374f61",
|
||||
"addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68",
|
||||
"notes": "138 cJPYC → cWJPYC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CHFC_cW",
|
||||
"name": "cCHFC→cWCHFC",
|
||||
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
|
||||
"addressTo": "0x46d90d7947f1139477c206c39268923b99cf09e4",
|
||||
"addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B",
|
||||
"notes": "138 cCHFC → cWCHFC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CADC_cW",
|
||||
"name": "cCADC→cWCADC",
|
||||
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
|
||||
"addressTo": "0xa7133c78e0ec74503a5941bcbd44257615b6b4f6",
|
||||
"addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB",
|
||||
"notes": "138 cCADC → cWCADC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUC_cW",
|
||||
"name": "cXAUC→cWXAUC",
|
||||
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
|
||||
"addressTo": "0x23873b85cfeb343eb952618e8c9e9bfb7f6a0d45",
|
||||
"addressTo": "0x328Cd365Bb35524297E68ED28c6fF2C9557d1363",
|
||||
"notes": "138 cXAUC → cWXAUC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUT_cW",
|
||||
"name": "cXAUT→cWXAUT",
|
||||
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
|
||||
"addressTo": "0xc6189d404dc60cae7b48e2190e44770a03193e5f",
|
||||
"addressTo": "0x9e6044d730d4183bF7a666293d257d035Fba6d44",
|
||||
"notes": "138 cXAUT → cWXAUT"
|
||||
}
|
||||
]
|
||||
@@ -554,70 +554,70 @@
|
||||
"key": "Compliant_EURC_cW",
|
||||
"name": "cEURC→cWEURC",
|
||||
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
|
||||
"addressTo": "0x84353ed1f0c7a703a17abad19b0db15bc9a5e3e5",
|
||||
"addressTo": "0x61D642979eD75c1325f35b9275C5A7FE97F22451",
|
||||
"notes": "138 cEURC → Avalanche cWEURC; set when deployed"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_EURT_cW",
|
||||
"name": "cEURT→cWEURT",
|
||||
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
|
||||
"addressTo": "0xfc7d256e48253f7a7e08f0e55b9ff7039eb2524c",
|
||||
"addressTo": "0x30751782486eed825187C1EAe5DE4b4baD428AaE",
|
||||
"notes": "138 cEURT → cWEURT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPC_cW",
|
||||
"name": "cGBPC→cWGBPC",
|
||||
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
|
||||
"addressTo": "0xbdf0c4ea1d81e8e769b0f41389a2c733e3ff723e",
|
||||
"addressTo": "0xb0FA7ec4123C7c275B3a89d9239569707Ea3C66A",
|
||||
"notes": "138 cGBPC → cWGBPC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPT_cW",
|
||||
"name": "cGBPT→cWGBPT",
|
||||
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
|
||||
"addressTo": "0x4611d3424e059392a52b957e508273bc761c80f2",
|
||||
"addressTo": "0x6389a643e71F000FC4ce5a0d58fDC4a40AD68EBE",
|
||||
"notes": "138 cGBPT → cWGBPT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_AUDC_cW",
|
||||
"name": "cAUDC→cWAUDC",
|
||||
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
|
||||
"addressTo": "0x04e1e22b0d41e99f4275bd40a50480219bc9a223",
|
||||
"addressTo": "0x528376e3a4bAAE78F7F4D0E9aDB75eFA9942373E",
|
||||
"notes": "138 cAUDC → cWAUDC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_JPYC_cW",
|
||||
"name": "cJPYC→cWJPYC",
|
||||
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
|
||||
"addressTo": "0x3714b1a312e0916c7dcdc4edf480fc0339e59a59",
|
||||
"addressTo": "0xCF9D867DA220c6B4756BeDC6888dDac3a0463AEa",
|
||||
"notes": "138 cJPYC → cWJPYC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CHFC_cW",
|
||||
"name": "cCHFC→cWCHFC",
|
||||
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
|
||||
"addressTo": "0xc2fa05f12a75ac84ea778af9d6935ca807275e55",
|
||||
"addressTo": "0x4f6167e9aE79878f6Cd71330eAD7f68a45Ed29DC",
|
||||
"notes": "138 cCHFC → cWCHFC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CADC_cW",
|
||||
"name": "cCADC→cWCADC",
|
||||
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
|
||||
"addressTo": "0x1872e033b30f3ce0498847926857433e0146394e",
|
||||
"addressTo": "0x1B051588A33A7d56ed46f7C5C78870175b44F9FA",
|
||||
"notes": "138 cCADC → cWCADC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUC_cW",
|
||||
"name": "cXAUC→cWXAUC",
|
||||
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
|
||||
"addressTo": "0x4f95297c23d9f4a1032b1c6a2e553225cb175bee",
|
||||
"addressTo": "0x826d5F3e5713C76a1D13e41A76843A361090c896",
|
||||
"notes": "138 cXAUC → cWXAUC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUT_cW",
|
||||
"name": "cXAUT→cWXAUT",
|
||||
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
|
||||
"addressTo": "0xd2b4dbf2f6bd6704e066d752eec61fb0be953fd3",
|
||||
"addressTo": "0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44",
|
||||
"notes": "138 cXAUT → cWXAUT"
|
||||
}
|
||||
]
|
||||
@@ -666,70 +666,70 @@
|
||||
"key": "Compliant_EURC_cW",
|
||||
"name": "cEURC→cWEURC",
|
||||
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
|
||||
"addressTo": "0xcb145ba9a370681e3545f60e55621ebf218b1031",
|
||||
"addressTo": "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF",
|
||||
"notes": "138 cEURC → Base cWEURC; set when deployed"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_EURT_cW",
|
||||
"name": "cEURT→cWEURT",
|
||||
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
|
||||
"addressTo": "0x73e0cf8bf861d376b3a4c87c136f975027f045ff",
|
||||
"addressTo": "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4",
|
||||
"notes": "138 cEURT → cWEURT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPC_cW",
|
||||
"name": "cGBPC→cWGBPC",
|
||||
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
|
||||
"addressTo": "0x2a0023ad5ce1ac6072b454575996dffb1bb11b16",
|
||||
"addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66",
|
||||
"notes": "138 cGBPC → cWGBPC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPT_cW",
|
||||
"name": "cGBPT→cWGBPT",
|
||||
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
|
||||
"addressTo": "0x22b98130ab4d9c355512b25ade4c35e75a4e7e89",
|
||||
"addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427",
|
||||
"notes": "138 cGBPT → cWGBPT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_AUDC_cW",
|
||||
"name": "cAUDC→cWAUDC",
|
||||
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
|
||||
"addressTo": "0xa846aead3071df1b6439d5d813156ace7c2c1da1",
|
||||
"addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036",
|
||||
"notes": "138 cAUDC → cWAUDC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_JPYC_cW",
|
||||
"name": "cJPYC→cWJPYC",
|
||||
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
|
||||
"addressTo": "0x29828e9ab2057cd3df3c9211455ae1f76e53d2af",
|
||||
"addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd",
|
||||
"notes": "138 cJPYC → cWJPYC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CHFC_cW",
|
||||
"name": "cCHFC→cWCHFC",
|
||||
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
|
||||
"addressTo": "0xc1535e88578d984f12eab55863376b8d8b9fb05a",
|
||||
"addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29",
|
||||
"notes": "138 cCHFC → cWCHFC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CADC_cW",
|
||||
"name": "cCADC→cWCADC",
|
||||
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
|
||||
"addressTo": "0xdc383c489533a4dd9a6bd3007386e25d5078b878",
|
||||
"addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68",
|
||||
"notes": "138 cCADC → cWCADC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUC_cW",
|
||||
"name": "cXAUC→cWXAUC",
|
||||
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
|
||||
"addressTo": "0x7e4b4682453bcce19ec903fb69153d3031986bc4",
|
||||
"addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B",
|
||||
"notes": "138 cXAUC → cWXAUC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUT_cW",
|
||||
"name": "cXAUT→cWXAUT",
|
||||
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
|
||||
"addressTo": "0xcc6ae6016d564e9ab82aaff44d65e05a9b18951c",
|
||||
"addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB",
|
||||
"notes": "138 cXAUT → cWXAUT"
|
||||
}
|
||||
]
|
||||
@@ -778,70 +778,70 @@
|
||||
"key": "Compliant_EURC_cW",
|
||||
"name": "cEURC→cWEURC",
|
||||
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
|
||||
"addressTo": "0x2a0023ad5ce1ac6072b454575996dffb1bb11b16",
|
||||
"addressTo": "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4",
|
||||
"notes": "138 cEURC → Arbitrum cWEURC; set when deployed"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_EURT_cW",
|
||||
"name": "cEURT→cWEURT",
|
||||
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
|
||||
"addressTo": "0x22b98130ab4d9c355512b25ade4c35e75a4e7e89",
|
||||
"addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66",
|
||||
"notes": "138 cEURT → cWEURT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPC_cW",
|
||||
"name": "cGBPC→cWGBPC",
|
||||
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
|
||||
"addressTo": "0xa846aead3071df1b6439d5d813156ace7c2c1da1",
|
||||
"addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427",
|
||||
"notes": "138 cGBPC → cWGBPC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPT_cW",
|
||||
"name": "cGBPT→cWGBPT",
|
||||
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
|
||||
"addressTo": "0x29828e9ab2057cd3df3c9211455ae1f76e53d2af",
|
||||
"addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036",
|
||||
"notes": "138 cGBPT → cWGBPT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_AUDC_cW",
|
||||
"name": "cAUDC→cWAUDC",
|
||||
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
|
||||
"addressTo": "0xc1535e88578d984f12eab55863376b8d8b9fb05a",
|
||||
"addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd",
|
||||
"notes": "138 cAUDC → cWAUDC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_JPYC_cW",
|
||||
"name": "cJPYC→cWJPYC",
|
||||
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
|
||||
"addressTo": "0xdc383c489533a4dd9a6bd3007386e25d5078b878",
|
||||
"addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29",
|
||||
"notes": "138 cJPYC → cWJPYC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CHFC_cW",
|
||||
"name": "cCHFC→cWCHFC",
|
||||
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
|
||||
"addressTo": "0x7e4b4682453bcce19ec903fb69153d3031986bc4",
|
||||
"addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68",
|
||||
"notes": "138 cCHFC → cWCHFC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CADC_cW",
|
||||
"name": "cCADC→cWCADC",
|
||||
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
|
||||
"addressTo": "0xcc6ae6016d564e9ab82aaff44d65e05a9b18951c",
|
||||
"addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B",
|
||||
"notes": "138 cCADC → cWCADC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUC_cW",
|
||||
"name": "cXAUC→cWXAUC",
|
||||
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
|
||||
"addressTo": "0xa7762b63c4871581885ad17c5714ebb286a7480b",
|
||||
"addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB",
|
||||
"notes": "138 cXAUC → cWXAUC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUT_cW",
|
||||
"name": "cXAUT→cWXAUT",
|
||||
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
|
||||
"addressTo": "0x66568899ffe8f00b25dc470e878b65a478994e76",
|
||||
"addressTo": "0x328Cd365Bb35524297E68ED28c6fF2C9557d1363",
|
||||
"notes": "138 cXAUT → cWXAUT"
|
||||
}
|
||||
]
|
||||
@@ -890,70 +890,70 @@
|
||||
"key": "Compliant_EURC_cW",
|
||||
"name": "cEURC→cWEURC",
|
||||
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
|
||||
"addressTo": "0x4ab39b5bab7b463435209a9039bd40cf241f5a82",
|
||||
"addressTo": "0x2627177f33968128C7fb916F5B9E1f14cc550A80",
|
||||
"notes": "138 cEURC → Optimism cWEURC; set when deployed"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_EURT_cW",
|
||||
"name": "cEURT→cWEURT",
|
||||
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
|
||||
"addressTo": "0x6f521cd9fcf7884cd4e9486c7790e818638e09dd",
|
||||
"addressTo": "0x07dE1f489E1bfCE2c326066a9DFc10e731CBA0CB",
|
||||
"notes": "138 cEURT → cWEURT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPC_cW",
|
||||
"name": "cGBPC→cWGBPC",
|
||||
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
|
||||
"addressTo": "0x3f8c409c6072a2b6a4ff17071927ba70f80c725f",
|
||||
"addressTo": "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB",
|
||||
"notes": "138 cGBPC → cWGBPC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPT_cW",
|
||||
"name": "cGBPT→cWGBPT",
|
||||
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
|
||||
"addressTo": "0x456373d095d6b9260f01709f93fccf1d8aa14d11",
|
||||
"addressTo": "0x5355148C4740fcc3D7a96F05EdD89AB14851206b",
|
||||
"notes": "138 cGBPT → cWGBPT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_AUDC_cW",
|
||||
"name": "cAUDC→cWAUDC",
|
||||
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
|
||||
"addressTo": "0x25603ae4bff0b71d637b3573d1b6657f5f6d17ef",
|
||||
"addressTo": "0x50b073d0D1D2f002745cb9FC28a057d5be84911c",
|
||||
"notes": "138 cAUDC → cWAUDC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_JPYC_cW",
|
||||
"name": "cJPYC→cWJPYC",
|
||||
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
|
||||
"addressTo": "0x8e54c52d34a684e22865ac9f2d7c27c30561a7b9",
|
||||
"addressTo": "0x1ED9E491A5eCd53BeF21962A5FCE24880264F63f",
|
||||
"notes": "138 cJPYC → cWJPYC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CHFC_cW",
|
||||
"name": "cCHFC→cWCHFC",
|
||||
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
|
||||
"addressTo": "0x4d9bc6c74ba65e37c4139f0aec9fc5ddff28dcc4",
|
||||
"addressTo": "0x8b6EE72001cAFcb21D56a6c4686D6Db951d499A6",
|
||||
"notes": "138 cCHFC → cWCHFC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CADC_cW",
|
||||
"name": "cCADC→cWCADC",
|
||||
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
|
||||
"addressTo": "0x9f6d2578003fe04e58a9819a4943732f2a203a61",
|
||||
"addressTo": "0xA6eFb8783C8ad2740ec880e46D4f7E608E893B1B",
|
||||
"notes": "138 cCADC → cWCADC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUC_cW",
|
||||
"name": "cXAUC→cWXAUC",
|
||||
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
|
||||
"addressTo": "0xddc4063f770f7c49d00b5a10fb552e922aa39b2c",
|
||||
"addressTo": "0x7062f35567BBAb4d98dc33af03B0d14Df42294D5",
|
||||
"notes": "138 cXAUC → cWXAUC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUT_cW",
|
||||
"name": "cXAUT→cWXAUT",
|
||||
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
|
||||
"addressTo": "0x145e8e8c49b6a021969dd9d2c01c8fea44374f61",
|
||||
"addressTo": "0x5fbCE65524211BC1bFb0309fd9EE09E786c6D097",
|
||||
"notes": "138 cXAUT → cWXAUT"
|
||||
}
|
||||
]
|
||||
@@ -1002,70 +1002,70 @@
|
||||
"key": "Compliant_EURC_cW",
|
||||
"name": "cEURC→cWEURC",
|
||||
"addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
|
||||
"addressTo": "0x7574d37F42528B47c88962931e48FC61608a4050",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cEURC → Cronos cWEURC; set when deployed"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_EURT_cW",
|
||||
"name": "cEURT→cWEURT",
|
||||
"addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
|
||||
"addressTo": "0x9f833b4f1012F52eb3317b09922a79c6EdFca77D",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cEURT → cWEURT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPC_cW",
|
||||
"name": "cGBPC→cWGBPC",
|
||||
"addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
|
||||
"addressTo": "0xe5c65A76A541368d3061fe9E7A2140cABB903dbF",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cGBPC → cWGBPC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_GBPT_cW",
|
||||
"name": "cGBPT→cWGBPT",
|
||||
"addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
|
||||
"addressTo": "0xBb58fa16bAc8E789f09C14243adEE6480D8213A2",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cGBPT → cWGBPT"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_AUDC_cW",
|
||||
"name": "cAUDC→cWAUDC",
|
||||
"addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
|
||||
"addressTo": "0xff3084410A732231472Ee9f93F5855dA89CC5254",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cAUDC → cWAUDC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_JPYC_cW",
|
||||
"name": "cJPYC→cWJPYC",
|
||||
"addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
|
||||
"addressTo": "0x52aD62B8bD01154e2A4E067F8Dc4144C9988d203",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cJPYC → cWJPYC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CHFC_cW",
|
||||
"name": "cCHFC→cWCHFC",
|
||||
"addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885",
|
||||
"addressTo": "0xB55F49D6316322d5caA96D34C6e4b1003BD3E670",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cCHFC → cWCHFC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_CADC_cW",
|
||||
"name": "cCADC→cWCADC",
|
||||
"addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
|
||||
"addressTo": "0x32aD687F24F77bF8C86605c202c829163Ac5Ab36",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cCADC → cWCADC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUC_cW",
|
||||
"name": "cXAUC→cWXAUC",
|
||||
"addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
|
||||
"addressTo": "0xf1B771c95573113E993374c0c7cB2dc1a7908B12",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cXAUC → cWXAUC"
|
||||
},
|
||||
{
|
||||
"key": "Compliant_XAUT_cW",
|
||||
"name": "cXAUT→cWXAUT",
|
||||
"addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
|
||||
"addressTo": "0xD517C0cF7013f988946A468c880Cc9F8e2A4BCbE",
|
||||
"addressTo": "0x0000000000000000000000000000000000000000",
|
||||
"notes": "138 cXAUT → cWXAUT"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,12 +0,0 @@
|
||||
# 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
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"chain138": {
|
||||
"endpoint": "0x43F435cDC82e415500c0abcf48261176052CadcA",
|
||||
"registers": [
|
||||
{
|
||||
"chainId": 50,
|
||||
"csc": "0x3cf12c78b5E52EB802aD4f3b4653c616786b792c",
|
||||
"endpoint": "0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e"
|
||||
}
|
||||
],
|
||||
"applications": []
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
[
|
||||
{
|
||||
"chainId": 138,
|
||||
"csc": "0x105F8A15b819948a89153505762444Ee9f324684",
|
||||
"endpoint": "0x43F435cDC82e415500c0abcf48261176052CadcA"
|
||||
}
|
||||
]
|
||||
Submodule cross-chain-pmm-lps updated: 68647ff4d4...589ebaff86
Submodule dbis_core updated: 97a1cb1b96...1190476b0a
@@ -27,7 +27,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)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Operator Ready Checklist — Copy-Paste Commands
|
||||
|
||||
**Last Updated:** 2026-04-22
|
||||
**Last Updated:** 2026-03-28
|
||||
**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.
|
||||
@@ -106,20 +106,6 @@ 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
|
||||
@@ -290,7 +276,7 @@ This is intentionally deferred with the rest of the Wemix path. If the chain is
|
||||
|
||||
---
|
||||
|
||||
## 10. DeFi Oracle Meta Mainnet (Chain 138) — phased production path (matrix-driven)
|
||||
## 10. DBIS 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 | 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 |
|
||||
| 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 |
|
||||
| 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); real target execution via `deploy-targets.json`; commit status updated after deploy success/failure; Sankofa API integration still planned.
|
||||
- **Phoenix Deploy API:** HMAC-SHA256 webhook validation (X-Gitea-Signature); deploy completion callback (stub reports success). Full deploy logic and Sankofa integration remain 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`. |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Submodule and explorer remote hygiene
|
||||
|
||||
**Last Updated:** 2026-03-27
|
||||
**Last Updated:** 2026-04-18
|
||||
**Purpose:** Operational notes for the many git submodules under the proxmox parent repo: detached HEAD, remotes, pushes, and non-secret JSON env snapshots.
|
||||
|
||||
---
|
||||
@@ -52,16 +52,6 @@ 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.
|
||||
@@ -70,7 +60,50 @@ See [ATOMIC_SWAP_DAPP_SUBMODULE.md](../03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.
|
||||
|
||||
## metamask-integration upstream
|
||||
|
||||
This clone may show `main...gitea/main` when **Gitea** is the configured `origin` or tracking remote. Confirm with your team whether **GitHub** (see `.gitmodules`) or **Gitea** is canonical for pushes; align `branch.<name>.remote` if both exist.
|
||||
`.gitmodules` now points to **Gitea** (`https://gitea.d-bis.org/d-bis/metamask-integration.git`) — canonical per AGENTS.md, and the pinned commit is reachable on both Gitea and the GitHub mirror at `Defi-Oracle-Meta-Blockchain/metamask-integration` (verified 2026-04-18). For contributions, push to Gitea; align `branch.<name>.remote` if local clones still have GitHub as `origin`.
|
||||
|
||||
---
|
||||
|
||||
## Submodule remote status matrix (verified 2026-04-18)
|
||||
|
||||
Regen with `bash scripts/verify/submodules-clean.sh` or re-run the Phase 3 reachability check in `.gitea/workflows/submodules-check.yml`. "Pinned commit reachable" means the commit recorded in the parent `master` is fetchable from the listed remote.
|
||||
|
||||
| Submodule | `.gitmodules` URL | Pinned commit reachable on | Notes |
|
||||
|---|---|---|---|
|
||||
| explorer-monorepo | gitea.d-bis.org/d-bis/explorer-monorepo | Gitea (canonical) | — |
|
||||
| ProxmoxVE | gitea.d-bis.org/d-bis/ProxmoxVE | Gitea (canonical) | — |
|
||||
| defi-arbitrage | gitea.d-bis.org/d-bis/defi-arbitrage | Gitea (canonical) | nested under dbis_core |
|
||||
| fireblocks-integration | gitea.d-bis.org/d-bis/fireblocks-integration | Gitea (canonical) | — |
|
||||
| cross-chain-pmm-lps | gitea.d-bis.org/d-bis/cross-chain-pmm-lps | Gitea (canonical) | — |
|
||||
| ai-mcp-pmm-controller | gitea.d-bis.org/d-bis/ai-mcp-pmm-controller | Gitea (canonical) | — |
|
||||
| MEV_Bot | gitea.d-bis.org/d-bis/MEV_Bot | Gitea (canonical) | — |
|
||||
| **smom-dbis-138** | gitea.d-bis.org/d-bis/smom-dbis-138 | **Gitea only** | Switched from `git@github.com:` SSH. Pinned commit NOT on `Order-of-Hospitallers/smom-dbis-138` GitHub. |
|
||||
| **metamask-integration** | gitea.d-bis.org/d-bis/metamask-integration | Gitea + GitHub | Switched from `git@github.com:` SSH. |
|
||||
| **dbis_core** | github.com/Order-of-Hospitallers/dbis_core | GitHub only | Switched from `git@github.com:` SSH. Gitea mirror exists but is behind; migrate once caught up. |
|
||||
| **the-order** | github.com/Order-of-Hospitallers/the-order-monorepo | GitHub only | Switched from `git@github.com:` SSH. `gitea.d-bis.org/d-bis/the-order` is a DIFFERENT repo — do not point at it. |
|
||||
| mcp-proxmox | github.com/gilby125/mcp-proxmox | GitHub | third-party, no Gitea plan |
|
||||
| gru-docs | github.com/Defi-Oracle-Tooling/GRU-Official-Docs-Monetary-Policies | GitHub | tracking `docs-review-fixes` branch |
|
||||
| miracles_in_motion | github.com/Order-of-Hospitallers/miracles_in_motion | GitHub | no Gitea mirror today |
|
||||
| metaverseDubai | github.com/Order-of-Hospitallers/metaverseDubai | GitHub | no Gitea mirror today |
|
||||
| OMNIS | github.com/Defi-Oracle-Tooling/OMNIS | GitHub | no Gitea mirror today |
|
||||
| arromis-monorepo | github.com/ARROMIS/arromis-monorepo | GitHub | no Gitea mirror today |
|
||||
| alltra-lifi-settlement | github.com/bis-innovations/LiFi_Pay_Alltra_Integration_Submodule | GitHub | no Gitea mirror today |
|
||||
| pr-workspace/app-ethereum | github.com/defiQUG/app-ethereum | GitHub (personal fork) | candidate for removal |
|
||||
| pr-workspace/chains | github.com/defiQUG/chains | GitHub (personal fork) | candidate for removal |
|
||||
| **omada-api** | github.com/ARROMIS/omada-api | — (403 from HTTPS-only envs 2026-04-18) | Candidate for conversion to regular workspace package or removal. `pnpm-workspace.yaml` already has a compatibility note. |
|
||||
|
||||
### Phase 3 scope (this round)
|
||||
|
||||
- Moved 4 SSH-URL submodules to HTTPS (`smom-dbis-138`, `metamask-integration`, `dbis_core`, `the-order`), preferring Gitea where the pinned commit is reachable there. Verified each `git submodule update --init` succeeds from a clean checkout.
|
||||
- Documented `omada-api` unreachability without changing its pointer — removal or workspace-package conversion is a separate decision.
|
||||
- Left the 10 submodules already on Gitea or non-SSH GitHub untouched.
|
||||
|
||||
### Follow-up candidates (not in this PR)
|
||||
|
||||
1. `dbis_core` — migrate to Gitea once the `d-bis/dbis_core` mirror catches up to the pinned commit. Today it lags HEAD by a different commit graph, so pointing there would break `git submodule update --init`.
|
||||
2. `the-order` — no Gitea mirror of `the-order-monorepo` yet; decide whether to host one at `d-bis/the-order-monorepo`.
|
||||
3. `omada-api` — repo gone / private; remove the submodule or convert to a vendored workspace package.
|
||||
4. `pr-workspace/app-ethereum` and `pr-workspace/chains` — personal forks under `defiQUG/`; review whether these belong in the monorepo at all.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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 (counts refreshed 2026-04-21 for on-chain list)
|
||||
**Date:** 2026-03-02
|
||||
**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, 61/61 on-chain (Chain 138; per `check-contracts-on-chain-138.sh`), validation OK, reconcile-env printed |
|
||||
| **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 59/59 on-chain (Chain 138), 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 | 61/61 contracts present (current address list in check-contracts-on-chain-138.sh) |
|
||||
| Phase 1 (Chain 138 core) | Done | 59/59 contracts present |
|
||||
| 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 |
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
## 12. DBIS RTGS / HYBX / Hyperledger E2E stack
|
||||
|
||||
**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.
|
||||
**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.
|
||||
|
||||
### 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`
|
||||
|
||||
@@ -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 @@
|
||||
|
||||
> 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 canonical DODO PMM pools on Chain 138, including the live stable/WETH pools.
|
||||
**Purpose:** Add base/quote liquidity to the three DODO PMM pools on Chain 138 (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC).
|
||||
|
||||
**Prerequisites:**
|
||||
- Deployer is **owner** of cUSDT and cUSDC contracts (to mint), or already has balance.
|
||||
@@ -37,20 +37,17 @@ Deployer must be the **owner** of both cUSDT and cUSDC contracts (onlyOwner can
|
||||
Add or set in `smom-dbis-138/.env`:
|
||||
|
||||
```bash
|
||||
# Pool addresses
|
||||
POOL_CUSDTCUSDC=0x9e89bAe009adf128782E19e8341996c596ac40dC
|
||||
POOL_CUSDTUSDT=0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66
|
||||
POOL_CUSDCUSDC=0xc39B7D0F40838cbFb54649d327f49a6DAC964062
|
||||
POOL_CUSDTWETH=0xaE38a008Ba4Dbf8D9F141D03e9dC8f7Dbe0ce17c
|
||||
POOL_CUSDCWETH=0xAAE68830a55767722618E869882c6Ed064Cc1eb2
|
||||
POOL_CEURTWETH=0x4a64c886cedF00db42ea5B946D6b304121ad9529
|
||||
# Pool addresses (from PRE_DEPLOYMENT_CHECKLIST / create-all-pmm-pools-chain138.sh)
|
||||
POOL_CUSDTCUSDC=0xff8d3b8fDF7B112759F076B69f4271D4209C0849
|
||||
POOL_CUSDTUSDT=0x6fc60DEDc92a2047062294488539992710b99D71
|
||||
POOL_CUSDCUSDC=0x9f74Be42725f2Aa072a9E0CdCce0E7203C510263
|
||||
|
||||
# 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`, `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.
|
||||
Optional per-pool overrides: `ADD_LIQUIDITY_CUSDTCUSDC_BASE`, `ADD_LIQUIDITY_CUSDTCUSDC_QUOTE`, etc.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,83 +0,0 @@
|
||||
# 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
|
||||
```
|
||||
@@ -1,158 +0,0 @@
|
||||
# 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
|
||||
|
||||
## 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.
|
||||
|
||||
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.
|
||||
@@ -1,26 +0,0 @@
|
||||
# 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`
|
||||
@@ -1,80 +0,0 @@
|
||||
# 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`
|
||||
@@ -1,159 +0,0 @@
|
||||
# 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` |
|
||||
@@ -1,460 +0,0 @@
|
||||
# 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"
|
||||
```
|
||||
@@ -1,60 +0,0 @@
|
||||
# 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 @@
|
||||
# DeFi Oracle Meta Mainnet (Chain 138) — Phases 1-3 Production Gate
|
||||
# DBIS 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:** 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**.
|
||||
**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**.
|
||||
|
||||
### What is genuinely production-capable now
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
## Production blockers
|
||||
|
||||
The following items still prevent a full “DeFi Oracle Meta Mainnet (Chain 138) production complete” declaration:
|
||||
The following items still prevent a full “DBIS 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, 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). |
|
||||
| **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). |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
# 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.
|
||||
|
||||
## 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.
|
||||
@@ -1,5 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,11 +0,0 @@
|
||||
# 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`.
|
||||
@@ -1,227 +0,0 @@
|
||||
# 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`
|
||||
@@ -1,27 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,40 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,19 +0,0 @@
|
||||
# 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` |
|
||||
@@ -1,112 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,420 +0,0 @@
|
||||
# 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
|
||||
```
|
||||
@@ -1,112 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,760 +0,0 @@
|
||||
# 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
|
||||
```
|
||||
@@ -1,195 +0,0 @@
|
||||
# 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`
|
||||
@@ -1,284 +0,0 @@
|
||||
# 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
|
||||
```
|
||||
@@ -1,100 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,89 +0,0 @@
|
||||
# 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
|
||||
@@ -1,634 +0,0 @@
|
||||
# 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
|
||||
```
|
||||
@@ -1,458 +0,0 @@
|
||||
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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,83 +0,0 @@
|
||||
# Promod Uniswap V2 Phase 2 Wave 1 Completion Status
|
||||
|
||||
**Generated:** 2026-04-18T02:30:39.167860+00:00
|
||||
|
||||
**Overall Status:** `complete`
|
||||
|
||||
**Completed Chains:** `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`
|
||||
|
||||
## Reserve Verification
|
||||
|
||||
| Chain | Network | Pair | Pair Address | Reserves | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `cWAUDC/cWUSDC` | `0x135812ec5E714De8400B47856A8210eE9c4B19bb` | `(1000000000 [1e9], 1000000000 [1e9], 1776459491 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWAUDC/cWUSDT` | `0xaC36C0De0A6E94fa21718217c9eccEa4dC2680cF` | `(1000000000 [1e9], 1000000000 [1e9], 1776459503 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWEURC/cWUSDC` | `0xaF10c00226DD1Bb28d7e93C21c904B7072b8076D` | `(1000000000 [1e9], 1000000000 [1e9], 1776459899 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWEURC/cWUSDT` | `0x58a68B0c4Fc090d63014eA9E1D9D291377EE15Ce` | `(1000000000 [1e9], 1000000000 [1e9], 1776459911 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWGBPC/cWUSDC` | `0x43fc09d5d619D43DFE764F39B193900D54992718` | `(1000000000 [1e9], 1000000000 [1e9], 1776459923 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWGBPC/cWUSDT` | `0x122781a70764f958D231ea06E3EA3F4F2a324Da9` | `(1000000000 [1e9], 1000000000 [1e9], 1776459935 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWAUDC/cWUSDC` | `0xdf58b085EE6Db9Cc0569e8f7FF21877b44645eA8` | `(1000000000 [1e9], 1000000000 [1e9], 1776460061 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWAUDC/cWUSDT` | `0xe3093934531459110c37f728C7f4e8557236A677` | `(1000000000 [1e9], 1000000000 [1e9], 1776460065 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWEURC/cWUSDC` | `0x8324cDEcE2618FA2b94469165353829819Caaf19` | `(1000000000 [1e9], 1000000000 [1e9], 1776460067 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWEURC/cWUSDT` | `0x255BC955CBD24528B83Ce971641A80b75389Fc65` | `(1000000000 [1e9], 1000000000 [1e9], 1776460071 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWGBPC/cWUSDC` | `0x16BdD425Be56080b670925AF880bAC599C9346ca` | `(1000000000 [1e9], 1000000000 [1e9], 1776460073 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWGBPC/cWUSDT` | `0x3052541a82d02348Bbe7f9Ce1927992ADb9Bd259` | `(1000000000 [1e9], 1000000000 [1e9], 1776460077 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWAUDC/cWUSDC` | `0xef0Dd59421024053102b9A29A71D07d4838ef0a5` | `(1000000000 [1e9], 1000000000 [1e9], 1776477932 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWAUDC/cWUSDT` | `0x480f7Cf816AEBD62EC60A738635FD6363e004709` | `(1000000000 [1e9], 1000000000 [1e9], 1776477936 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWEURC/cWUSDC` | `0x55dF42030A9780F51E3f479Ae28E63ee9049627a` | `(1000000000 [1e9], 1000000000 [1e9], 1776477974 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWEURC/cWUSDT` | `0xC3A19A41096265A4137F8346aAcFd5d26568cb97` | `(1000000000 [1e9], 1000000000 [1e9], 1776477978 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWGBPC/cWUSDC` | `0x673dFF7d10DbF2Cd6e1F495e53a6AeDb291Df1a7` | `(1000000000 [1e9], 1000000000 [1e9], 1776477981 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWGBPC/cWUSDT` | `0xf6314aCBAaC3EE2F8CCc48C8Ca00525824a35C26` | `(1000000000 [1e9], 1000000000 [1e9], 1776477984 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWAUDC/cWUSDC` | `0x03B5b4bDb04A7D94A8d5D170fE84772756DB912F` | `(1000000000 [1e9], 1000000000 [1e9], 1776478046 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWAUDC/cWUSDT` | `0x8FA9f96f6E5785ea98A51C97E3d1A05AaafB406e` | `(1000000000 [1e9], 1000000000 [1e9], 1776478049 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWEURC/cWUSDC` | `0xa07b120e21bc80333AF35C951150a5F983cf12D9` | `(1000000000 [1e9], 1000000000 [1e9], 1776478052 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWEURC/cWUSDT` | `0xBA9a873BC6cA8885E7E0975247B304cFed2f01E6` | `(1000000000 [1e9], 1000000000 [1e9], 1776478055 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWGBPC/cWUSDC` | `0x43447275C56be6fd30e74cF3368CFDE561fC2fe7` | `(1000000000 [1e9], 1000000000 [1e9], 1776478116 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWGBPC/cWUSDT` | `0xd8ac668D812dC7bB86ea66f8e86824a575bf0ed0` | `(1000000000 [1e9], 1000000000 [1e9], 1776478093 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWAUDC/cWUSDC` | `0x65C533F4520816e91303747aFAED84B5B58154d5` | `(1000000000 [1e9], 1000000000 [1e9], 1776457100 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWAUDC/cWUSDT` | `0x41078C1DB4Ed26ecF19142feBaA9dCdE0b04e210` | `(1000000000 [1e9], 1000000000 [1e9], 1776457105 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWEURC/cWUSDC` | `0xFcf9feEF2bcF708cE2193fE8Ee33dA205610480D` | `(1000000000 [1e9], 1000000000 [1e9], 1776457110 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWEURC/cWUSDT` | `0x24B9F12D143d16DdFC6D4eA135b8aC08009367a1` | `(1000000000 [1e9], 1000000000 [1e9], 1776457115 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWGBPC/cWUSDC` | `0x86ee10F889dBAA74b640cFD318A07787DBDaaC9b` | `(1000000000 [1e9], 1000000000 [1e9], 1776457120 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWGBPC/cWUSDT` | `0x67f36f25Af15910B5bAE08B1b9B6273158E8eA77` | `(1000000000 [1e9], 1000000000 [1e9], 1776457125 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWAUDC/cWUSDC` | `0x6ffa939d75bd6affe019705f2c9240f97975ffa0` | `(1000000000 [1e9], 1000000000 [1e9], 1776460210 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWAUDC/cWUSDT` | `0x526a3a38b77d199e8fd07f37597f9ca0fa5a87cd` | `(1000000000 [1e9], 1000000000 [1e9], 1776460214 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWEURC/cWUSDC` | `0xd5907a692f7e8f650fc5feb8ebb3196fea2069a3` | `(1000000000 [1e9], 1000000000 [1e9], 1776460220 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWEURC/cWUSDT` | `0x3292c0ed9eec0443635367717047876fe3cdb514` | `(1000000000 [1e9], 1000000000 [1e9], 1776460224 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWGBPC/cWUSDC` | `0x52786e752be5fb1b18e86959f87b7a59e2c6de6d` | `(1000000000 [1e9], 1000000000 [1e9], 1776460228 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWGBPC/cWUSDT` | `0x1b6e8484db0cd9c00d39e457c2d126c8983f5390` | `(1000000000 [1e9], 1000000000 [1e9], 1776460232 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWAUDC/cWUSDC` | `0x8e0C0Fa5F7227799bf0cFc9E4129f2c9133230f6` | `(1000000000 [1e9], 1000000000 [1e9], 1776478205 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWAUDC/cWUSDT` | `0xB191eC6D99CeA5aAf557193224b32453F27BBB9f` | `(1000000000 [1e9], 1000000000 [1e9], 1776478249 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWEURC/cWUSDC` | `0x71C979435fDdF15EaF84df4C5191e1b285387758` | `(1000000000 [1e9], 1000000000 [1e9], 1776478207 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWEURC/cWUSDT` | `0x56b54646C559569060435EAC2C3c70346Fa7D849` | `(1000000000 [1e9], 1000000000 [1e9], 1776478253 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWGBPC/cWUSDC` | `0x9b40B0a5EEC3B510d3CdeAe186F9ed27A22BF88a` | `(1000000000 [1e9], 1000000000 [1e9], 1776478187 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWGBPC/cWUSDT` | `0xe5Cf1c4d333992D5a4ceed65d83123398D78594c` | `(1000000000 [1e9], 1000000000 [1e9], 1776478209 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWAUDC/cWUSDC` | `0x51fB15df509a8F1dA3813CA810c1d667DeC119f6` | `(1000000000 [1e9], 1000000000 [1e9], 1776478295 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWAUDC/cWUSDT` | `0x2Bfd8A45852Bd81cd787a4081A6528b00cf00A79` | `(1000000000 [1e9], 1000000000 [1e9], 1776478296 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWEURC/cWUSDC` | `0x443FC120dB180265cF36A30f6eAbB7459106e570` | `(1000000000 [1e9], 1000000000 [1e9], 1776478298 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWEURC/cWUSDT` | `0xd55ECf3eB5680351e0f78bB305E67BFb4875B966` | `(1000000000 [1e9], 1000000000 [1e9], 1776478299 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWGBPC/cWUSDC` | `0x907a97eAD9B490208fCB1d43ddB8C2D1015581dC` | `(1000000000 [1e9], 1000000000 [1e9], 1776478300 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWGBPC/cWUSDT` | `0x65dF46603cDCd5862Caf5935DE5ee44B3756B749` | `(1000000000 [1e9], 1000000000 [1e9], 1776478301 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWAUDC/cWUSDC` | `0x2d9D8e2E0642C01B600BA9F953ca5D49abFC391E` | `(1000000000 [1e9], 1000000000 [1e9], 1776478385 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWAUDC/cWUSDT` | `0x4a1ED0471f1832264A704D0998703d1da3E6cb84` | `(1000000000 [1e9], 1000000000 [1e9], 1776478388 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWEURC/cWUSDC` | `0xFF0bFD8A374Eb1Ec24F27500a76104Ae3B463D80` | `(1000000000 [1e9], 1000000000 [1e9], 1776478392 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWEURC/cWUSDT` | `0xF93EBA21A0672835415f873e119789Ff27A21ebF` | `(1000000000 [1e9], 1000000000 [1e9], 1776478395 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWGBPC/cWUSDC` | `0xb3dDd766CE76d07435B197E0857ea80661d20Ed7` | `(1000000000 [1e9], 1000000000 [1e9], 1776478399 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWGBPC/cWUSDT` | `0xc6187BEfbC1b8cC827049AC4a5Cb05BC023c48De` | `(1000000000 [1e9], 1000000000 [1e9], 1776478402 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWAUDC/cWUSDC` | `0xc3d2eAE75b859c151825A49481187885c6c4C424` | `(1000000000 [1e9], 1000000000 [1e9], 1776478469 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWAUDC/cWUSDT` | `0x971881b0BCd3ec4C051f8316e22Ad31E8Af291C4` | `(1000000000 [1e9], 1000000000 [1e9], 1776478472 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWEURC/cWUSDC` | `0x640e566c107Ca4f6A10a2bD37E919aD011e7627e` | `(1000000000 [1e9], 1000000000 [1e9], 1776478475 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWEURC/cWUSDT` | `0x633A3686a5b99E04C0363aA9233a2FD83554589c` | `(1000000000 [1e9], 1000000000 [1e9], 1776478477 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWGBPC/cWUSDC` | `0x94090e498dC3cdA064039fe26Ede0dB19e6a1EC3` | `(1000000000 [1e9], 1000000000 [1e9], 1776478480 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWGBPC/cWUSDT` | `0xF9A545fF323fbe8c78c21BDeA191D187854F8Ed1` | `(1000000000 [1e9], 1000000000 [1e9], 1776478483 [1.776e9])` | `complete` |
|
||||
|
||||
## Explorer Publication
|
||||
|
||||
**Status:** `blocked`
|
||||
|
||||
Deployment and liquidity rollout is complete, but explorer publication is not fully complete.
|
||||
|
||||
- Current local CompliantWrappedToken artifact does not exactly match deployed runtime bytecode.
|
||||
- forge verify-contract cannot use the historical deploy profile directly in this environment.
|
||||
- Some explorer backends require paid API access or manual submission paths.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,25 +0,0 @@
|
||||
# Mr. Promod Uniswap V2 Phase Order
|
||||
|
||||
- Generated: `2026-04-18T02:19:49Z`
|
||||
- Program: Mr. Promod Uniswap V2 cW Deep Liquidity Program
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
- Purpose: strict rollout order for each chain: phase 1 core rail -> phase 2 full cW* wrapped mesh -> phase 3 settlement rails.
|
||||
|
||||
| Chain | Network | Phase 1 Core Rail | Phase 2 Full cW* Wrapped Mesh | Phase 3 Settlement Rails |
|
||||
|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `10` | Optimism | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `25` | Cronos | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDT`, `cWUSDT/USDT` |
|
||||
| `56` | BSC | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDT`, `cWUSDT/USDT`, `cWAUSDT/USDT` |
|
||||
| `100` | Gnosis | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `137` | Polygon | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` |
|
||||
| `8453` | Base | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `42161` | Arbitrum One | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `42220` | Celo | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` |
|
||||
| `43114` | Avalanche C-Chain | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` |
|
||||
|
||||
## Phase Rules
|
||||
|
||||
- Phase 1 opens the network with the standardized core rail `cWUSDT/cWUSDC` when available.
|
||||
- Phase 2 expands the rest of the documented GRU v2 `cW*` assets into wrapped pairs against `cWUSDC` and `cWUSDT`.
|
||||
- Phase 3 adds canonical settlement rails only after the wrapped mesh exists and the chain is ready to expose deeper stable exits.
|
||||
@@ -1,34 +0,0 @@
|
||||
# Mr. Promod Uniswap V2 Promotion Gates
|
||||
|
||||
- Generated: `2026-04-18T02:19:49Z`
|
||||
- Purpose: exact per-chain env vars and registry records required before the first live Uniswap V2 pool can be promoted.
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
- Chains in scope: `10`
|
||||
- Currently blocked: `6`
|
||||
|
||||
## Global Rule
|
||||
|
||||
- Promotion requires all of the following on the target chain: Uniswap V2 factory/router/start-block env set, indexer code support present, a live pair discoverable on-chain, and the pool address recorded in `deployment-status.json`.
|
||||
|
||||
## Operator Table
|
||||
|
||||
| Chain | Network | Code Support | Exact Env Vars To Fill | Registry Records To Fill |
|
||||
|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `ready` | `CHAIN_1_UNISWAP_V2_FACTORY`, `CHAIN_1_UNISWAP_V2_ROUTER`, `CHAIN_1_UNISWAP_V2_START_BLOCK` | `chains[1].cwTokens.cWUSDC`, `chains[1].cwTokens.cWUSDT`, `chains[1].anchorAddresses.USDC` |
|
||||
| `10` | Optimism | `ready` | `CHAIN_10_UNISWAP_V2_FACTORY`, `CHAIN_10_UNISWAP_V2_ROUTER`, `CHAIN_10_UNISWAP_V2_START_BLOCK` | `chains[10].cwTokens.cWUSDC`, `chains[10].cwTokens.cWUSDT`, `chains[10].anchorAddresses.USDC` |
|
||||
| `25` | Cronos | `ready` | `CHAIN_25_UNISWAP_V2_FACTORY`, `CHAIN_25_UNISWAP_V2_ROUTER`, `CHAIN_25_UNISWAP_V2_START_BLOCK` | `chains[25].cwTokens.cWUSDC`, `chains[25].cwTokens.cWUSDT`, `chains[25].anchorAddresses.USDT` |
|
||||
| `56` | BSC | `ready` | `CHAIN_56_UNISWAP_V2_FACTORY`, `CHAIN_56_UNISWAP_V2_ROUTER`, `CHAIN_56_UNISWAP_V2_START_BLOCK` | `chains[56].cwTokens.cWAUSDT`, `chains[56].cwTokens.cWUSDC`, `chains[56].cwTokens.cWUSDT` |
|
||||
| `100` | Gnosis | `ready` | `CHAIN_100_UNISWAP_V2_FACTORY`, `CHAIN_100_UNISWAP_V2_ROUTER`, `CHAIN_100_UNISWAP_V2_START_BLOCK` | `chains[100].cwTokens.cWUSDC`, `chains[100].cwTokens.cWUSDT`, `chains[100].anchorAddresses.USDC` |
|
||||
| `137` | Polygon | `ready` | `CHAIN_137_UNISWAP_V2_FACTORY`, `CHAIN_137_UNISWAP_V2_ROUTER`, `CHAIN_137_UNISWAP_V2_START_BLOCK` | `chains[137].cwTokens.cWAUSDT`, `chains[137].cwTokens.cWUSDC`, `chains[137].cwTokens.cWUSDT` |
|
||||
| `8453` | Base | `ready` | `CHAIN_8453_UNISWAP_V2_FACTORY`, `CHAIN_8453_UNISWAP_V2_ROUTER`, `CHAIN_8453_UNISWAP_V2_START_BLOCK` | `chains[8453].cwTokens.cWUSDC`, `chains[8453].cwTokens.cWUSDT`, `chains[8453].anchorAddresses.USDC` |
|
||||
| `42161` | Arbitrum One | `ready` | `CHAIN_42161_UNISWAP_V2_FACTORY`, `CHAIN_42161_UNISWAP_V2_ROUTER`, `CHAIN_42161_UNISWAP_V2_START_BLOCK` | `chains[42161].cwTokens.cWUSDC`, `chains[42161].cwTokens.cWUSDT`, `chains[42161].anchorAddresses.USDC` |
|
||||
| `42220` | Celo | `ready` | `CHAIN_42220_UNISWAP_V2_FACTORY`, `CHAIN_42220_UNISWAP_V2_ROUTER`, `CHAIN_42220_UNISWAP_V2_START_BLOCK` | `chains[42220].cwTokens.cWAUSDT`, `chains[42220].cwTokens.cWUSDC`, `chains[42220].cwTokens.cWUSDT` |
|
||||
| `43114` | Avalanche C-Chain | `ready` | `CHAIN_43114_UNISWAP_V2_FACTORY`, `CHAIN_43114_UNISWAP_V2_ROUTER`, `CHAIN_43114_UNISWAP_V2_START_BLOCK` | `chains[43114].cwTokens.cWAUSDT`, `chains[43114].cwTokens.cWUSDC`, `chains[43114].cwTokens.cWUSDT` |
|
||||
|
||||
## First Live Pool Minimum Checklist
|
||||
|
||||
1. Add `CHAIN_<id>_UNISWAP_V2_FACTORY`, `CHAIN_<id>_UNISWAP_V2_ROUTER`, and `CHAIN_<id>_UNISWAP_V2_START_BLOCK` for the target chain.
|
||||
2. Extend token-aggregation code support for that chain if `code_support_status` is `blocked`.
|
||||
3. Create the pool on-chain and record its `base`, `quote`, and `poolAddress` in `cross-chain-pmm-lps/config/deployment-status.json`.
|
||||
4. Rebuild live-pair discovery and promotion-gate artifacts so the new pair is visible to operator tooling.
|
||||
5. Only then promote the pair as live in operator-facing docs or routing artifacts.
|
||||
@@ -1,190 +0,0 @@
|
||||
# Provider-Facing Package: Source To CEX / OTC Execution
|
||||
|
||||
**Last Updated:** 2026-04-17
|
||||
**Purpose:** Strict provider-facing package for `Crypto.com OTC`, a DCE, or another institutional execution venue. This is written as an onboarding and commercial brief, not an internal architecture memo.
|
||||
|
||||
## 1. Executive Summary
|
||||
|
||||
We operate a structured digital-asset corridor with:
|
||||
|
||||
- a promoted immediate bucket of Mainnet `cWUSDC` / `cWUSDT`
|
||||
- a much larger same-day corridor feeder set built around Chain 138 `cUSDC`, `cUSDT`, and stable LP unwind paths
|
||||
- a deployer wallet funding posture that should maintain both Mainnet `cWUSDC` and `cWUSDT`
|
||||
- a preferred settlement target of `USDC`
|
||||
- a preferred operating model of:
|
||||
|
||||
`Chain 138 inventory -> canonical bridge -> Mainnet normalization -> provider handoff`
|
||||
|
||||
The current repo-modeled operator state shows:
|
||||
|
||||
- immediate bucket: about `$17.78M`
|
||||
- same-day corridor bucket: about `$1.381B`
|
||||
- strongest verified direct public normalization sink: about `$213.10` via `cWUSDC -> USDC`
|
||||
- direct `cWUSDT -> USDT` path: about `$2.18`
|
||||
|
||||
The practical implication is that we are not seeking a provider to discover our flow. We are seeking a provider to absorb clean normalized settlement flow at institutional scale after bridge and Mainnet normalization.
|
||||
|
||||
## Funding Posture
|
||||
|
||||
The deployer wallet should maintain both:
|
||||
|
||||
- `cWUSDC` for the primary Mainnet `USDC` normalization rail
|
||||
- `cWUSDT` for `cUSDT` landing, fallback handling, and support-rail normalization into `cWUSDC`
|
||||
|
||||
This means the provider-facing package should describe the Mainnet wrapped funding posture as **dual-rail**, even though the preferred final settlement asset remains `USDC`.
|
||||
|
||||
## 2. What We Expect From The Provider
|
||||
|
||||
| Category | Expectation |
|
||||
|---|---|
|
||||
| Onboarding | Clear KYB / KYC / entity onboarding path |
|
||||
| Settlement rail | Accepted deposit assets, chains, address rules, memo/tag rules if any |
|
||||
| Execution model | Clear distinction between OTC RFQ, streamed quotes, exchange-book routing, or hybrid handling |
|
||||
| Size guidance | Minimum clip, normal clip, escalation threshold, and preferred block workflow |
|
||||
| Operational support | Named contacts, escalation path, failed deposit handling, reconciliation contact |
|
||||
| Commercial clarity | Clear fee / spread framework and expected relationship model |
|
||||
| Reliability | Stable intake process for repeatable `USDC`-oriented flow |
|
||||
|
||||
## 3. What The Provider Should Expect From Us
|
||||
|
||||
| Category | Commitment |
|
||||
|---|---|
|
||||
| Flow shape | Clean, normalized settlement-oriented flow, primarily `USDC` |
|
||||
| Route discipline | We do not treat public on-chain pools as the final absorber of institutional size |
|
||||
| Operational clarity | One default operating path, one packetization policy, one settlement preference |
|
||||
| Funding posture | The deployer wallet maintains both `cWUSDC` and `cWUSDT` for Mainnet funding and normalization support |
|
||||
| Treasury control | Clear control over feeder wallets and corridor assets |
|
||||
| Source narrative | Source-of-funds and wallet-control narrative available for onboarding |
|
||||
| Escalation discipline | Named operators and reproducible reconciliation process |
|
||||
| Volume ramp | Small canaries first, then repeatable production clips, then larger negotiated size |
|
||||
|
||||
## 4. Current Flow Presentation
|
||||
|
||||
### Preferred Flow
|
||||
|
||||
| Source Asset | Path To Provider |
|
||||
|---|---|
|
||||
| `cUSDC` | `cUSDC -> bridge -> cWUSDC -> USDC -> provider` |
|
||||
| `cUSDT` | `cUSDT -> bridge -> cWUSDT -> cWUSDC -> USDC -> provider` |
|
||||
| `LP:cUSDT/cUSDC` | `withdraw -> cUSDT/cUSDC -> bridge -> normalize -> USDC -> provider` |
|
||||
| `cWUSDC` | `cWUSDC -> USDC -> provider` |
|
||||
| `cWUSDT` | `cWUSDT -> cWUSDC -> USDC -> provider` |
|
||||
|
||||
### Mainnet Funding Requirement
|
||||
|
||||
The deployer wallet should be treated as funded across both Mainnet wrapped settlement rails:
|
||||
|
||||
- `cWUSDC`
|
||||
- `cWUSDT`
|
||||
|
||||
This is not a contradiction of the `USDC`-first settlement policy. It is the funding requirement that keeps both the primary normalization rail and the `cUSDT` support rail operational.
|
||||
|
||||
### Default Settlement Preference
|
||||
|
||||
1. `USDC`
|
||||
2. `USDT` only if the provider explicitly prefers it and the route is operationally superior
|
||||
|
||||
### Current Constraint
|
||||
|
||||
Without a provider, the system remains terminally concentrated on a shallow public sink. With a provider, the on-chain Mainnet leg becomes a bounded normalization handshake, not the final execution destination.
|
||||
|
||||
## 5. How We Present Volume
|
||||
|
||||
We should present volume in terms of **repeatable flow bands**, not only maximum theoretical inventory.
|
||||
|
||||
### Recommended Provider-Facing Framing
|
||||
|
||||
| Layer | How To Describe It |
|
||||
|---|---|
|
||||
| Immediate inventory | Mainnet normalized-or-near-normalized stable-adjacent assets available for rapid handoff |
|
||||
| Same-day corridor inventory | Chain 138 feeder assets that can be bridged and normalized into `USDC` within the same operational day |
|
||||
| Execution target | Repeatable institutional settlement flow rather than one-off retail-sized swaps |
|
||||
| Growth profile | Initial controlled packets, then increasing clip size after successful canaries and reconciliation |
|
||||
|
||||
### What Not To Do
|
||||
|
||||
- Do not lead with nominal long-tail balances that do not yet have promoted terminal exits
|
||||
- Do not imply that public DEX depth is the true execution capacity
|
||||
- Do not promise production volume before the provider rail is fully enabled
|
||||
|
||||
## 6. How We Drive Traffic / Volume
|
||||
|
||||
| Stage | Objective | Provider Narrative |
|
||||
|---|---|---|
|
||||
| Stage 1 | Prove clean onboarding and settlement | “We can deliver clean `USDC` packets with low operational friction.” |
|
||||
| Stage 2 | Prove repeatable canaries | “We can repeat successful flows with consistent routing and reconciliation.” |
|
||||
| Stage 3 | Increase packet size | “We can move from small clips into desk-appropriate institutional blocks.” |
|
||||
| Stage 4 | Increase cadence | “We can supply repeatable same-day flow, not one-off opportunistic transactions.” |
|
||||
| Stage 5 | Expand provider trust | “We can route more of the corridor inventory into the provider because the process is stable.” |
|
||||
|
||||
### Traffic-Driving Rules
|
||||
|
||||
1. Standardize flow into one settlement asset.
|
||||
2. Use predictable packet sizes.
|
||||
3. Keep reconciliation clean.
|
||||
4. Minimize failed deposits and exception handling.
|
||||
5. Start with canaries and graduate by evidence.
|
||||
6. Expand cadence before claiming unlimited size.
|
||||
|
||||
## 7. First 30-Day Volume Ramp Plan
|
||||
|
||||
### Days 1–7: Onboarding + Zero-Error Setup
|
||||
|
||||
- complete provider onboarding
|
||||
- confirm accepted asset, chain, and deposit instructions
|
||||
- validate operator contacts and exception path
|
||||
- confirm packet policy internally
|
||||
|
||||
### Days 8–14: Canary Execution
|
||||
|
||||
- send smallest operationally meaningful packets
|
||||
- verify:
|
||||
- normalization correctness
|
||||
- provider receipt
|
||||
- reconciliation speed
|
||||
- operator handoff discipline
|
||||
|
||||
### Days 15–21: Controlled Repetition
|
||||
|
||||
- repeat successful clips
|
||||
- keep the same asset and route shape
|
||||
- avoid unnecessary route experimentation
|
||||
|
||||
### Days 22–30: Graduated Ramp
|
||||
|
||||
- widen packet sizes only after zero-error repetition
|
||||
- establish an initial weekly or daily cadence
|
||||
- document observed provider preferences and execution quality
|
||||
|
||||
## 8. Provider Questions We Should Be Ready To Answer
|
||||
|
||||
| Question | Prepared Answer Shape |
|
||||
|---|---|
|
||||
| What asset will you settle in? | Primarily `USDC` |
|
||||
| What chain will you deliver on? | Ethereum Mainnet unless another provider-accepted route is cleaner |
|
||||
| What is your feeder system? | Chain 138 `cUSDC`, `cUSDT`, and stable LP unwind paths, with Mainnet `cW*` immediate assets |
|
||||
| What funding assets do you maintain on Mainnet? | Both `cWUSDC` and `cWUSDT`, with `USDC` as the preferred final settlement target |
|
||||
| Why not execute fully on-chain? | Public normalization pools are shallow; we use on-chain only for bounded preparation before institutional execution |
|
||||
| What size do you expect? | Start with controlled packets, then graduate based on successful settlement and reconciliation |
|
||||
| How do you control source assets? | Treasury-controlled wallets and documented corridor model |
|
||||
| How do you manage risk? | Bounded normalization usage, packet limits, settlement preference, and operator-controlled promotion gates |
|
||||
|
||||
## 9. What We Should Ask The Provider Directly
|
||||
|
||||
1. Which deposit assets do you prefer for repeat institutional flow?
|
||||
2. Which chain(s) are best operationally for your settlement workflow?
|
||||
3. At what clip sizes do you prefer OTC desk handling versus exchange-book handling?
|
||||
4. What packet cadence do you prefer from a new flow source?
|
||||
5. What is your escalation process for failed or delayed deposits?
|
||||
6. Do you support pre-negotiated RFQ / desk routing for normalized `USDC` flow?
|
||||
7. What reconciliation data will you provide back to our operators?
|
||||
|
||||
## 10. Strict Bottom Line
|
||||
|
||||
The correct provider-facing story is not:
|
||||
|
||||
`we have many assets and many routes`
|
||||
|
||||
It is:
|
||||
|
||||
`we control a large same-day corridor feeder system, we normalize into clean settlement assets, and we want a reliable institutional execution partner for repeatable flow`
|
||||
@@ -40,7 +40,7 @@ This checklist tracks **proxmox-repo automation** and **sibling repos** (`../com
|
||||
| RPC `192.168.11.221:8545` / `192.168.11.211:8545` | HTTP 201 |
|
||||
| SSH `root@192.168.11.10` / `.11` | OK (BatchMode) |
|
||||
| `./scripts/run-completable-tasks-from-anywhere.sh` | Exit 0 |
|
||||
| `./scripts/verify/check-contracts-on-chain-138.sh` | 61/61 present (per current script address list) |
|
||||
| `./scripts/verify/check-contracts-on-chain-138.sh` | 59/59 present |
|
||||
| `E2E_ACCEPT_502_INTERNAL=1 ./scripts/verify/verify-end-to-end-routing.sh` | 37 domains, 0 failed; report under `docs/04-configuration/verification-evidence/e2e-verification-20260325_165153/` |
|
||||
| `https://phoenix.sankofa.nexus/`, `https://sankofa.nexus/` | HTTP 200 |
|
||||
| `http://192.168.11.50:4000/health`, `:51:3000`, `:52:8080/health/ready` | No HTTP response from operator host (hosts ping; services may be down, firewalled, or not bound) — **re-check on Proxmox / in-container** |
|
||||
|
||||
@@ -2,14 +2,12 @@
|
||||
|
||||
> Historical note (2026-03-26): this status tracker includes earlier PMM-address snapshots. The current canonical Chain 138 PMM stack is `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`.
|
||||
|
||||
**Last Updated:** 2026-04-19
|
||||
**Last Updated:** 2026-03-04
|
||||
**Purpose:** Ordered list of remaining deployments to achieve **maximum effective execution across all networks** (13-chain hub model: Chain 138 + 12 edge/alt). Use after [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST](../00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) and [DEPLOYMENT_ORDER_OF_OPERATIONS](DEPLOYMENT_ORDER_OF_OPERATIONS.md).
|
||||
|
||||
> Sync note (2026-04-19): this file is now aligned to the current generated deployment graph and audit output. Older sections below still preserve historical run context, but current truth for public-chain `cW*` deployment should be cross-checked against `cross-chain-pmm-lps/config/deployment-status.json`, `reports/status/cw-mesh-deployment-matrix-latest.json`, and `reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json`. See `reports/status/MULTI_NETWORK_DEPLOYMENT_AUDIT_20260419.md`.
|
||||
**Routing context:** [routing-matrix-13x13.json](../../smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json) — 138↔Celo (42220) **B/SBS** (CCIP bridges deployed 2026-03-04); 138↔Wemix (1111) **Tabled** (see below). Full coverage = all 13 chains with bridge + liquidity where designed.
|
||||
|
||||
**Routing context:** [routing-matrix-13x13.json](../../smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json) — 138↔Celo (42220) remains in the completed set. Current repo-backed Wemix status is best described as deployed-and-wired but still incomplete until LINK funding and a proof transfer are recorded. Full coverage = all 13 chains with bridge + liquidity where designed.
|
||||
|
||||
**Wemix (1111) narrowed blocker:** The deployer now has native WEMIX gas and the WEMIX bridge contracts are deployed and destination-wired. The remaining blocker is **LINK funding plus a successful proof transfer** on `1111`. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md) and [CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md](CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md).
|
||||
**Wemix (1111) tabled:** There is no in-repo route (aggregator/DEX integration) to swap ETH, BNB, or Polygon to WEMIX. Deployer needs ~0.4 WEMIX for gas to deploy CCIP bridges on Wemix. Until an automated route exists or WEMIX is acquired manually (e.g. [SwapSpace](https://swapspace.co/exchange-pairs/wemix-bnb), [ChangeNOW](https://changenow.io/currencies/wemix-main/polygon-matic)), **all Wemix network deployments are tabled**. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md).
|
||||
|
||||
---
|
||||
|
||||
@@ -20,8 +18,8 @@
|
||||
| A | A.1 Mint cUSDT/cUSDC (138) | ✅ Done (2026-03-04) | Minted via `mint-for-liquidity.sh` using `GAS_PRICE_138=500000000000`; cUSDT/cUSDC mints confirmed at blocks 2551250/2551251/2551253/2551254. |
|
||||
| A | A.2 Add liquidity PMM (138) | ⚠️ Historical snapshot (2026-03-04) | Earlier run referenced cUSDT/cUSDC pool `0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8` on a superseded stack; use [LIQUIDITY_POOLS_MASTER_MAP.md](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md) for current live pools. |
|
||||
| B | B.1 Celo CCIP bridges | ✅ Done | Deployed; 0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04 (WETH9), 0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08 (WETH10); .env updated; complete-config Celo→138 OK. |
|
||||
| B | **B.2a Add Cronos (25)** | ⚠️ Historical line item | Keep only as historical context. Current generated deployment artifacts show Cronos in the active public-chain deployment set and in the complete wave-1 wrapped-mesh set. |
|
||||
| B | B.2b Wemix CCIP bridges | ⏳ Funding/proof pending | Bridge contracts are deployed and destination wiring exists. Remaining work: fund LINK on `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX`, then run a small `138 -> 1111` proof transfer. |
|
||||
| B | **B.2a Add Cronos (25)** | ⏳ Pending | Fund deployer with ~15 CRO ([acquire-cro-and-wemix-gas.sh](../../scripts/deployment/acquire-cro-and-wemix-gas.sh)); set CRONOS_RPC, CCIP_ROUTER_CRONOS, WETH9_CRONOS, WETH10_CRONOS in .env; run `deploy-bridges-config-ready-chains.sh cronos` then `complete-config-ready-chains.sh`. |
|
||||
| B | B.2b Wemix CCIP bridges | 📋 Tabled | No route to acquire WEMIX from ETH/BNB/POLY in-repo; tabled until route exists or manual acquisition. Fund ~0.4 WEMIX ([acquire-cro-and-wemix-gas.sh](../../scripts/deployment/acquire-cro-and-wemix-gas.sh)); then `deploy-bridges-config-ready-chains.sh wemix` + complete-config. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). |
|
||||
| B | **Gnosis CCIP bridges** | ✅ Done (2026-03-04) | Deployed: WETH9 `0x4ab39b5BaB7b463435209A9039bd40Cf241F5a82`, WETH10 `0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44`; .env updated. |
|
||||
| B | B.3 Fund CCIP with LINK | ⏳ Blocked | `scripts/deployment/fund-ccip-bridges-with-link.sh` run (2026-03-04): many lanes failing with insufficient LINK or gas, Chain 138 Invalid params; top up LINK balances and gas on each chain before retry. |
|
||||
| C | C.1–C.2 cW* + edge pools | 📋 Runbook | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md). |
|
||||
@@ -50,9 +48,9 @@
|
||||
|------|--------|
|
||||
| Chain 138 core + PMM | 59/59 contracts (check-contracts-on-chain-138.sh); DODOPMMIntegration + 3 pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) created; DODOPMMProvider deployed. |
|
||||
| Chain 138 liquidity | **Re-verify required** — prior run reported cUSDT/cUSDC liquidity add; this checklist previously showed zero liquidity. Treat liquidity state as unknown until reconfirmed on-chain. |
|
||||
| CCIP 138 → 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220 (Celo)** | Configured/live in current repo-backed status. Wemix (1111) is still the unresolved lane. |
|
||||
| CCIP 138 → 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220 (Celo)** | Configured (B/SBS). Celo CCIP bridges deployed 2026-03-04; Gnosis, Cronos config-ready; Wemix (1111) **Tabled** (no ETH/BNB/POLY→WEMIX route; see [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md)). |
|
||||
| Alltra 138 ↔ 651940 | ALT path live. |
|
||||
| cW* on public chains | No longer design-only. Current machine-readable deployment artifacts show active `cW*` inventory on `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`; `1111` remains deferred. |
|
||||
| cW* on public chains | Addresses in .env / design; **deployment-status.json empty** — no cW* pool addresses. |
|
||||
| LINK for CCIP | Fund bridges per lane so cross-chain messages execute. |
|
||||
|
||||
---
|
||||
@@ -73,30 +71,30 @@
|
||||
|
||||
## Phase B — Bridge coverage (all 13 chains)
|
||||
|
||||
**Goal:** Keep only the truly incomplete bridge lanes and fee-funding gaps in view. Celo is already in the completed public-chain set; Wemix remains the unresolved lane in current repo-backed status.
|
||||
**Goal:** Turn **TBD** into **B/SBS** for Celo and Wemix; ensure LINK-funded lanes so routes execute.
|
||||
|
||||
| Step | Action | Ref |
|
||||
|------|--------|-----|
|
||||
| B.1 | **Celo (42220):** Treat as completed for deployment coverage. Remaining work, if any, is verification/publication hygiene rather than initial deployment. | [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) |
|
||||
| B.1 | **Celo (42220):** Deploy CCIP WETH9/WETH10 bridges on Celo; add 138↔Celo destinations on both sides; fund bridges with LINK. | [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md). Preflight: `./scripts/deployment/preflight-config-ready-chains.sh celo`. Deploy: `./scripts/deployment/deploy-bridges-config-ready-chains.sh celo`; then `complete-config-ready-chains.sh`. |
|
||||
| B.2 | **Wemix (1111):** Same as B.1 for Wemix. Confirm WETH/USDT/USDC addresses on scan.wemix.com; set in token-mapping and .env. | Same runbook; `deploy-bridges-config-ready-chains.sh wemix`. [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST](../00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) §2.2 (Wemix tokens). |
|
||||
| B.3 | **Fund all CCIP bridges with LINK** (138 and each destination). Run `./scripts/deployment/fund-ccip-bridges-with-link.sh` (dry-run first). | [CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING](../../smom-dbis-138/docs/deployment/CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING.md) |
|
||||
| B.4 | **(Optional)** LINK support on Mainnet relay for LINK transfers. | [RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK](../07-ccip/RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md) |
|
||||
|
||||
**Outcome:** 138↔1, 56, 137, 10, 42161, 43114, 8453, 100, 25, and **42220** are in the current completed/active set. **1111** is still not there in the repo-backed graph. 138↔651940 remains ALT.
|
||||
**Outcome:** 138↔1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220**, **1111** all B/SBS; 138↔651940 remains ALT. Routing matrix TBD cells removed.
|
||||
|
||||
---
|
||||
|
||||
## Phase C — Public-chain cW* and edge pools
|
||||
|
||||
**Goal:** Track the remaining gaps after substantial public-chain `cW*` rollout already landed.
|
||||
**Goal:** Enable swap-bridge-swap and arbitrage on **public chains** (cW* tokens + DODO/Uniswap edge pools per pool-matrix).
|
||||
|
||||
| Step | Action | Ref |
|
||||
|------|--------|-----|
|
||||
| C.1 | **Remaining token gaps:** focus on chains still deferred or undocumented, with Wemix first. The active set already includes `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md) §3 |
|
||||
| C.2 | **Remaining pool gaps:** do not assume public-chain edge pools are globally missing. The current generated artifacts show meaningful PMM and wrapped-mesh rollout already present; work remaining is now per-chain/per-venue and should be taken from the latest mesh matrix and phase-completion artifacts. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [LIQUIDITY_POOLS_MASTER_MAP](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md) § Public-chain cW* |
|
||||
| C.1 | **Deploy or bridge cW* tokens** per chain (1, 56, 137, 10, 42161, 8453, 43114, 100, 25, 42220, 1111). Use cross-chain-pmm-lps token-map and deployment recipe; record addresses in deployment-status.json and .env. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md) §3 |
|
||||
| C.2 | **Create and fund PMM edge pools** (cW*/USDC, cW*/USDT, etc.) per [pool-matrix.json](../../cross-chain-pmm-lps/config/pool-matrix.json). Populate deployment-status.json with pool addresses. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [LIQUIDITY_POOLS_MASTER_MAP](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md) § Public-chain cW* |
|
||||
| C.3 | **Stabilization bot / peg bands** (optional): Run bot and peg-band config from cross-chain-pmm-lps for cW* peg maintenance. | [cross-chain-pmm-lps/README.md](../../cross-chain-pmm-lps/README.md) |
|
||||
|
||||
**Outcome:** The active public-chain set is already materially populated; remaining work is to close the deferred or contradictory lanes and normalize proof of completion.
|
||||
**Outcome:** Each public chain has cW* and edge pools so SBS and arbitrage can execute on both 138 and edge.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
## On-chain verification (Chain 138)
|
||||
|
||||
**Last run (2026-03-01):** `./scripts/verify/check-contracts-on-chain-138.sh` (use Core RPC URL or run from LAN).
|
||||
**Result:** **61 present, 0 missing** (61 addresses per check-contracts-on-chain-138.sh; list expanded through 2026-03-06 and later). TransactionMirror: `0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc`. Current canonical DODO cUSDT/cUSDC pool: `0xff8d3b8fDF7B112759F076B69f4271D4209C0849`. **DeployCompliantFiatTokens** was run 2026-02-27 (10 tokens: cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT); see [CHAIN138_TOKEN_ADDRESSES](../11-references/CHAIN138_TOKEN_ADDRESSES.md).
|
||||
**Result:** **59 present, 0 missing** (59 addresses per check-contracts-on-chain-138.sh; list expanded 2026-03-06). TransactionMirror: `0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc`. Current canonical DODO cUSDT/cUSDC pool: `0xff8d3b8fDF7B112759F076B69f4271D4209C0849`. **DeployCompliantFiatTokens** was run 2026-02-27 (10 tokens: cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT); see [CHAIN138_TOKEN_ADDRESSES](../11-references/CHAIN138_TOKEN_ADDRESSES.md).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
# Source To CEX Execution Plan
|
||||
|
||||
- Generated: `2026-04-17T15:11:49Z`
|
||||
- Strategy frame: Chain 138 inventory -> canonical bridge -> Mainnet normalization -> CEX handoff
|
||||
- Mainnet funding posture: `dual-rail` via `cWUSDC, cWUSDT`
|
||||
|
||||
## Operator Table
|
||||
|
||||
| Source Asset | Bridge Output | Preferred Normalization | CEX Deposit Asset | Fallback Path |
|
||||
|---|---|---|---|---|
|
||||
| `cUSDC` | cWUSDC on Ethereum Mainnet | cWUSDC -> USDC | `USDC` | bridge cUSDC -> cWUSDC, then use best available Mainnet USDC normalization route with capped public-pool usage |
|
||||
| `cUSDT` | cWUSDT on Ethereum Mainnet | cWUSDT -> cWUSDC -> USDC | `USDC` | use direct cWUSDT -> USDT only for tiny packets or explicit override; otherwise route through USDC normalization |
|
||||
| `LP:cUSDT/cUSDC` | cUSDT and cUSDC after LP withdrawal | withdraw LP -> prefer cUSDC feeder -> bridge -> cWUSDC -> USDC | `USDC` | withdraw LP, split outputs by best feeder path, avoid forcing whole ticket through direct USDT sink |
|
||||
| `cWUSDC` | none | cWUSDC -> USDC | `USDC` | split size, cap pool usage, treat on-chain conversion strictly as deposit preparation |
|
||||
| `cWUSDT` | none | cWUSDT -> cWUSDC -> USDC | `USDC` | direct USDT path is last-resort and tiny; practical size should flow through USDC-normalization |
|
||||
|
||||
## Notes
|
||||
|
||||
- `cUSDC` is the cleanest same-day corridor feeder.
|
||||
- `cUSDT` should usually normalize through USDC until direct USDT depth improves.
|
||||
- Stable LP claims are feeder-preparation assets.
|
||||
- Mainnet `cWUSDC` and `cWUSDT` are immediate in mechanics, but not deep enough to absorb large tickets on-chain.
|
||||
@@ -1,24 +0,0 @@
|
||||
# Source To CEX Production Readiness
|
||||
|
||||
- Generated: `2026-04-17T15:11:49Z`
|
||||
- Ready for immediate live production: `False`
|
||||
- Policy production enabled: `False`
|
||||
- Mainnet funding posture: `dual-rail` via `cWUSDC, cWUSDT`
|
||||
|
||||
## Blocking Issues
|
||||
|
||||
- no real off-chain sink is currently included in baseline scope
|
||||
- source-to-cex production policy remains disabled
|
||||
|
||||
## Off-Chain Sink Validation
|
||||
|
||||
- Validation ready: `False`
|
||||
- Included sink count: `0`
|
||||
|
||||
## Next Live Inputs Required
|
||||
|
||||
- at least one real off-chain sink row with include_in_baseline=true
|
||||
- enabled_for_production_handoff=true on the real sink
|
||||
- real deposit address and chain for the chosen sink
|
||||
- operational_status=enabled for the chosen sink
|
||||
- operator decision to set production_enabled=true after live canaries succeed
|
||||
@@ -1,3 +0,0 @@
|
||||
# Terminal Liquidity Diversification Build Program
|
||||
|
||||
This repo-native program treats terminal-liquidity diversification as the next operator priority: deepen Mainnet USDC normalization, add real off-chain sinks, and only then promote broader same-day exits.
|
||||
@@ -1,23 +1,22 @@
|
||||
# Wemix (1111) deployments — tabled
|
||||
|
||||
**Last Updated:** 2026-03-06
|
||||
**Status:** Historical gas-blocking memo. The deployer now has native WEMIX gas and the bridge contracts are deployed; the remaining blocker is LINK funding plus a successful proof transfer on `1111`.
|
||||
**Status:** All Wemix network deployments (CCIP bridges, config, LINK funding on 1111) are **tabled** until the deployer can acquire WEMIX for gas.
|
||||
|
||||
---
|
||||
|
||||
## Reason
|
||||
|
||||
- This document recorded the earlier state where the deployer lacked native WEMIX gas.
|
||||
- Current operator state has native WEMIX gas available and deployed `CCIPWETH9_BRIDGE_WEMIX` / `CCIPWETH10_BRIDGE_WEMIX`.
|
||||
- The remaining live blocker is that the WEMIX bridge contracts still hold `0 LINK`, so CCIP execution cannot be promoted to live yet.
|
||||
- Deployer needs **~0.4 WEMIX** (native gas) on chain 1111 to deploy and configure CCIP bridges.
|
||||
- There is **no in-repo route** (aggregator/DEX integration or script) to swap **ETH**, **BNB**, or **Polygon (POL)** to WEMIX.
|
||||
- [TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER](../11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md) lists Wemix as “Bridge/DEX” only — i.e. manual acquisition.
|
||||
|
||||
---
|
||||
|
||||
## Options to un-table
|
||||
|
||||
1. **Fund LINK on the deployed bridges:** top up `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` with enough LINK for operational CCIP fees.
|
||||
2. **Prove the lane:** run a small `138 -> 1111` bridge transfer and record the receipt as the promotion artifact.
|
||||
3. **Only if gas drops again:** use a third-party aggregator (e.g. [SwapSpace](https://swapspace.co/exchange-pairs/wemix-bnb), [ChangeNOW](https://changenow.io/currencies/wemix-main/polygon-matic)) to top up native WEMIX.
|
||||
1. **Manual acquisition:** Use a third-party aggregator (e.g. [SwapSpace](https://swapspace.co/exchange-pairs/wemix-bnb), [ChangeNOW](https://changenow.io/currencies/wemix-main/polygon-matic)) to swap ETH/BNB/POL to WEMIX and send to the deployer address on 1111. Then run `deploy-bridges-config-ready-chains.sh wemix` and complete-config.
|
||||
2. **In-repo route:** Implement or integrate an aggregator/DEX route (e.g. LiFi, Jumper, or chain 1111 DEX) that can swap ETH/BNB/POLY → WEMIX and credit the deployer; then document and run the same deploy/config steps. Placeholder script: `scripts/deployment/wemix-acquire-via-lifi.js` (outputs manual instructions and deployer address; extend when LiFi/Jumper support 1111).
|
||||
|
||||
**Deployer gas auto-route:** The orchestrator `./scripts/deployment/deployer-gas-auto-route.sh` includes Wemix (1111): when run, it prints manual instructions and links for WEMIX acquisition. See [DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md](DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md).
|
||||
|
||||
@@ -25,9 +24,9 @@
|
||||
|
||||
## What remains tabled
|
||||
|
||||
- LINK funding on the deployed WEMIX bridges.
|
||||
- A successful `138 -> 1111` bridge proof transfer.
|
||||
- Any Phase C/D work that depends on a fully live `1111` lane (cW* rollout or edge pools on Wemix).
|
||||
- B.2 Wemix CCIP bridges (`deploy-bridges-config-ready-chains.sh wemix`, complete-config 138↔1111).
|
||||
- Any Phase C/D work that depends on Wemix (cW* or edge pools on 1111).
|
||||
- Wemix token verification and production use until bridges are deployed.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
# WEMIX Bridge Verification Status
|
||||
|
||||
**Last Updated:** 2026-04-20
|
||||
|
||||
## Current Repo-Backed State
|
||||
|
||||
The current repo-backed status for WEMIX `1111` is still **not fully live**, but the lane is farther along than the older checklist snapshot suggested.
|
||||
|
||||
The strongest current evidence in this checkout says:
|
||||
|
||||
- `CCIPWETH9_BRIDGE_WEMIX=0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04`
|
||||
- `CCIPWETH10_BRIDGE_WEMIX=0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08`
|
||||
- both addresses return deployed bytecode on `https://api.wemix.com`
|
||||
- Chain 138 WETH9/WETH10 bridges already include the Wemix selector `5142893604156789321`
|
||||
- the Wemix WETH bridge contracts report Chain 138 as a configured destination
|
||||
- the remaining gap depends on activation scope:
|
||||
- for **inbound-only `138 -> 1111`**, the missing proof artifact is the main blocker
|
||||
- for **full bidirectional activation**, outbound fee coverage on the WEMIX-side bridges is still missing and both WEMIX bridge contracts currently hold `0 LINK`
|
||||
|
||||
What is still not true yet:
|
||||
|
||||
- `bridgeAvailable` is not promoted to `true` in the generated deployment graph
|
||||
- no machine-generated inventory yet treats the Wemix lane as live
|
||||
- there is not yet a repo-backed successful bridge test receipt for `138 -> 1111`
|
||||
|
||||
Primary references:
|
||||
|
||||
- `cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `reports/status/cw-mesh-deployment-matrix-latest.json`
|
||||
- `docs/03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md`
|
||||
- `reports/status/MULTI_NETWORK_DEPLOYMENT_AUDIT_20260419.md`
|
||||
|
||||
## Important Contradiction
|
||||
|
||||
Older checklist snapshots in this repo still show the WEMIX bridge env vars as unset and treat the lane as purely undeployed.
|
||||
|
||||
That is no longer accurate for the current operator environment. The more precise canonical statement is:
|
||||
|
||||
- the WEMIX bridge contracts are deployed
|
||||
- the lane is wired in both directions
|
||||
- the lane is still **not promotable to the repo's current full-bidirectional live standard** because outbound fee funding and a successful bridge test are still missing
|
||||
|
||||
## Activation Modes
|
||||
|
||||
### Inbound-only activation on WEMIX
|
||||
|
||||
Use this mode when the immediate target is to make `138 -> 1111` receipt operational.
|
||||
|
||||
Required:
|
||||
|
||||
1. `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` are deployed.
|
||||
2. The Chain 138 bridges are configured to send to the WEMIX bridges.
|
||||
3. The WEMIX bridges are configured to recognize Chain 138 as a valid peer.
|
||||
4. A successful `138 -> 1111` proof transfer is recorded.
|
||||
|
||||
Not required for receive-only activation:
|
||||
|
||||
- LINK balance on the WEMIX bridge contracts
|
||||
- WEMIX-side outbound CCIP fee funding
|
||||
|
||||
Reason:
|
||||
|
||||
- In the current bridge implementation, CCIP fees are paid on `sendCrossChain(...)`.
|
||||
- `ccipReceive(...)` on the WEMIX side validates and releases bridged assets but does not pay a fee.
|
||||
|
||||
### Full bidirectional activation on WEMIX
|
||||
|
||||
Use this mode when `1111 -> 138` or `1111 -> other-chain` sending must also be live.
|
||||
|
||||
Required in addition to the inbound-only conditions:
|
||||
|
||||
1. The WEMIX bridges can pay outbound CCIP fees.
|
||||
2. `CCIPWETH9Bridge` may use LINK or native WEMIX, because `feeToken` can be updated to `address(0)`.
|
||||
3. `CCIPWETH10Bridge` still requires LINK, because its constructor and `updateFeeToken(...)` both forbid `address(0)`.
|
||||
4. Successful outbound proof transfer(s) are recorded from `1111`.
|
||||
|
||||
## What Would Change This Status
|
||||
|
||||
WEMIX can move to a verified-live state only after all of the following are repo-backed and consistent for the activation mode being promoted:
|
||||
|
||||
1. `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` remain recorded in the canonical env surface.
|
||||
2. the operator checklist, routing docs, and generated inventory all agree on the same WEMIX bridge addresses and activation scope.
|
||||
3. `cross-chain-pmm-lps/config/deployment-status.json` promotes `1111` out of non-live state and sets `bridgeAvailable=true`.
|
||||
4. a successful proof transfer is recorded for the promoted mode.
|
||||
5. if full bidirectional activation is the target, the WEMIX bridge contracts have outbound fee coverage:
|
||||
- `WETH9`: LINK or native WEMIX
|
||||
- `WETH10`: LINK
|
||||
|
||||
## Verification Helper
|
||||
|
||||
The repo-native verification helper still exists:
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/verify-wemix-bridges.sh
|
||||
```
|
||||
|
||||
But this should only be used after the deployment addresses themselves are first reconciled.
|
||||
|
||||
Required env remains:
|
||||
|
||||
- `WEMIXSCAN_API_KEY`
|
||||
- `WEMIX_RPC`
|
||||
- `CCIPWETH9_BRIDGE_WEMIX`
|
||||
- `CCIPWETH10_BRIDGE_WEMIX`
|
||||
- `CCIP_ROUTER_WEMIX`
|
||||
- `WETH9_WEMIX`
|
||||
- `WETH10_WEMIX`
|
||||
- `LINK_TOKEN_WEMIX`
|
||||
|
||||
## Build Assumption
|
||||
|
||||
If and when WEMIX verification is attempted, the repo documents the required build profile as:
|
||||
|
||||
- Solidity `0.8.20`
|
||||
- optimizer enabled
|
||||
- optimizer runs `200`
|
||||
- `viaIR=true`
|
||||
- `evmVersion=paris`
|
||||
@@ -1,4 +1,4 @@
|
||||
# Add Chain 138 (DeFi Oracle Meta Mainnet) to Ledger Live
|
||||
# Add Chain 138 (Defi Oracle Meta Mainnet) to Ledger Live
|
||||
|
||||
**Last Updated:** 2026-02-13
|
||||
**Status:** Action plan and submission guide
|
||||
@@ -16,9 +16,9 @@ The form has been submitted. Next: await Ledger’s response and follow their pr
|
||||
**Copy-paste block:**
|
||||
|
||||
```
|
||||
We would like to add DeFi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet.
|
||||
We would like to add Defi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet.
|
||||
|
||||
- Chain name: DeFi Oracle Meta Mainnet
|
||||
- Chain name: Defi Oracle Meta Mainnet
|
||||
- Chain ID: 138 (0x8a)
|
||||
- EVM-compatible (EIP-155, EIP-1559), standard derivation 44'/60'
|
||||
- Public RPCs and block explorer are live; chain is listed on Chainlist (chainlist.org/chain/138).
|
||||
@@ -37,7 +37,7 @@ Preferred contact: [your email/Telegram]
|
||||
|
||||
## Overview
|
||||
|
||||
Ledger Live does not support user-added custom EVM networks. To have **DeFi Oracle Meta Mainnet (Chain ID 138)** appear and work in Ledger Live (desktop/mobile), the chain must be added to Ledger’s supported list via their **official blockchain integration process**.
|
||||
Ledger Live does not support user-added custom EVM networks. To have **Defi Oracle Meta Mainnet (Chain ID 138)** appear and work in Ledger Live (desktop/mobile), the chain must be added to Ledger’s supported list via their **official blockchain integration process**.
|
||||
|
||||
This doc gives the steps and materials to request and support that integration.
|
||||
|
||||
@@ -52,12 +52,12 @@ This doc gives the steps and materials to request and support that integration.
|
||||
1. **Open the Ledger blockchain integration request form:**
|
||||
**https://tally.so/r/mORpv8**
|
||||
|
||||
2. **Fill in the form** (e.g. “What are you looking from Ledger?”) with a short request to add **DeFi Oracle Meta Mainnet (Chain ID 138)** to Ledger Live. Suggested text:
|
||||
2. **Fill in the form** (e.g. “What are you looking from Ledger?”) with a short request to add **Defi Oracle Meta Mainnet (Chain ID 138)** to Ledger Live. Suggested text:
|
||||
|
||||
```
|
||||
We would like to add DeFi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet.
|
||||
We would like to add Defi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet.
|
||||
|
||||
- Chain name: DeFi Oracle Meta Mainnet
|
||||
- Chain name: Defi Oracle Meta Mainnet
|
||||
- Chain ID: 138 (0x8a)
|
||||
- EVM-compatible (EIP-155, EIP-1559), standard derivation 44'/60'
|
||||
- Public RPCs and block explorer are live; chain is listed on Chainlist (chainlist.org/chain/138).
|
||||
@@ -103,7 +103,7 @@ Our canonical chain spec is in this repo at `pr-workspace/chains/_data/chains/ei
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| **name** | DeFi Oracle Meta Mainnet |
|
||||
| **name** | Defi Oracle Meta Mainnet |
|
||||
| **chainId** | 138 |
|
||||
| **networkId** | 1 |
|
||||
| **shortName** | dfio-meta-main |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Add Chain 138 (DeFi Oracle Meta Mainnet) to Trust Wallet
|
||||
# Add Chain 138 (Defi Oracle Meta Mainnet) to Trust Wallet
|
||||
|
||||
**Last Updated:** 2026-04-17
|
||||
**Status:** User workaround available; official support via Wallet Core PR; token/logo submissions use Assets App; new chain business workflow may still require Trust review outside the repo path
|
||||
**Last Updated:** 2026-02-12
|
||||
**Status:** User workaround available; official support via Wallet Core PR
|
||||
|
||||
---
|
||||
|
||||
@@ -23,14 +23,14 @@
|
||||
|
||||
## Option 1: Users add Chain 138 manually (available now)
|
||||
|
||||
Trust Wallet allows adding custom EVM networks in the app. Because **Chain 138 is listed on Chainlist**, users can add DeFi Oracle Meta Mainnet without waiting for official support.
|
||||
Trust Wallet allows adding custom EVM networks in the app. Because **Chain 138 is listed on Chainlist**, users can add Defi Oracle Meta Mainnet without waiting for official support.
|
||||
|
||||
### Steps for users
|
||||
|
||||
1. **Get network info:** Open [chainlist.org/chain/138](https://chainlist.org/chain/138) and pick an RPC with a green status.
|
||||
2. **In Trust Wallet:** Tap the **manage assets** icon → **+** → switch to the **Network** tab.
|
||||
3. **Enter network details:** Choose **EVM**, then fill in (or paste from Chainlist):
|
||||
- **Network name:** DeFi Oracle Meta Mainnet
|
||||
- **Network name:** Defi Oracle Meta Mainnet
|
||||
- **RPC URL:** e.g. `https://rpc-http-pub.d-bis.org` or `https://rpc.d-bis.org`
|
||||
- **Chain ID:** 138
|
||||
- **Symbol:** ETH
|
||||
@@ -47,8 +47,6 @@ Trust Wallet allows adding custom EVM networks in the app. Because **Chain 138 i
|
||||
|
||||
To have Chain 138 appear in Trust Wallet’s **built-in** chain list (no manual add), the chain must be added to **Trust Wallet Core** via a PR.
|
||||
|
||||
Important: Trust’s current asset-listing docs separate **new token/logo submissions** from **new chain requests**. The token/logo path goes through the Assets App, while new-chain review may still involve their Business Development / partner process even if Wallet Core code changes are technically prepared.
|
||||
|
||||
### Prerequisites (for Chain 138)
|
||||
|
||||
| Item | Value |
|
||||
@@ -65,7 +63,7 @@ Important: Trust’s current asset-listing docs separate **new token/logo submis
|
||||
```json
|
||||
{
|
||||
"id": "dfiometa",
|
||||
"name": "DeFi Oracle Meta Mainnet",
|
||||
"name": "Defi Oracle Meta Mainnet",
|
||||
"coinId": 10000138,
|
||||
"symbol": "ETH",
|
||||
"decimals": 18,
|
||||
@@ -113,9 +111,9 @@ When contacting Trust or writing the PR description, you can use:
|
||||
**Copy-paste block:**
|
||||
|
||||
```
|
||||
DeFi Oracle Meta Mainnet (Chain ID 138) — EVM-compatible chain for Trust Wallet support.
|
||||
Defi Oracle Meta Mainnet (Chain ID 138) — EVM-compatible chain for Trust Wallet support.
|
||||
|
||||
- Chain name: DeFi Oracle Meta Mainnet
|
||||
- Chain name: Defi Oracle Meta Mainnet
|
||||
- Chain ID: 138 (0x8a)
|
||||
- Derivation: m/44'/60'/0'/0/0 (standard EVM)
|
||||
- Native currency: ETH, 18 decimals
|
||||
@@ -134,7 +132,7 @@ DeFi Oracle Meta Mainnet (Chain ID 138) — EVM-compatible chain for Trust Walle
|
||||
## Optional: Token / chain logos (Trust Wallet Assets)
|
||||
|
||||
- **Token logos:** Your app already uses Trust Wallet’s public asset URLs for Ethereum mainnet tokens (e.g. `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/<address>/logo.png`). For **Chain 138–native tokens**, you can submit logos via [assets.trustwallet.com](https://assets.trustwallet.com) (see [Trust – Listing new assets](https://developer.trustwallet.com/developer/new-asset)); fees and rules apply.
|
||||
- **Chain icon:** Treat chain-icon work as secondary to Wallet Core support. Trust’s public docs currently direct new token/logo submissions through the Assets App and new chain requests through their business workflow. If a chain-assets repo addition becomes necessary, use the packaged Chain 138 bundle in [pr-ready/eip155-138-package](./pr-ready/eip155-138-package/).
|
||||
- **Chain icon:** If Trust’s app shows a chain icon from their assets repo, adding a chain folder under `blockchains/` (e.g. for `dfiometa` or `eip155-138`) would follow their assets repo structure; check [trustwallet/assets](https://github.com/trustwallet/assets) for current layout.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
---
|
||||
|
||||
**Purpose**: Validated configs for MetaMask, ethers.js, and Ledger (Chain 138 – DeFi Oracle Meta Mainnet).
|
||||
**Purpose**: Validated configs for MetaMask, ethers.js, and Ledger (Chain 138 – Defi Oracle Meta Mainnet).
|
||||
**RPC**: `https://rpc-http-pub.d-bis.org`, `https://rpc.d-bis.org`, `https://rpc2.d-bis.org`, `https://rpc.defi-oracle.io`
|
||||
**WS**: `wss://rpc-ws-pub.d-bis.org`, `wss://rpc.d-bis.org`, `wss://ws.rpc.d-bis.org`, `wss://ws.rpc2.d-bis.org`, `wss://wss.defi-oracle.io`
|
||||
**Chain ID**: 138 (`0x8a`)
|
||||
@@ -19,7 +19,7 @@ Use **Settings → Networks → Add network** (or “Add a network manually”)
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| **Network name** | DeFi Oracle Meta Mainnet |
|
||||
| **Network name** | Defi Oracle Meta Mainnet |
|
||||
| **RPC URL** | `https://rpc-http-pub.d-bis.org`, `https://rpc.d-bis.org`, `https://rpc2.d-bis.org`, or `https://rpc.defi-oracle.io` |
|
||||
| **Chain ID** | `138` |
|
||||
| **Currency symbol** | ETH |
|
||||
@@ -34,10 +34,10 @@ Validated: chainId `0x8a`, RPC URLs return `eth_chainId` → `0x8a`.
|
||||
## 2. ethers.js (v5 / v6)
|
||||
|
||||
```javascript
|
||||
// Chain 138 – DeFi Oracle Meta Mainnet
|
||||
// Chain 138 – Defi Oracle Meta Mainnet
|
||||
const chain138 = {
|
||||
chainId: 138,
|
||||
name: "DeFi Oracle Meta Mainnet",
|
||||
name: "Defi Oracle Meta Mainnet",
|
||||
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
|
||||
rpcUrls: {
|
||||
default: { http: ["https://rpc-http-pub.d-bis.org", "https://rpc.d-bis.org", "https://rpc2.d-bis.org", "https://rpc.defi-oracle.io"] },
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
## Purpose
|
||||
|
||||
This document ties together **all** wallet-related work for **DeFi Oracle Meta Mainnet (Chain ID 138)** and answers:
|
||||
This document ties together **all** wallet-related work for **Defi Oracle Meta Mainnet (Chain ID 138)** and answers:
|
||||
|
||||
1. **Why we created the MetaMask Snap** when basic Chain 138 connectivity already works in MetaMask.
|
||||
2. **Why we need Ledger Live** when we already use Ledger’s App-Ethereum (and have Chain 138 in our app-ethereum fork).
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Chain 2138 – Wallet & SDK Config (DeFi Oracle Meta Testnet)
|
||||
# Chain 2138 – Wallet & SDK Config (Defi Oracle Meta Testnet)
|
||||
|
||||
**Last Updated:** 2026-03-27
|
||||
**Document Version:** 1.0
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
---
|
||||
|
||||
**Purpose:** Wallet and SDK settings for **DeFi Oracle Meta Testnet** (chain ID **2138**).
|
||||
**Purpose:** Wallet and SDK settings for **Defi Oracle Meta Testnet** (chain ID **2138**).
|
||||
**RPC (public, chainlist):** `https://rpc.public-2138.defi-oracle.io`
|
||||
**WS (chainlist):** `wss://rpc.public-2138.defi-oracle.io`
|
||||
**Explorer (chainlist):** `https://public-2138.defi-oracle.io`
|
||||
@@ -21,7 +21,7 @@ Use LAN or staging RPC in place of the public URLs when testing privately.
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| **Network name** | DeFi Oracle Meta Testnet |
|
||||
| **Network name** | Defi Oracle Meta Testnet |
|
||||
| **RPC URL** | `https://rpc.public-2138.defi-oracle.io` (or your node) |
|
||||
| **Chain ID** | `2138` |
|
||||
| **Currency symbol** | tETH |
|
||||
@@ -36,7 +36,7 @@ Use LAN or staging RPC in place of the public URLs when testing privately.
|
||||
```javascript
|
||||
const chain2138Testnet = {
|
||||
chainId: 2138,
|
||||
name: "DeFi Oracle Meta Testnet",
|
||||
name: "Defi Oracle Meta Testnet",
|
||||
nativeCurrency: { name: "testEther", symbol: "tETH", decimals: 18 },
|
||||
rpcUrls: {
|
||||
default: { http: ["https://rpc.public-2138.defi-oracle.io"] },
|
||||
|
||||
@@ -1,197 +0,0 @@
|
||||
# Devin → Gitea → Proxmox CI/CD
|
||||
|
||||
**Status:** Working baseline for this repo
|
||||
**Last Updated:** 2026-04-20
|
||||
|
||||
## Goal
|
||||
|
||||
Create a repeatable path where:
|
||||
|
||||
1. Devin lands code in Gitea.
|
||||
2. Gitea Actions validates the repo on the site-wide `act_runner`.
|
||||
3. A successful workflow calls `phoenix-deploy-api`.
|
||||
4. `phoenix-deploy-api` resolves the repo/branch to a deploy target and runs the matching Proxmox publish command.
|
||||
5. The deploy service checks the target health URL before it reports success.
|
||||
|
||||
## Current baseline in this repo
|
||||
|
||||
The path now exists for **`d-bis/proxmox`** on **`main`** and **`master`**:
|
||||
|
||||
- Workflow: [deploy-to-phoenix.yml](/home/intlc/projects/proxmox/.gitea/workflows/deploy-to-phoenix.yml)
|
||||
- Manual app workflow: [deploy-portal-live.yml](/home/intlc/projects/proxmox/.gitea/workflows/deploy-portal-live.yml)
|
||||
- Deploy service: [server.js](/home/intlc/projects/proxmox/phoenix-deploy-api/server.js)
|
||||
- Target map: [deploy-targets.json](/home/intlc/projects/proxmox/phoenix-deploy-api/deploy-targets.json)
|
||||
- Current live publish script: [deploy-phoenix-deploy-api-to-dev-vm.sh](/home/intlc/projects/proxmox/scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh)
|
||||
- Manual smoke trigger: [trigger-phoenix-deploy.sh](/home/intlc/projects/proxmox/scripts/dev-vm/trigger-phoenix-deploy.sh)
|
||||
- Target validator: [validate-phoenix-deploy-targets.sh](/home/intlc/projects/proxmox/scripts/validation/validate-phoenix-deploy-targets.sh)
|
||||
- Bootstrap helper: [bootstrap-phoenix-cicd.sh](/home/intlc/projects/proxmox/scripts/dev-vm/bootstrap-phoenix-cicd.sh)
|
||||
|
||||
That default target publishes the `phoenix-deploy-api` bundle to **VMID 5700** on the correct Proxmox node and starts the CT if needed.
|
||||
|
||||
A second target is now available:
|
||||
|
||||
- `portal-live` → runs [sync-sankofa-portal-7801.sh](/home/intlc/projects/proxmox/scripts/deployment/sync-sankofa-portal-7801.sh) and then checks `http://192.168.11.51:3000/`
|
||||
|
||||
## Flow
|
||||
|
||||
```text
|
||||
Devin
|
||||
-> push to Gitea
|
||||
-> Gitea Actions on act_runner (5700)
|
||||
-> bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
-> validates deploy-targets.json structure
|
||||
-> POST /api/deploy to phoenix-deploy-api
|
||||
-> match repo + branch + target in deploy-targets.json
|
||||
-> run deploy command
|
||||
-> verify target health URL
|
||||
-> update Gitea commit status success/failure
|
||||
```
|
||||
|
||||
## Required setup
|
||||
|
||||
### 1. Runner
|
||||
|
||||
Bring up the site-wide Gitea runner on VMID **5700**:
|
||||
|
||||
```bash
|
||||
bash scripts/dev-vm/bootstrap-gitea-act-runner-site-wide.sh
|
||||
```
|
||||
|
||||
Reference: [GITEA_ACT_RUNNER_SETUP.md](GITEA_ACT_RUNNER_SETUP.md)
|
||||
|
||||
### 0. One-command bootstrap
|
||||
|
||||
If root `.env` already contains the needed values, use:
|
||||
|
||||
```bash
|
||||
bash scripts/dev-vm/bootstrap-phoenix-cicd.sh --repo d-bis/proxmox
|
||||
```
|
||||
|
||||
This runs the validation gate, deploys `phoenix-deploy-api`, and smoke-checks the service.
|
||||
|
||||
### 2. Deploy API service
|
||||
|
||||
Deploy the API to the dev VM:
|
||||
|
||||
```bash
|
||||
./scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh --dry-run
|
||||
./scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh --apply --start-ct
|
||||
```
|
||||
|
||||
On the target VM, set at least:
|
||||
|
||||
```bash
|
||||
PORT=4001
|
||||
GITEA_URL=https://gitea.d-bis.org
|
||||
GITEA_TOKEN=<token with repo status access>
|
||||
PHOENIX_DEPLOY_SECRET=<shared secret>
|
||||
PHOENIX_REPO_ROOT=/home/intlc/projects/proxmox
|
||||
```
|
||||
|
||||
Optional:
|
||||
|
||||
```bash
|
||||
DEPLOY_TARGETS_PATH=/opt/phoenix-deploy-api/deploy-targets.json
|
||||
```
|
||||
|
||||
For the `portal-live` target, also set:
|
||||
|
||||
```bash
|
||||
SANKOFA_PORTAL_SRC=/home/intlc/projects/Sankofa/portal
|
||||
```
|
||||
|
||||
### 3. Gitea repo secrets
|
||||
|
||||
Set these in the Gitea repository that should deploy:
|
||||
|
||||
- `PHOENIX_DEPLOY_URL`
|
||||
- `PHOENIX_DEPLOY_TOKEN`
|
||||
|
||||
Example:
|
||||
|
||||
- `PHOENIX_DEPLOY_URL=http://192.168.11.59:4001/api/deploy`
|
||||
- `PHOENIX_DEPLOY_TOKEN=<same value as PHOENIX_DEPLOY_SECRET>`
|
||||
|
||||
For webhook signing, the bootstrap/helper path also expects:
|
||||
|
||||
- `PHOENIX_DEPLOY_SECRET`
|
||||
- `PHOENIX_WEBHOOK_DEPLOY_ENABLED=1` only if you want webhook events themselves to execute deploys
|
||||
|
||||
Do not enable both repo Actions deploys and webhook deploys for the same repo unless you intentionally want duplicate deploy attempts.
|
||||
|
||||
## Adding more repos or VM targets
|
||||
|
||||
Extend [deploy-targets.json](/home/intlc/projects/proxmox/phoenix-deploy-api/deploy-targets.json) with another entry.
|
||||
|
||||
Each target is keyed by:
|
||||
|
||||
- `repo`
|
||||
- `branch`
|
||||
- `target`
|
||||
|
||||
Each target defines:
|
||||
|
||||
- `cwd`
|
||||
- `command`
|
||||
- `required_env`
|
||||
- optional `healthcheck`
|
||||
- optional `timeout_sec`
|
||||
|
||||
Example shape:
|
||||
|
||||
```json
|
||||
{
|
||||
"repo": "d-bis/another-service",
|
||||
"branch": "main",
|
||||
"target": "portal-live",
|
||||
"cwd": "${PHOENIX_REPO_ROOT}",
|
||||
"command": ["bash", "scripts/deployment/sync-sankofa-portal-7801.sh"],
|
||||
"required_env": ["PHOENIX_REPO_ROOT"]
|
||||
}
|
||||
```
|
||||
|
||||
Use separate `target` names when the same repo can publish to different VMIDs or environments.
|
||||
|
||||
Target-map validation is already part of:
|
||||
|
||||
```bash
|
||||
bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
```
|
||||
|
||||
and can also be run directly:
|
||||
|
||||
```bash
|
||||
bash scripts/validation/validate-phoenix-deploy-targets.sh
|
||||
```
|
||||
|
||||
## Manual testing
|
||||
|
||||
Before trusting a new Gitea workflow, trigger the deploy service directly:
|
||||
|
||||
```bash
|
||||
bash scripts/dev-vm/trigger-phoenix-deploy.sh
|
||||
```
|
||||
|
||||
Trigger the live portal deployment target directly:
|
||||
|
||||
```bash
|
||||
bash scripts/dev-vm/trigger-phoenix-deploy.sh d-bis/proxmox main portal-live
|
||||
```
|
||||
|
||||
Inspect configured targets:
|
||||
|
||||
```bash
|
||||
curl -s http://192.168.11.59:4001/api/deploy-targets | jq .
|
||||
```
|
||||
|
||||
## Recommended next expansions
|
||||
|
||||
- Add a Phoenix API target for the repo that owns VMID **7800** or **8600**, depending on which deployment line is canonical.
|
||||
- Add repo-specific workflows once the Sankofa source repos themselves are mirrored into Gitea Actions.
|
||||
- Move secret values from ad hoc `.env` files into the final operator-managed secret source once you settle the production host for `phoenix-deploy-api`.
|
||||
|
||||
## Notes
|
||||
|
||||
- The Gitea workflow is gated by `scripts/verify/run-all-validation.sh --skip-genesis` before deploy.
|
||||
- `phoenix-deploy-api` now returns `404` when no matching target exists and `500` when the deploy command fails.
|
||||
- Commit status updates are written back to Gitea from the deploy service itself.
|
||||
@@ -1,4 +1,4 @@
|
||||
# Ledger Ethereum App & Ledger Live — DeFi Oracle Meta Mainnet (Chain ID 138) Issues and Workarounds
|
||||
# Ledger Ethereum App & Ledger Live — Defi Oracle Meta Mainnet (Chain ID 138) Issues and Workarounds
|
||||
|
||||
**Last Updated:** 2026-02-12
|
||||
**Status:** Active reference for support and integration
|
||||
@@ -12,7 +12,7 @@
|
||||
| **Ledger Ethereum App (device)** | ⚠️ Depends on build | Chain 138 is in **this repo’s** app-ethereum config; official Ledger app may not include it. |
|
||||
| **Ledger Live (desktop/mobile)** | ❌ No native support | Cannot add custom EVM networks; Chain 138 not in Ledger Live’s list. |
|
||||
| **Workaround** | ✅ Supported | Use **Ledger device + MetaMask** (or other wallet); add Chain 138 in the wallet via Chainlist or manually. |
|
||||
| **Chainlist** | ✅ Listed | DeFi Oracle Meta Mainnet (138) is on chainlist.org; RPCs and explorer configured. |
|
||||
| **Chainlist** | ✅ Listed | Defi Oracle Meta Mainnet (138) is on chainlist.org; RPCs and explorer configured. |
|
||||
|
||||
---
|
||||
|
||||
@@ -60,7 +60,7 @@ So **any build produced from this repo’s app-ethereum** can show “Defi Oracl
|
||||
### 2.1 No custom EVM network support
|
||||
|
||||
- Ledger Live only supports a **fixed list** of networks (Ethereum, Polygon, Arbitrum, Base, etc.).
|
||||
- **DeFi Oracle Meta Mainnet (Chain ID 138) is not in that list.**
|
||||
- **Defi Oracle Meta Mainnet (Chain ID 138) is not in that list.**
|
||||
- There is **no in-app “Add custom network”** for arbitrary EVM chains in Ledger Live.
|
||||
|
||||
### 2.2 What users cannot do in Ledger Live
|
||||
@@ -84,7 +84,7 @@ Official Ledger support also recommends using [Chainlist to connect MetaMask to
|
||||
### 3.1 Add Chain 138 via Chainlist
|
||||
|
||||
1. Go to [chainlist.org](https://chainlist.org) and connect **MetaMask** (with Ledger connected and selected as account).
|
||||
2. Search for **“DeFi Oracle Meta Mainnet”** or **Chain ID 138**.
|
||||
2. Search for **“Defi Oracle Meta Mainnet”** or **Chain ID 138**.
|
||||
3. Click **“Add to MetaMask”** (or equivalent) and approve in MetaMask.
|
||||
|
||||
Chain 138 is listed with RPCs and explorer; Chainlist will inject the correct RPC URL and chain ID.
|
||||
@@ -95,7 +95,7 @@ If not using Chainlist, use **Settings → Networks → Add network** with:
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| Network name | DeFi Oracle Meta Mainnet |
|
||||
| Network name | Defi Oracle Meta Mainnet |
|
||||
| RPC URL | `https://rpc-http-pub.d-bis.org` or `https://rpc.d-bis.org` or `https://rpc.defi-oracle.io` |
|
||||
| Chain ID | `138` |
|
||||
| Currency symbol | ETH |
|
||||
@@ -113,7 +113,7 @@ See also: [CHAIN138_WALLET_CONFIG_VALIDATION.md](./CHAIN138_WALLET_CONFIG_VALIDA
|
||||
|
||||
## 4. Chainlist and discovery
|
||||
|
||||
- **Chain 138** is registered as **DeFi Oracle Meta Mainnet** on Chainlist (e.g. `https://chainlist.org/chain/138`).
|
||||
- **Chain 138** is registered as **Defi Oracle Meta Mainnet** on Chainlist (e.g. `https://chainlist.org/chain/138`).
|
||||
- This repo’s chain data: **`pr-workspace/chains/_data/chains/eip155-138.json`** includes:
|
||||
- RPCs: `rpc-http-pub.d-bis.org`, `rpc.d-bis.org`, `rpc2.d-bis.org`, `rpc.public-0138.defi-oracle.io`, `rpc.defi-oracle.io`, thirdweb (with API key placeholder), and matching WSS URLs.
|
||||
- Explorer: `https://explorer.d-bis.org`.
|
||||
|
||||
@@ -50,7 +50,7 @@ If you prefer to specify environment variables directly in the config:
|
||||
"command": "node",
|
||||
"args": ["/home/intlc/projects/proxmox/mcp-proxmox/index.js"],
|
||||
"env": {
|
||||
"PROXMOX_HOST": "proxmox-api.d-bis.org",
|
||||
"PROXMOX_HOST": "your-proxmox-ip-or-hostname",
|
||||
"PROXMOX_USER": "root@pam",
|
||||
"PROXMOX_TOKEN_NAME": "your-token-name",
|
||||
"PROXMOX_TOKEN_VALUE": "your-token-secret",
|
||||
@@ -68,7 +68,7 @@ Create a `.env` file at `/home/intlc/.env` with the following content:
|
||||
|
||||
```bash
|
||||
# Proxmox Configuration (REQUIRED)
|
||||
PROXMOX_HOST=proxmox-api.d-bis.org
|
||||
PROXMOX_HOST=your-proxmox-ip-or-hostname
|
||||
PROXMOX_USER=root@pam
|
||||
PROXMOX_TOKEN_NAME=your-token-name
|
||||
PROXMOX_TOKEN_VALUE=your-token-secret
|
||||
@@ -124,11 +124,9 @@ The script will:
|
||||
- **Privilege Separation**: Uncheck for full access or leave checked for limited permissions
|
||||
- Click **Add**
|
||||
4. **Important**: Copy both the **Token ID** and **Secret** immediately (secret is only shown once)
|
||||
- Use the bare Token ID as `PROXMOX_TOKEN_NAME` when possible
|
||||
- Use Token ID as `PROXMOX_TOKEN_NAME`
|
||||
- Use Secret as `PROXMOX_TOKEN_VALUE`
|
||||
|
||||
The helpers in this repo also accept a full token id in `PROXMOX_TOKEN_NAME` such as `root@pam!mcp-server`, but the bare token name is still the cleaner convention.
|
||||
|
||||
### Permission Requirements
|
||||
|
||||
- **Basic Mode** (`PROXMOX_ALLOW_ELEVATED=false`): Minimal permissions (usually default user permissions work)
|
||||
@@ -192,7 +190,7 @@ If you see authentication errors:
|
||||
3. Test the token manually using curl:
|
||||
```bash
|
||||
curl -k -H "Authorization: PVEAPIToken=root@pam!token-name=token-secret" \
|
||||
https://proxmox-api.d-bis.org:8006/api2/json/nodes
|
||||
https://your-proxmox-host:8006/api2/json/nodes
|
||||
```
|
||||
|
||||
### Permission Errors
|
||||
@@ -202,3 +200,4 @@ If operations fail with permission errors:
|
||||
1. Check that your API token has the required permissions
|
||||
2. For basic operations, ensure you have at least read permissions
|
||||
3. For elevated operations, ensure `PROXMOX_ALLOW_ELEVATED=true` is set and the token has appropriate permissions
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user