chore: sync workspace — configs, docs, scripts, CI, pnpm, submodules
Some checks failed
Deploy to Phoenix / validate (push) Failing after 15s
Deploy to Phoenix / deploy (push) Has been skipped

- Submodule pins: dbis_core, cross-chain-pmm-lps, mcp-proxmox (local, push may be pending), metamask-integration, smom-dbis-138
- Atomic swap + cross-chain-pmm-lops-publish, deploy-portal workflow, phoenix deploy-targets, routing/aggregator matrices
- Docs, token-lists, forge proxy, phoenix API, runbooks, verify scripts

Made-with: Cursor
This commit is contained in:
defiQUG
2026-04-21 22:01:33 -07:00
parent e6bc7a6d7c
commit b8613905bd
231 changed files with 31657 additions and 2184 deletions

View File

@@ -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 Ledgers response and follow their process (agreement + integration steps).
The Ledger Live integration request for **Chain 138 (DeFi Oracle Meta Mainnet)** has been submitted (Tally form). Await Ledgers response and follow their process (agreement + integration steps).
**Full guide:** [docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md](../04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md)

View File

@@ -1,6 +1,6 @@
# Operator Ready Checklist — Copy-Paste Commands
**Last Updated:** 2026-03-28
**Last Updated:** 2026-04-22
**Purpose:** Single page with exact commands to complete every pending todo. Run from **repo root** on a host with **LAN** access (and `smom-dbis-138/.env` with `PRIVATE_KEY`, `NPM_PASSWORD` where noted).
**Do you have all necessary creds?** See [OPERATOR_CREDENTIALS_CHECKLIST.md](OPERATOR_CREDENTIALS_CHECKLIST.md) — per-task list of LAN, PRIVATE_KEY, NPM_PASSWORD, RPC_URL_138, SSH, LINK, gas, token balance.
@@ -106,6 +106,20 @@ Single contract retry: `./scripts/verify/run-contract-verification-with-proxy.sh
---
## 4b. LAN: Proxmox fleet vzdump, retention, cluster check
**Ref:** [STORAGE_GROWTH_AND_HEALTH.md](../04-configuration/STORAGE_GROWTH_AND_HEALTH.md)
- **Check corosync / nodes after any `pve-cluster` change:**
`./scripts/maintenance/verify-pve-cluster-health.sh`
Expect: **Quorate: Yes** and all expected nodes **online** in the JSON.
- **Deploy weekly vzdump file retention (all PVE nodes):**
`./scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh` (optional `--dry-run`). **Env:** `VZDUMP_PRUNE_KEEP=2` (default) when re-deploying.
- **R630-01 daily all-running-CT backup** lives on the node as **`/usr/local/bin/proxmox-backup.sh`**, sourced from the repo: **`scripts/maintenance/proxmox-backup-all-running-ct.sh`**. Re-install after editing: `scp` + `chmod 755` (see file header for cron and **`VZDUMP_SKIP_VMIDS`** / **`VZDUMP_COMPRESS`**).
- **Stuck `vzdump` or snap:** stop via **Proxmox UI task stop** if possible. If a **`task` worker** blocks **`/etc/pve`**, only then consider **`systemctl restart pve-cluster`** on that node, then re-run `verify-pve-cluster-health.sh`.
---
## 5. LAN: Run all operator tasks (backup + verify ± deploy ± create-vms)
```bash
@@ -276,7 +290,7 @@ This is intentionally deferred with the rest of the Wemix path. If the chain is
---
## 10. DBIS Chain 138 — phased production path (matrix-driven)
## 10. DeFi Oracle Meta Mainnet (Chain 138) — phased production path (matrix-driven)
**Ref:** [dbis_chain_138_technical_master_plan.md](../../dbis_chain_138_technical_master_plan.md), [DBIS_NODE_ROLE_MATRIX.md](../02-architecture/DBIS_NODE_ROLE_MATRIX.md)

View File

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

View File

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

View File

@@ -52,6 +52,16 @@ git remote add origin https://gitea.d-bis.org/d-bis/explorer-monorepo.git
---
## atomic-swap-dapp bootstrap remote
`atomic-swap-dapp` was scaffolded first as a standalone local repository and then mounted into the parent as a submodule. Its current `.gitmodules` URL may point at a local bare repository during bootstrap.
That is acceptable for initial local development, but before other operators rely on the parent repo for cloning, replace the local URL with the canonical hosted remote and then commit the updated `.gitmodules` plus submodule pointer.
See [ATOMIC_SWAP_DAPP_SUBMODULE.md](../03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md) for the submodule purpose and manifest-sync workflow.
---
## gru-docs branch
`gru-docs` may track **`docs-review-fixes`** (not `main`) while documentation review is open. The parent submodule pointer is intentional until upstream merges to `main` and the pointer is updated.

View File

@@ -2,7 +2,7 @@
> Historical note (2026-03-26): this report preserves an earlier PMM status snapshot. The current canonical Chain 138 PMM stack is `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`.
**Date:** 2026-03-02
**Date:** 2026-03-02 (counts refreshed 2026-04-21 for on-chain list)
**Purpose:** For each remaining task, verify current state before marking complete or executing. Use this report to decide what still needs to be run by Operator/LAN vs what is already satisfied.
---
@@ -11,7 +11,7 @@
| Check | Result |
|-------|--------|
| **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 59/59 on-chain (Chain 138), validation OK, reconcile-env printed |
| **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 61/61 on-chain (Chain 138; per `check-contracts-on-chain-138.sh`), validation OK, reconcile-env printed |
| **preflight-chain138-deploy.sh** | Passed — dotenv exists, RPC Core (chainId 138), nonce consistent, no stuck txs |
---
@@ -23,7 +23,7 @@
| Item | Status | Notes |
|------|--------|-------|
| Phase 0 (prereqs) | Satisfied | Preflight passed; .env and RPC OK |
| Phase 1 (Chain 138 core) | Done | 59/59 contracts present |
| Phase 1 (Chain 138 core) | Done | 61/61 contracts present (current address list in check-contracts-on-chain-138.sh) |
| Phase 2 (TransactionMirror + PMM pools) | Done | Mirror deployed; all three pools created (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) |
| Phase 3 (Liquidity + DODOPMMProvider) | Partially done | DODOPMMProvider deployed at `0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`; corrected canonical stack aligned. **Remaining:** add liquidity (optional per doc) via `AddLiquidityPMMPoolsChain138.s.sol` or cast |
| Phase 46 | Not run | Optional / other chains; Operator |

View File

@@ -177,7 +177,7 @@
## 12. DBIS RTGS / HYBX / Hyperledger E2E stack
**Purpose:** Track everything required for a true end-to-end RTGS stack across DBIS Chain 138, HYBX sidecars, OMNL / Fineract, and the external banking / interoperability integrations we currently have access to.
**Purpose:** Track everything required for a true end-to-end RTGS stack across DeFi Oracle Meta Mainnet (Chain 138), HYBX sidecars, OMNL / Fineract, and the external banking / interoperability integrations we currently have access to.
### 12.1 Participant / treasury / GL model

View File

@@ -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`

View File

@@ -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`)

View File

@@ -2,7 +2,7 @@
> Historical note (2026-03-26): this runbook originated during the earlier three-pool PMM phase. Current canonical Chain 138 PMM addresses are `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`.
**Purpose:** Add base/quote liquidity to the three DODO PMM pools on Chain 138 (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC).
**Purpose:** Add base/quote liquidity to the canonical DODO PMM pools on Chain 138, including the live stable/WETH pools.
**Prerequisites:**
- Deployer is **owner** of cUSDT and cUSDC contracts (to mint), or already has balance.
@@ -37,17 +37,20 @@ Deployer must be the **owner** of both cUSDT and cUSDC contracts (onlyOwner can
Add or set in `smom-dbis-138/.env`:
```bash
# Pool addresses (from PRE_DEPLOYMENT_CHECKLIST / create-all-pmm-pools-chain138.sh)
POOL_CUSDTCUSDC=0xff8d3b8fDF7B112759F076B69f4271D4209C0849
POOL_CUSDTUSDT=0x6fc60DEDc92a2047062294488539992710b99D71
POOL_CUSDCUSDC=0x9f74Be42725f2Aa072a9E0CdCce0E7203C510263
# Pool addresses
POOL_CUSDTCUSDC=0x9e89bAe009adf128782E19e8341996c596ac40dC
POOL_CUSDTUSDT=0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66
POOL_CUSDCUSDC=0xc39B7D0F40838cbFb54649d327f49a6DAC964062
POOL_CUSDTWETH=0xaE38a008Ba4Dbf8D9F141D03e9dC8f7Dbe0ce17c
POOL_CUSDCWETH=0xAAE68830a55767722618E869882c6Ed064Cc1eb2
POOL_CEURTWETH=0x4a64c886cedF00db42ea5B946D6b304121ad9529
# Amounts in base units (6 decimals): 1M tokens = 1000000000000
ADD_LIQUIDITY_BASE_AMOUNT=1000000000000
ADD_LIQUIDITY_QUOTE_AMOUNT=1000000000000
```
Optional per-pool overrides: `ADD_LIQUIDITY_CUSDTCUSDC_BASE`, `ADD_LIQUIDITY_CUSDTCUSDC_QUOTE`, etc.
Optional per-pool overrides: `ADD_LIQUIDITY_CUSDTCUSDC_BASE`, `ADD_LIQUIDITY_CUSDTCUSDC_QUOTE`, `ADD_LIQUIDITY_CUSDTWETH_BASE`, `ADD_LIQUIDITY_CUSDTWETH_QUOTE`, `ADD_LIQUIDITY_CUSDCWETH_BASE`, `ADD_LIQUIDITY_CUSDCWETH_QUOTE`, `ADD_LIQUIDITY_CEURTWETH_BASE`, `ADD_LIQUIDITY_CEURTWETH_QUOTE`, etc.
---

View File

@@ -0,0 +1,70 @@
# Atomic Swap dApp Submodule
**Last Updated:** 2026-04-19
**Purpose:** Defines the dedicated submodule for an ecosystem-wide swap + bridge dApp that can orchestrate atomic swap flows across the supported networks and assets.
---
## Location
- Submodule path: `atomic-swap-dapp/`
- Parent registration: `.gitmodules`
- Current bootstrap remote: local bare repo at `/home/intlc/projects/atomic-swap-dapp.git`
> Operational note: the current URL is a local bootstrap remote created to establish the submodule boundary and initial commit. Replace it with the canonical hosted remote before expecting other operators to clone it directly from the parent repo.
---
## What the submodule contains
- `README.md` — scope and usage
- `docs/ATOMIC_SWAP_EXECUTION_MODEL.md` — execution model for swap -> bridge -> destination swap flows
- `scripts/sync-ecosystem.mjs` — generates the dApp manifest from the parent repo's canonical machine-readable inventories
- `scripts/validate-manifest.mjs` — lightweight integrity check for the generated manifest
- `config/ecosystem-manifest.json` — generated coverage snapshot
---
## Canonical parent sources
The submodule intentionally derives coverage from the parent repo instead of maintaining a second source of truth:
- `config/aggregator-route-matrix.json`
- `config/routing-registry.json`
- `token-lists/lists/dbis-138.tokenlist.json`
- `cross-chain-pmm-lps/config/chains.json`
- `cross-chain-pmm-lps/config/token-map.json`
- `cross-chain-pmm-lps/config/deployment-status.json`
This lets the dApp surface:
- Chain 138 live same-chain swap routes
- bridge lanes across the routed ecosystem
- cW* and anchor-asset inventory on the public-chain mesh
- non-EVM network metadata where interoperability is modeled separately
---
## Working in the submodule
From the parent repo root:
```bash
cd atomic-swap-dapp
npm run sync:ecosystem
npm run validate:manifest
```
If the submodule is checked out outside the parent repo, set:
```bash
export PROXMOX_REPO_ROOT=/path/to/proxmox
```
---
## Immediate next build steps
1. Add the canonical hosted remote for the submodule and update `.gitmodules`.
2. Layer in a quote API and execution adapters for DODO PMM, CCIP, Alltra, and future non-EVM connectors.
3. Build UI surfaces on top of `config/ecosystem-manifest.json` so chain and asset coverage stays synced with repo-backed inventories.

View File

@@ -1,9 +1,9 @@
# Chain 138 → Solana — GRU Token Deployment Lineup
**Last updated:** 2026-04-18
**Current status:** `lineup_defined_relay_and_mints_outstanding` — see [config/solana-gru-bridge-lineup.json](../../config/solana-gru-bridge-lineup.json).
**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).
**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).
@@ -18,6 +18,25 @@
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
@@ -44,7 +63,7 @@ Create SPL tokens; record **`solanaMint`** per asset in `solana-gru-bridge-lineu
### Phase C — Relay implementation
Replace relay stub with production path; fund SOL signers; E2E both directions on mainnet-beta when ready.
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

View File

@@ -1,7 +1,9 @@
# Chain 138 -> Wemix 1111 Bridge Completion Checklist
**Last Updated:** 2026-04-18
**Purpose:** Strict operator checklist to move WEMIX `1111` from repo-deferred state into a live `138 -> 1111` bridge path for `WETH9` / `WETH10`, then prepare GRU v2 `cW*` assets for rollout.
**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
@@ -9,12 +11,15 @@
|---|---|
| Destination chain | `1111` / Wemix |
| Destination selector | `5142893604156789321` |
| Activation state | `deferred` |
| Activation state | `planned_gas_scaffold` |
| Bridge available | `false` |
| Recorded `cW*` assets | `cWBTC` |
| Recorded anchor addresses | `USDC=0xcebA9300f2b948710d2653dD7B07f33A8B32118C` |
| Recorded anchor addresses | `USDC=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D` |
The repo currently shows WEMIX as **deferred**, not live. Native WEMIX gas is the only part that is already in good shape; the missing bridge deployment and LINK funding are the actual blockers.
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
@@ -24,8 +29,8 @@ The repo currently shows WEMIX as **deferred**, not live. Native WEMIX gas is th
| `LINK_TOKEN_WEMIX` | `0x80f1FcdC96B55e459BF52b998aBBE2c364935d69` |
| `WETH9_WEMIX` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` |
| `WETH10_WEMIX` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` |
| `CCIPWETH9_BRIDGE_WEMIX` | `(unset)` |
| `CCIPWETH10_BRIDGE_WEMIX` | `(unset)` |
| `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` |
@@ -33,9 +38,13 @@ The repo currently shows WEMIX as **deferred**, not live. Native WEMIX gas is th
| `CCIPWETH9_BRIDGE_CHAIN138` | `0xcacfd227A040002e49e2e01626363071324f820a` |
| `CCIPWETH10_BRIDGE_CHAIN138` | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
## 3. Completion Steps
## 3. Activation Paths
### Step 1: Preflight WEMIX
### 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
@@ -47,7 +56,9 @@ Success means:
- deployer has native WEMIX gas
- `CCIP_ROUTER_WEMIX`, `LINK_TOKEN_WEMIX`, `WETH9_WEMIX`, and `WETH10_WEMIX` are present
### Step 2: Deploy `CCIPWETH9Bridge` and `CCIPWETH10Bridge` on 1111
#### 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
@@ -58,7 +69,7 @@ After deployment, persist the returned addresses into:
- `CCIPWETH9_BRIDGE_WEMIX`
- `CCIPWETH10_BRIDGE_WEMIX`
### Step 3: Wire destinations in both directions
#### Step A3: Confirm bidirectional wiring
```bash
cd smom-dbis-138
@@ -71,7 +82,28 @@ Required result:
- WEMIX WETH9 bridge includes `CHAIN138_SELECTOR` -> `CCIPWETH9_BRIDGE_CHAIN138`
- WEMIX WETH10 bridge includes `CHAIN138_SELECTOR` -> `CCIPWETH10_BRIDGE_CHAIN138`
### Step 4: Fund LINK on the WEMIX bridges
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
@@ -83,16 +115,15 @@ Target:
- at least `10 LINK` on each bridge
- `LINK_GAS_AVAILABLE_1111` becomes non-zero
### Step 5: Verify bridge readiness
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.
```bash
cast call "$CCIPWETH9_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC"
cast call "$CCIPWETH10_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC"
```
#### Step B2: Run proof transfer from `1111`
Then run a small test transfer for `WETH9` or `WETH10` from `138 -> 1111` and confirm receipt.
After outbound funding is available, run and record a small outbound test transfer from `1111`.
### Step 6: Prepare GRU v2 `cW*` assets for 1111
## 4. Prepare GRU v2 `cW*` assets for 1111
This step is **after** the WETH bridge path is proven live.
@@ -105,12 +136,23 @@ Before GRU v2 can be promoted on `1111`, the operator still needs to:
- wire bridge or mint authority for those assets
- only then enable DODO PMM / Uniswap V2 / other venue rollout on WEMIX
## 4. Promotion Conditions
## 5. Promotion Conditions
WEMIX `1111` can move out of deferred state only after all of the following are true:
### 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. Both WEMIX bridges hold enough LINK for operational CCIP fees.
4. A small bridge test succeeds in both configuration and receipt.
5. The GRU v2 asset rollout plan for `1111` is explicitly wired, not just implied.
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.

View File

@@ -0,0 +1,159 @@
# cW Public Network Prices
- Generated: `2026-04-20T00:49:38Z`
- Deployment inventory: `/home/intlc/projects/proxmox/cross-chain-pmm-lps/config/deployment-status.json`
- Uniswap discovery snapshot: `/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json`
- Price convention: USD per 1 token.
- `not found` means the generator could not reach the token from a live USDC/USDT anchor using the current public-pair snapshot plus live PMM mid-price reads.
| Chain | Token | Price (USD) | Derived From | Source | Notes |
|---|---|---:|---|---|---|
| `1` Ethereum Mainnet | `cWAUDC` | `0.65569108` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6c1bD4F43c5f330E50B61DE81066dA7C61a9b5b4; midPrice=0.65569107650773755 |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.73441926` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE0F35b5736FDd0a2F4B618621b0A08F8D8A3f92A; midPrice=0.734419257773319959 |
| | `cWCHFC` | `1.10444563` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x776Ca556deD3245984F504F4bef8Eeec55C50190; midPrice=1.104445634708087841 |
| | `cWEURC` | `1.15145921` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0bC750F9c6DbDcd76B205695A356491b1B9ef098; midPrice=1.15145920590785613 |
| | `cWEURT` | `1.08000050` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x9cF3DeDAaC0984c530801b9b4881c8f99Bb329c3; midPrice=1.080000496800228528 |
| | `cWGBPC` | `1.29980755` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5488042dF882893a3e7074453E2005CaDE4101b0; midPrice=1.299807549490125931 |
| | `cWGBPT` | `1.27000012` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xA42566bb730AD6D551Db32d50c0877132fc07c32; midPrice=1.270000120650011461 |
| | `cWJPYC` | `0.00827694` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794; midPrice=0.008276940018827374 |
| | `cWUSDC` | `0.24519859` | `cWUSDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x69776fc607e9edA8042e320e7e43f54d06c68f0E; midPrice=0.245198594926143744 |
| | `cWUSDT` | `0.24377078` | `cWUSDT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2; midPrice=0.243770782727164331 |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xf6470219ce7749f8860dEABe9c347Ef2c1075E08; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x1D51a38C924382287d770AbB61deb9C39ACa96E9; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `10` Optimism | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x4B452800f6cD50326F14a6f089f4bB04e8079250; midPrice=0.66 |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x19e1fdd037F1651AcEE11c5A5Aa246b85FA63f8e; midPrice=0.74 |
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xA97D7dfB93CBf0C10243931d93FFEda745222ec6; midPrice=1.11 |
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x78C6aC6D7CbFcd85A3291D656F2154979a92c00B; midPrice=1.08 |
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x631DfC86A03cB05319d7165198f8099dacF78e56; midPrice=1.08 |
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x79BE2b70A94E954d095f9F537FAf0741D15dfA31; midPrice=1.27 |
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5D6b5d7CA165c39c350083255774DdBf1c858e12; midPrice=1.27 |
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x68C1c8a945ddCF3482b73aC09b6B5D4177D564AF; midPrice=0.0067 |
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xCE25c324e41049D75abfB81c23257984A2A97a79; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xb3Ee650019d7F756ce0F79b69614Fa2761871775; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `25` Cronos | `cWAUDC` | `0.66000000` | `cWAUDC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x5b5fA8664FC1eb630b2D76deAf57Dd35ef326eAE; midPrice=0.66 |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.74000000` | `cWCADC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xFFe56BE4628f2863Cd7c38d3fFa70d6A3255FBD3; midPrice=0.74 |
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x937E86f21007C15F28081DBD419ea39ef5bc87F2; midPrice=1.11 |
| | `cWEURC` | `1.08000000` | `cWEURC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xbe68d6ae47049ce0EA5B6a82AB1c388f4023aec8; midPrice=1.08 |
| | `cWEURT` | `1.08000000` | `cWEURT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xE3bb64f8F05dB65C9bb1103f5D7C445C402161Ec; midPrice=1.08 |
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xDa60b22cDb3D3Ec67c309457Bd50C4e67D4611a4; midPrice=1.27 |
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x1935d14D513E158D630488f2D20Cd28CFe23aAe6; midPrice=1.27 |
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x97fD4E88490D8c4bcbe1930Cece12e8DD22529bE; midPrice=0.0067 |
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xAA450B4Cf4EEc28C440850665546D85C67b4B2A6; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x8B11f71C0ABF2f8031c47cFd20d22b2ab2799183; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `56` BSC (BNB Chain) | `cWAUDC` | `0.66000000` | `cWAUDC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x85E2C97a931D1e5Ed31F4D6cb4094fB036AE4ED4; midPrice=0.66 |
| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.74000000` | `cWCADC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xE193bd2f602CaC833330c6835f934f3958a7785b; midPrice=0.74 |
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x02F70D646B57439faF5dF1B16d2B174Ee2A9F373; midPrice=1.11 |
| | `cWEURC` | `1.08000000` | `cWEURC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xaF1EA2c0105C90C819849FBFE931D61a11De4793; midPrice=1.08 |
| | `cWEURT` | `1.08000000` | `cWEURT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x6b97090c974eCAf77dC4e390B044F87Ec71f5fA1; midPrice=1.08 |
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x5e19913eDaAcaB436AbF635e58f2453323cB2CB3; midPrice=1.27 |
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x439C447b4FDa58fcAF587F0A042662A46029dC7c; midPrice=1.27 |
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xBEceD3b25448F648a36Fa9dd6D17a68CB6e61f36; midPrice=0.0067 |
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xe9306557758c19cb8FbeEb4777dc7b14f251f67c; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xfB094EC50d932bCD004E4136EfB62119c0f576E1; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `100` Gnosis Chain | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xeb5A688dF70be2F790719872Be9Ecc5648aEE460; midPrice=1 |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x45177D998F4022aeaa046C60e734aEf8c18aCb70; midPrice=0.74 |
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x9ff24E16c5687330c271a52655971c7C2498FaC8; midPrice=1.11 |
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8c8d6cc14111443Ef8572D58Df387a1E497b7C43; midPrice=1.08 |
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB73e4C13757EE99540A1F0e973980E423987De19; midPrice=1.08 |
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xf060E1B29FF714f5Ac89F8Bd3869cF300C5b387f; midPrice=1.27 |
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3adB3fB8451727fDEBe3D00617170dAF3725F6B4; midPrice=1.27 |
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xe11936EcE13B5f04156898a510B86493F2862042; midPrice=0.0067 |
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x02BE3C506FD5541c8225dB43C6FFC5a39ADd803E; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x7069d10A0E4496D0CEa08Ff27EaE9de0BB7D0d23; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `137` Polygon | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783; midPrice=1 |
| | `cWAUSDT` | `0.66666667` | `cWUSDC/USDC -> cWAUSDT/cWUSDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8F1038dE06d799a30D16d8B0b0ADEe629e7d4547; midPrice=1 |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xc79da1E8B33E580d53C683923685B26FFC653650; midPrice=0.74 |
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x30dAeF9a8Dd4aEc2949013Fe18b5Ab3C2505D825; midPrice=1.11 |
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0c6F5D3d8d52cBC52849327F6eC6aE52C8497A8D; midPrice=1.08 |
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x36aB6bef2B3335ebf6a762665978bf5e845FDEC0; midPrice=1.08 |
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x7a95f67E31f271A6a83219d8368D963Ee2fC106B; midPrice=1.27 |
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xC3645c7153b7B72556e322aA1E72D77536d9A3DE; midPrice=1.27 |
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x09658d8d81aa8fa7a21eD973787638f245bc3fe0; midPrice=0.0067 |
| | `cWUSDC` | `1.00000000` | `cWUSDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8F1038dE06d799a30D16d8B0b0ADEe629e7d4547; midPrice=1 |
| | `cWUSDT` | `1.00000000` | `cWUSDT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xFCB0b0Ac36d67EDBA91100c75C27De945357CD62; midPrice=1 |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3c3b9Bd130fB3aBcC0E0CE6552795DD56BCCc55c; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x37D5587Bbe17571cDe96DAB7b2e7EA234C87f525; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `1111` Wemix | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | | | | | Activation state: `deferred`; RPC configured: `False` |
| `8453` Base | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE450F94Dc06036aa80055Db298948C6692819545; midPrice=0.66 |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5E7448AA0e3172AEFE79439E14F7E59bc1C858E0; midPrice=0.74 |
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0673Fa737f813Af2e37A0ae2CBCf7E225498ed6a; midPrice=1.11 |
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x72E6D93E9aF317321DF763a34068178c773FdA50; midPrice=1.08 |
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x51c2C4Dd1fc54E20207D0732f12802B33e0E2251; midPrice=1.08 |
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5b8B474659A5BA675E74Ef364CcF559C53071B5b; midPrice=1.27 |
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xD035e0a6b82cDd9653261DC8259a3dbA1cF02C14; midPrice=1.27 |
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x64D91B738026fE1577773F3F36063d16C834F042; midPrice=0.0067 |
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xb47776505B8E2bFC63197Cf2133857CD91e7abBb; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE1C2bC36438B29E3b5092C0cB80531199874080D; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `42161` Arbitrum One | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x97f78713f5899a652d955B996BAb99E2CbbEcC5c; midPrice=0.66 |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6D3b55935F58b9433fc26743cd9E0F8963a4F6D8; midPrice=0.74 |
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x88437Cd15CB6b07Fd8cC9830f1b8fFf50275e691; midPrice=1.11 |
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x34c3Ae728a985Fd27f1887474bCf4e52847Cbb2c; midPrice=1.08 |
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xEEE8C51107aE64824c4a08a502202fA3E6213702; midPrice=1.08 |
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xFBa6D6d1471302Bf28CE7d94Be33f034b95d9AD0; midPrice=1.27 |
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xDcA29dfa59C8faF90e4437DEAe74474F78735cDe; midPrice=1.27 |
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB6eaF7cEB4A6e9Bc6A57fEb51011B6Bb01632C1F; midPrice=0.0067 |
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x41e67b8b5929e44C2b7A0D772E151FAD8D5303cd; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB6b15Ba233C95d164504e24209C1fAc3304059C7; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `42220` Celo | `cWAUDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCHFC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWEURC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWEURT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWGBPC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWGBPT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWJPYC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | | | | | Activation state: `active`; RPC configured: `True` |
| `43114` Avalanche C-Chain | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x287edaBDA35195592d7CACe2C1A75eC66caF1D70; midPrice=1 |
| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x75Ec85467927512b01C9e0481Fb1902d2d7210dC; midPrice=0.74 |
| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3a224eae91ac813a03E15d0c37B641bC6c2237d7; midPrice=1.11 |
| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xEE2742Fa6f70A40aB16c9b613c5cF6933bA92Cc3; midPrice=1.08 |
| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8507F3F3cB121072c1e3f2D912d269CA9829eEF8; midPrice=1.08 |
| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x73542F7B1CBd4552Eb8FeFEB3D1884527424da58; midPrice=1.27 |
| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xa07dEe884555f2E9D04d0039FEF0b746987a8441; midPrice=1.27 |
| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6175D065c602dab71A03753987D1ebEc99eFcC2e; midPrice=0.0067 |
| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. |
| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5d3a4A3Dae9FEcFe979A784F55d994c9a9fBeAfB; midPrice=3200 |
| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x1392bb9f23F938E6c1cDaAAE5c45d29BE5f8C828; midPrice=3200 |
| | | | | | Activation state: `active`; RPC configured: `True` |

View File

@@ -0,0 +1,460 @@
# cW Public Network Repeg Plan
- Generated: `2026-04-20T00:49:46Z`
- Price report: `/home/intlc/projects/proxmox/reports/status/cw-public-prices-latest.json`
- Deployment inventory: `/home/intlc/projects/proxmox/cross-chain-pmm-lps/config/deployment-status.json`
- Uniswap discovery: `/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json`
- Scope: current off-peg or unreadable public-network `cW*` pools only.
- PMM rule: if current price is below target, fund quote and buy base; if current price is above target, fund base and sell base.
- Uniswap rule: remove bad LP or ignore stale LP, then reseed at the target reserve ratio.
## Off-Peg DODO PMM Pools
| Chain | Pair | Pool | Current | Target | Deviation | Repair Path |
|---|---|---|---:|---:|---:|---|
| `1` Ethereum Mainnet | `cWEURC/USDC` | `0x0bC750F9c6DbDcd76B205695A356491b1B9ef098` | `1.15145921` | `1.08000000` | `+6.62%` | Fund base side and sell base into `cWEURC/USDC` until `getMidPrice()` returns target. |
| `1` Ethereum Mainnet | `cWGBPC/USDC` | `0x5488042dF882893a3e7074453E2005CaDE4101b0` | `1.29980755` | `1.27000000` | `+2.35%` | Fund base side and sell base into `cWGBPC/USDC` until `getMidPrice()` returns target. |
| `1` Ethereum Mainnet | `cWJPYC/USDC` | `0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794` | `0.00827694` | `0.00670000` | `+23.54%` | Fund base side and sell base into `cWJPYC/USDC` until `getMidPrice()` returns target. |
| `1` Ethereum Mainnet | `cWUSDC/USDC` | `0x69776fc607e9edA8042e320e7e43f54d06c68f0E` | `0.24519859` | `1.00000000` | `-75.48%` | Fund quote side and buy base through `cWUSDC/USDC` until `getMidPrice()` returns target. |
| `1` Ethereum Mainnet | `cWUSDT/USDC` | `0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2` | `0.24377078` | `1.00000000` | `-75.62%` | Fund quote side and buy base through `cWUSDT/USDC` until `getMidPrice()` returns target. |
| `100` Gnosis Chain | `cWAUDC/USDC` | `0xeb5A688dF70be2F790719872Be9Ecc5648aEE460` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. |
| `137` Polygon | `cWAUDC/USDC` | `0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. |
| `43114` Avalanche C-Chain | `cWAUDC/USDC` | `0x287edaBDA35195592d7CACe2C1A75eC66caF1D70` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. |
## Broken Uniswap Pairs
| Chain | Pair | Pool | Current Ratio | Target | Deviation | Repair Path |
|---|---|---|---:|---:|---:|---|
| `56` BSC (BNB Chain) | `cWAUSDT/cWUSDC` | `0x639D7e64C6f1fC676226f20a0C42aEcDD66545E8` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. |
| `56` BSC (BNB Chain) | `cWAUSDT/cWUSDT` | `0xe9b082bAa73Fa4DEc7CB3CbD99B19D30BbfE1523` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. |
| `137` Polygon | `cWAUSDT/cWUSDC` | `0xe6a5Cb164D4AF7E9794AEd09EC373392D0E7216c` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. |
| `137` Polygon | `cWAUSDT/cWUSDT` | `0x8cD2Cb42B81F894eb10D15446DB22A3B31d6fB2E` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. |
| `42220` Celo | `cWAUSDT/cWUSDC` | `0xd3B55d6d7C08fDbF5F201e486992643cfF410d91` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. |
| `42220` Celo | `cWAUSDT/cWUSDT` | `0xEe9eEBf89C1424e63eFc888929E43a9423357D39` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. |
| `43114` Avalanche C-Chain | `cWAUSDT/cWUSDC` | `0xaaD6aed8d28B0195D19B4d17F8ee9A1837ff2DCE` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. |
| `43114` Avalanche C-Chain | `cWAUSDT/cWUSDT` | `0x418322F48D857277ec4BCc96Bc1580aCCB7EA253` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. |
## Unpriced Targets
| Chain | Token | Target | Status |
|---|---|---:|---|
| `10` Optimism | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
| `10` Optimism | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `25` Cronos | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
| `25` Cronos | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `56` BSC (BNB Chain) | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `56` BSC (BNB Chain) | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
| `56` BSC (BNB Chain) | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `56` BSC (BNB Chain) | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot |
| `100` Gnosis Chain | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
| `100` Gnosis Chain | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `8453` Base | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
| `8453` Base | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `42161` Arbitrum One | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
| `42161` Arbitrum One | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWAUDC` | `0.66000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWCADC` | `0.74000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWCHFC` | `1.11000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWEURC` | `1.08000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWEURT` | `1.08000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWGBPC` | `1.27000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWGBPT` | `1.27000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWJPYC` | `0.00670000` | no live price path found from current public snapshot |
| `42220` Celo | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWXAUC` | `3200.00000000` | no live price path found from current public snapshot |
| `42220` Celo | `cWXAUT` | `3200.00000000` | no live price path found from current public snapshot |
| `43114` Avalanche C-Chain | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `43114` Avalanche C-Chain | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot |
| `43114` Avalanche C-Chain | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot |
| `43114` Avalanche C-Chain | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot |
### `1` Ethereum Mainnet `cWEURC/USDC`
- Suggested funding side: `cWEURC`
- Suggested trade raw: `82716`
- Suggested trade units: `0.082716`
- Gap fraction: `0.066166`
- Deployer balance on funding side: `0.004987` `cWEURC`
- Deployer shortfall: `0.077729` `cWEURC`
- Covered: `False`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
export POOL="0x0bC750F9c6DbDcd76B205695A356491b1B9ef098"
export BASE_TOKEN="0xD4aEAa8cD3fB41Dc8437FaC7639B6d91B60A5e8d"
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `1` Ethereum Mainnet `cWGBPC/USDC`
- Suggested funding side: `cWGBPC`
- Suggested trade raw: `2939`
- Suggested trade units: `0.002939`
- Gap fraction: `0.023471`
- Deployer balance on funding side: `0.000478` `cWGBPC`
- Deployer shortfall: `0.002461` `cWGBPC`
- Covered: `False`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
export POOL="0x5488042dF882893a3e7074453E2005CaDE4101b0"
export BASE_TOKEN="0xc074007dc0bfb384b1cf6426a56287ed23fe4d52"
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `1` Ethereum Mainnet `cWJPYC/USDC`
- Suggested funding side: `cWJPYC`
- Suggested trade raw: `26502`
- Suggested trade units: `0.026502`
- Gap fraction: `0.235364`
- Deployer balance on funding side: `0` `cWJPYC`
- Deployer shortfall: `0.026502` `cWJPYC`
- Covered: `False`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
export POOL="0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794"
export BASE_TOKEN="0x07EEd0D7dD40984e47B9D3a3bdded1c536435582"
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `1` Ethereum Mainnet `cWUSDC/USDC`
- Suggested funding side: `USDC`
- Suggested trade raw: `665998742`
- Suggested trade units: `665.998742`
- Gap fraction: `0.754801`
- Deployer balance on funding side: `52.51225` `USDC`
- Deployer shortfall: `613.486492` `USDC`
- Covered: `False`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
export POOL="0x69776fc607e9edA8042e320e7e43f54d06c68f0E"
export BASE_TOKEN="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
export QUOTE_IN_RAW=REPLACE_QUOTE_IN_RAW
export MIN_BASE_OUT_RAW=REPLACE_MIN_BASE_OUT_RAW
cast send "$QUOTE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$QUOTE_IN_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$QUOTE_TOKEN" "$QUOTE_IN_RAW" "$MIN_BASE_OUT_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `1` Ethereum Mainnet `cWUSDT/USDC`
- Suggested funding side: `USDC`
- Suggested trade raw: `7071662`
- Suggested trade units: `7.071662`
- Gap fraction: `0.756229`
- Deployer balance on funding side: `52.51225` `USDC`
- Deployer shortfall: `0` `USDC`
- Covered: `True`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84"
export POOL="0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2"
export BASE_TOKEN="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
export QUOTE_IN_RAW=REPLACE_QUOTE_IN_RAW
export MIN_BASE_OUT_RAW=REPLACE_MIN_BASE_OUT_RAW
cast send "$QUOTE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$QUOTE_IN_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$QUOTE_TOKEN" "$QUOTE_IN_RAW" "$MIN_BASE_OUT_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `100` Gnosis Chain `cWAUDC/USDC`
- Suggested funding side: `cWAUDC`
- Suggested trade raw: `0`
- Suggested trade units: `0`
- Gap fraction: `0.515152`
- Deployer balance on funding side: `0` `cWAUDC`
- Deployer shortfall: `0` `cWAUDC`
- Covered: `True`
- Reserve snapshot: `baseRaw=0 quoteRaw=0`
- Sizing note: `Pool reports zero vault reserves; heuristic trade size is informational only.`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${GNOSIS_RPC_URL}"
export INTEGRATION="0x5866c2CeAfcdB36375A731532B434c370885678a"
export POOL="0xeb5A688dF70be2F790719872Be9Ecc5648aEE460"
export BASE_TOKEN="0xddc4063f770f7c49d00b5a10fb552e922aa39b2c"
export QUOTE_TOKEN="0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83"
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `137` Polygon `cWAUDC/USDC`
- Suggested funding side: `unknown`
- Suggested trade raw: `unknown`
- Suggested trade units: `unknown`
- Gap fraction: `unknown`
- Deployer balance on funding side: `unknown` ``
- Deployer shortfall: `unknown` ``
- Covered: `unknown`
- Sizing note: `Error: contract 0xc21223249ca28397b4b6541dffaecc539bff0c59 does not have any code`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${POLYGON_MAINNET_RPC}"
export INTEGRATION="0x84353eD1f0C7a703a17aBAd19b0dB15Bc9A5e3e5"
export POOL="0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783"
export BASE_TOKEN="0xFb4B6Cc81211F7d886950158294A44C312abCA29"
export QUOTE_TOKEN="0xc21223249CA28397B4B6541dfFaEcC539BfF0c59"
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `43114` Avalanche C-Chain `cWAUDC/USDC`
- Suggested funding side: `cWAUDC`
- Suggested trade raw: `0`
- Suggested trade units: `0`
- Gap fraction: `0.515152`
- Deployer balance on funding side: `0` `cWAUDC`
- Deployer shortfall: `0` `cWAUDC`
- Covered: `True`
- Reserve snapshot: `baseRaw=0 quoteRaw=0`
- Sizing note: `Pool reports zero vault reserves; heuristic trade size is informational only.`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${AVALANCHE_RPC_URL}"
export INTEGRATION="0xf1B771c95573113E993374c0c7cB2dc1a7908B12"
export POOL="0x287edaBDA35195592d7CACe2C1A75eC66caF1D70"
export BASE_TOKEN="0x04e1e22b0d41e99f4275bd40a50480219bc9a223"
export QUOTE_TOKEN="0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
export BASE_IN_RAW=REPLACE_BASE_IN_RAW
export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW
cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `56` BSC (BNB Chain) `cWAUSDT/cWUSDC`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${BSC_RPC_URL}"
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
export PAIR="0x639D7e64C6f1fC676226f20a0C42aEcDD66545E8"
export TOKEN_A="0xe1a51Bc037a79AB36767561B147eb41780124934"
export TOKEN_B="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
export DEADLINE="$(( $(date +%s) + 3600 ))"
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
# Optional: remove bad LP first if you control LP tokens for this pair.
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `56` BSC (BNB Chain) `cWAUSDT/cWUSDT`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${BSC_RPC_URL}"
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
export PAIR="0xe9b082bAa73Fa4DEc7CB3CbD99B19D30BbfE1523"
export TOKEN_A="0xe1a51Bc037a79AB36767561B147eb41780124934"
export TOKEN_B="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
export DEADLINE="$(( $(date +%s) + 3600 ))"
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
# Optional: remove bad LP first if you control LP tokens for this pair.
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `137` Polygon `cWAUSDT/cWUSDC`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${POLYGON_MAINNET_RPC}"
export ROUTER="0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff"
export PAIR="0xe6a5Cb164D4AF7E9794AEd09EC373392D0E7216c"
export TOKEN_A="0xf12e262F85107df26741726b074606CaFa24AAe7"
export TOKEN_B="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
export DEADLINE="$(( $(date +%s) + 3600 ))"
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
# Optional: remove bad LP first if you control LP tokens for this pair.
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `137` Polygon `cWAUSDT/cWUSDT`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${POLYGON_MAINNET_RPC}"
export ROUTER="0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff"
export PAIR="0x8cD2Cb42B81F894eb10D15446DB22A3B31d6fB2E"
export TOKEN_A="0xf12e262F85107df26741726b074606CaFa24AAe7"
export TOKEN_B="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
export DEADLINE="$(( $(date +%s) + 3600 ))"
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
# Optional: remove bad LP first if you control LP tokens for this pair.
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `42220` Celo `cWAUSDT/cWUSDC`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${CELO_RPC_URL}"
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
export PAIR="0xd3B55d6d7C08fDbF5F201e486992643cfF410d91"
export TOKEN_A="0xC158b6cD3A3088C52F797D41f5Aa02825361629e"
export TOKEN_B="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
export DEADLINE="$(( $(date +%s) + 3600 ))"
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
# Optional: remove bad LP first if you control LP tokens for this pair.
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `42220` Celo `cWAUSDT/cWUSDT`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${CELO_RPC_URL}"
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
export PAIR="0xEe9eEBf89C1424e63eFc888929E43a9423357D39"
export TOKEN_A="0xC158b6cD3A3088C52F797D41f5Aa02825361629e"
export TOKEN_B="0x73376eB92c16977B126dB9112936A20Fa0De3442"
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
export DEADLINE="$(( $(date +%s) + 3600 ))"
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
# Optional: remove bad LP first if you control LP tokens for this pair.
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `43114` Avalanche C-Chain `cWAUSDT/cWUSDC`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${AVALANCHE_RPC_URL}"
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
export PAIR="0xaaD6aed8d28B0195D19B4d17F8ee9A1837ff2DCE"
export TOKEN_A="0xff3084410A732231472Ee9f93F5855dA89CC5254"
export TOKEN_B="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
export DEADLINE="$(( $(date +%s) + 3600 ))"
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
# Optional: remove bad LP first if you control LP tokens for this pair.
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```
### `43114` Avalanche C-Chain `cWAUSDT/cWUSDT`
```bash
source smom-dbis-138/scripts/load-env.sh >/dev/null
export RPC_URL="${AVALANCHE_RPC_URL}"
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
export PAIR="0x418322F48D857277ec4BCc96Bc1580aCCB7EA253"
export TOKEN_A="0xff3084410A732231472Ee9f93F5855dA89CC5254"
export TOKEN_B="0x8142BA530B08f3950128601F00DaaA678213DFdf"
export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW
export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW
export DEADLINE="$(( $(date +%s) + 3600 ))"
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
# Optional: remove bad LP first if you control LP tokens for this pair.
cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
"$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
```

View File

@@ -0,0 +1,60 @@
# cW Token USD Pricing (Ethereum Mainnet)
This runbook explains how to attach **USD context** to wrapped basket tokens (`cW*`) when block explorers show **balance** but **$0 value** (no listed market price).
## Tooling
From the repo root:
```bash
./scripts/deployment/price-cw-token-mainnet.sh
./scripts/deployment/price-cw-token-mainnet.sh --json | jq .
```
The script sources `scripts/lib/load-project-env.sh` when present so addresses match your `smom-dbis-138/.env` (or overrides).
**Dependencies:** `cast` (Foundry), `python3`, and `jq` (for `--json`).
## What the script reports
1. **Accounting assumption (1 cWUSDT ≈ 1 USD)**
Use only if your policy treats the wrapper as tracking the underlying stable 1:1. Appropriate for internal books and dashboards where you need a **single consistent mark** without relying on DEX liquidity.
2. **DODO PMM integration — `getPoolPriceOrOracle` / `getPoolPrice`**
Reads `DODO_PMM_INTEGRATION_MAINNET` for the configured pool (`POOL_CWUSDT_USDC_MAINNET`). The integration returns a `uint256` scaled by **1e18** in the project docs when the oracle is aligned with “USD.”
**Important:** For stable/stable pools, the raw integration mid can disagree with **reserve-implied** prices depending on base/quote orientation and PMM parameters. Treat this as one signal, not the only mark.
3. **Implied from vault reserves**
Uses `getPoolReserves` on the same integration for **base** and **quote** raw balances, then applies **token `decimals()`** for cWUSDT and **mainnet canonical USDC** (`USDC_MAINNET`, default `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`).
Computes **USDC per 1 cWUSDT** when base/quote order matches the pool (cWUSDT vs USDC). This is a strong **sanity check** for deep stable pools; thin or imbalanced pools skew the ratio.
4. **Chainlink ETH/USD (macro only)**
Optional reference to the standard ETH/USD feed (`CHAINLINK_ETH_USD_FEED`). This is **not** a direct cW* price; it is useful for macro context or cross-checking RPC health.
## Environment overrides
| Variable | Role |
|----------|------|
| `ETHEREUM_MAINNET_RPC` | Mainnet JSON-RPC endpoint |
| `DODO_PMM_INTEGRATION_MAINNET` | DODO PMM integration contract |
| `POOL_CWUSDT_USDC_MAINNET` | cWUSDT/USDC pool address |
| `CWUSDT_MAINNET` | cWUSDT token |
| `USDC_MAINNET` | Mainnet canonical USDC (do not substitute Chain 138 `OFFICIAL_USDC_ADDRESS` for this script) |
| `CHAINLINK_ETH_USD_FEED` | Chainlink ETH/USD aggregator |
## Etherscan and “$0 value”
Explorers derive the **Value** column from **external** price feeds (Etherscan relies heavily on **CoinGecko** / similar for Ethereum Mainnet ERC-20 USD). Custom `cW*` tokens usually have **no** listing for that contract on chain ID **1**, so **USD shows as zero** even when balances and pools are real.
- **Internal / treasury marks:** use this scripts **accounting line**, **reserve-implied** USDC ratio, or policy—not Etherscans Value column.
- **Actually changing Etherscans 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**.

View File

@@ -1,11 +1,11 @@
# DBIS Chain 138 — Phases 1-3 Production Gate
# DeFi Oracle Meta Mainnet (Chain 138) — Phases 1-3 Production Gate
**Last updated:** 2026-03-28
**Purpose:** Convert the DBIS master plan into an operational production gate. This document records which Phase 1-3 conditions are currently satisfied, which are partially satisfied, and which still block an honest production declaration.
## Overall status
**Current conclusion:** DBIS Chain 138 has a healthy Besu production base and a working Phase 3 liveness slice, but it is **not yet fully production-complete across the broader DBIS Hyperledger stack**.
**Current conclusion:** DeFi Oracle Meta Mainnet (Chain 138) has a healthy Besu production base and a working Phase 3 liveness slice, but it is **not yet fully production-complete across the broader DBIS Hyperledger stack**.
### What is genuinely production-capable now
@@ -82,7 +82,7 @@
## Production blockers
The following items still prevent a full “DBIS Chain 138 production complete” declaration:
The following items still prevent a full “DeFi Oracle Meta Mainnet (Chain 138) production complete” declaration:
1. `6201` is not a verified active secondary FireFly node and is currently treated as retired / standby until rebuilt.
2. Fabric `6000-6002` are not active peer/orderer workloads; current evidence showed placeholder CTs only, and they have now been stopped and retained as reserve inventory.

View File

@@ -64,7 +64,7 @@ The orchestrator:
| **Chain 138** | If token-aggregation has no c*→WETH pool: fund deployer via **genesis alloc** or **validator transfer**. See [FUNDING_AND_DEPLOYMENT_CHECKLIST.md](FUNDING_AND_DEPLOYMENT_CHECKLIST.md). |
| **Protocolink (public chains)** | Use the quote/output from `protocolink-swap-to-gas.cjs`. Build transaction via [Protocolink API](https://docs.protocolink.com/protocolink-api/overview) (estimate router data, build tx); sign with deployer key and submit. |
| **Cronos (25)** | **Manual (multiple routes):** Protocolink does not support Cronos. Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/USDT/USDC → CRO; send to deployer on Cronos. Required ~15 CRO. List all routes: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list`. |
| **Wemix (1111)** | **Manual (multiple routes):** Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/POL → WEMIX; send to deployer on chain 1111. Required ~0.4 WEMIX. List all routes: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list`. Then run `deploy-bridges-config-ready-chains.sh wemix` and complete-config. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). |
| **Wemix (1111)** | **Manual (multiple routes, only if gas needs a top-up):** Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/POL → WEMIX; send to deployer on chain 1111. Current blocker is no longer native gas by default; the live gap is LINK funding on the deployed WEMIX bridge contracts plus a proof transfer. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). |
---

View File

@@ -1,19 +1,19 @@
# Mr. Promod Uniswap V2 Live Pair Discovery
- Generated: `2026-04-18T17:04:47Z`
- Generated: `2026-04-22T04:59:28Z`
- Live pairs discovered: `19`
- Healthy live pairs: `7`
- 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` | |
| `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` | |
| `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` | |
| `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` |

View File

@@ -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` | 59/59 present |
| `./scripts/verify/check-contracts-on-chain-138.sh` | 61/61 present (per current script address list) |
| `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** |

View File

@@ -2,12 +2,14 @@
> 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-03-04
**Last Updated:** 2026-04-19
**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).
**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.
> 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`.
**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).
**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).
---
@@ -18,8 +20,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)** | ⏳ 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 | **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 | **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.1C.2 cW* + edge pools | 📋 Runbook | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md). |
@@ -48,9 +50,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 (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)). |
| 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. |
| Alltra 138 ↔ 651940 | ALT path live. |
| cW* on public chains | Addresses in .env / design; **deployment-status.json empty** — no cW* pool addresses. |
| 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. |
| LINK for CCIP | Fund bridges per lane so cross-chain messages execute. |
---
@@ -71,30 +73,30 @@
## Phase B — Bridge coverage (all 13 chains)
**Goal:** Turn **TBD** into **B/SBS** for Celo and Wemix; ensure LINK-funded lanes so routes execute.
**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.
| Step | Action | Ref |
|------|--------|-----|
| 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.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.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, **42220**, **1111** all B/SBS; 138↔651940 remains ALT. Routing matrix TBD cells removed.
**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.
---
## Phase C — Public-chain cW* and edge pools
**Goal:** Enable swap-bridge-swap and arbitrage on **public chains** (cW* tokens + DODO/Uniswap edge pools per pool-matrix).
**Goal:** Track the remaining gaps after substantial public-chain `cW*` rollout already landed.
| Step | Action | Ref |
|------|--------|-----|
| 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.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.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:** Each public chain has cW* and edge pools so SBS and arbitrage can execute on both 138 and edge.
**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.
---

View File

@@ -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:** **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).
**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).
---

View File

@@ -1,22 +1,23 @@
# Wemix (1111) deployments — tabled
**Last Updated:** 2026-03-06
**Status:** All Wemix network deployments (CCIP bridges, config, LINK funding on 1111) are **tabled** until the deployer can acquire WEMIX for gas.
**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`.
---
## Reason
- 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.
- 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.
---
## Options to un-table
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).
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.
**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).
@@ -24,9 +25,9 @@
## What remains tabled
- 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.
- 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).
---

View File

@@ -1,35 +1,103 @@
# WEMIX Bridge Verification Status
**Last Updated:** 2026-04-18
**Last Updated:** 2026-04-20
## Current State
## Current Repo-Backed State
The WEMIX bridge contracts are:
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.
- deployed live
- wired bidirectionally with Chain 138
- **not yet confirmed as explorer-verified/published**
Contracts:
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`
## Verified Blockers
What is still not true yet:
1. The repo did not previously have a WEMIX-specific verification helper.
2. WEMIX public explorer pages are behind bot protection, so direct scripted page checks are unreliable.
3. WEMIX explorer verification needs an `api-key`, and the repo did not previously expose a dedicated `WEMIXSCAN_API_KEY`.
4. The WEMIX deploy required a `paris` EVM target, so verification must use that same build profile.
- `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`
## Repo-Native Verification Command
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
```
Required env:
But this should only be used after the deployment addresses themselves are first reconciled.
Required env remains:
- `WEMIXSCAN_API_KEY`
- `WEMIX_RPC`
@@ -40,9 +108,9 @@ Required env:
- `WETH10_WEMIX`
- `LINK_TOKEN_WEMIX`
## Important Build Assumption
## Build Assumption
Verification must use:
If and when WEMIX verification is attempted, the repo documents the required build profile as:
- Solidity `0.8.20`
- optimizer enabled

View File

@@ -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 Ledgers 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 Ledgers 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 Ledgers 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 |

View File

@@ -1,4 +1,4 @@
# 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
@@ -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
@@ -65,7 +65,7 @@ Important: Trusts 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 +113,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

View File

@@ -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"] },

View File

@@ -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 Ledgers App-Ethereum (and have Chain 138 in our app-ethereum fork).

View File

@@ -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"] },

View File

@@ -0,0 +1,197 @@
# 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.

View File

@@ -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 repos** 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 Lives 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 repos 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 repos 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`.

View File

@@ -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": "your-proxmox-ip-or-hostname",
"PROXMOX_HOST": "proxmox-api.d-bis.org",
"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=your-proxmox-ip-or-hostname
PROXMOX_HOST=proxmox-api.d-bis.org
PROXMOX_USER=root@pam
PROXMOX_TOKEN_NAME=your-token-name
PROXMOX_TOKEN_VALUE=your-token-secret
@@ -124,9 +124,11 @@ 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 Token ID as `PROXMOX_TOKEN_NAME`
- Use the bare Token ID as `PROXMOX_TOKEN_NAME` when possible
- 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)
@@ -190,7 +192,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://your-proxmox-host:8006/api2/json/nodes
https://proxmox-api.d-bis.org:8006/api2/json/nodes
```
### Permission Errors
@@ -200,4 +202,3 @@ 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

View File

@@ -1,4 +1,4 @@
# Next Steps: Chain 138 RPC (Defi Oracle Meta Mainnet) Complete with .env
# Next Steps: Chain 138 RPC (DeFi Oracle Meta Mainnet) Complete with .env
**Last Updated:** 2026-01-31
**Document Version:** 1.0

View File

@@ -1,6 +1,6 @@
# Phoenix Deploy API — Gitea Integration
**Last Updated:** 2026-03-23
**Last Updated:** 2026-04-20
**Status:** Active Documentation
---
@@ -12,9 +12,9 @@ The Phoenix Deploy API ([phoenix-deploy-api/](../../phoenix-deploy-api/)) receiv
## Architecture
```
Gitea (push/tag) → Webhook → Phoenix Deploy API → (stub: logs/queues)
Gitea Commit Status API (pending/success/failure)
Gitea (push/tag) → Webhook / Action → Phoenix Deploy API → deploy target command
health check + Gitea commit status
```
## Setup
@@ -31,15 +31,25 @@ GITEA_TOKEN=<token> PHOENIX_DEPLOY_SECRET=<secret> npm start
Or as systemd service on dev-vm.
**Bootstrap helper (recommended):**
```bash
bash scripts/dev-vm/bootstrap-phoenix-cicd.sh --repo d-bis/proxmox
```
This runs validation, deploys `phoenix-deploy-api`, and smoke-checks `/health` and `/api/deploy-targets`.
### 2. Gitea Webhook Configuration
**Via script (recommended):**
**Via script (for repos that are not already deploying through Gitea Actions):**
```bash
# Ensure Phoenix Deploy API is running (e.g. on dev-vm at 192.168.11.59:4001)
GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=http://192.168.11.59:4001/webhook/gitea bash scripts/dev-vm/add-gitea-webhook-phoenix.sh d-bis/proxmox
GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=http://192.168.11.59:4001/webhook/gitea PHOENIX_DEPLOY_SECRET=shared-secret bash scripts/dev-vm/add-gitea-webhook-phoenix.sh some/repo
```
Set `PHOENIX_WEBHOOK_DEPLOY_ENABLED=1` on the deploy service host if you want webhook events to execute the default target. Leave it unset or `0` when the repo already deploys through Gitea Actions.
**Manual (per-repository):**
1. Gitea → d-bis/proxmox → Settings → Webhooks → Add Webhook
@@ -70,6 +80,19 @@ Create a token at https://gitea.d-bis.org/user/settings/applications with scope
}
```
## Deploy target discovery
```bash
curl -sS http://127.0.0.1:4001/api/deploy-targets | jq .
```
Targets are loaded from `phoenix-deploy-api/deploy-targets.json`.
Current repo-shipped targets include:
- `default` for `d-bis/proxmox` → publish `phoenix-deploy-api` to VMID `5700`
- `portal-live` for `d-bis/proxmox` → run `scripts/deployment/sync-sankofa-portal-7801.sh` and verify `http://192.168.11.51:3000/`
## Public-sector program manifest (runtime)
The API serves the repo manifest at **`GET /api/v1/public-sector/programs`** (no API key). Source file: [`config/public-sector-program-manifest.json`](../../config/public-sector-program-manifest.json). On systemd install, `install-systemd.sh` copies it next to `server.js`; override with `PUBLIC_SECTOR_MANIFEST_PATH` or `PHOENIX_REPO_ROOT`.
@@ -78,8 +101,15 @@ The API serves the repo manifest at **`GET /api/v1/public-sector/programs`** (no
curl -sS http://127.0.0.1:4001/api/v1/public-sector/programs | jq '.programs[].id'
```
## Status
- Real deploy target execution is implemented.
- Target health checks are supported.
- Gitea commit status is updated from the deploy service.
- Webhook helper supports the shared secret, and webhook deploy execution is opt-in via `PHOENIX_WEBHOOK_DEPLOY_ENABLED=1`.
## Next Steps
- Implement full deploy logic (Proxmox SSH, run deploy scripts)
- Integrate into Sankofa Phoenix API (VMID 8600)
- Add NPMplus proxy for phoenix-deploy if exposed publicly
- Add a Phoenix API target for `7800` or `8600`.
- Integrate into Sankofa Phoenix API (VMID 8600) if you want a single control plane.
- Add NPMplus proxy for phoenix-deploy if exposed publicly.

View File

@@ -17,13 +17,15 @@ Scripts that call the Proxmox REST API (e.g. `scripts/lib/proxmox-api.sh`, `scri
| Variable | Example | Description |
|----------|---------|-------------|
| `PROXMOX_HOST` | `192.168.11.11` | Proxmox host (primary; e.g. r630-01). |
| `PROXMOX_HOST` | `proxmox-api.d-bis.org` | Proxmox host or Cloudflare Access entrypoint. |
| `PROXMOX_PORT` | `8006` | API port. |
| `PROXMOX_USER` | `root@pam` | User for the token. |
| `PROXMOX_TOKEN_NAME` | `proxmox-workspace-api` | Token ID (name). |
| `PROXMOX_TOKEN_NAME` | `proxmox-workspace-api` | Bare token name is preferred; helpers also accept a full token id such as `root@pam!proxmox-workspace-api`. |
| `PROXMOX_TOKEN_VALUE` | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | Token secret (UUID). |
**Authorization header:** `PVEAPIToken=${PROXMOX_USER}!${PROXMOX_TOKEN_NAME}=${PROXMOX_TOKEN_VALUE}`
**Authorization header:** `PVEAPIToken=${PROXMOX_USER}!${bare_token_name}=${PROXMOX_TOKEN_VALUE}`
If `PROXMOX_TOKEN_NAME` already contains the full token id (`user@realm!token-name`), active helpers in this repo normalize it or pass it through correctly so the auth header is not double-prefixed.
---
@@ -40,7 +42,7 @@ This creates a new API token on the host, parses the secret from the one-time ou
**Option B — Manual:** In Proxmox UI: **Datacenter → Permissions → API Tokens → Add**. Create token, copy the secret once, then set in `.env`:
```bash
PROXMOX_HOST=192.168.11.11
PROXMOX_HOST=proxmox-api.d-bis.org
PROXMOX_PORT=8006
PROXMOX_USER=root@pam
PROXMOX_TOKEN_NAME=your-token-name

View File

@@ -11,7 +11,7 @@
| Field | Requirement | Our value | Status |
|-------|--------------|-----------|--------|
| **name** | string, 130 chars, pattern `^[\w ]+$` | "DBIS Chain 138 Token List" (24 chars) | ✅ |
| **name** | string, 130 chars, pattern `^[\w ]+$` | "DeFi Oracle Meta Mainnet Token List" (24 chars) | ✅ |
| **timestamp** | date-time format | "2026-02-16T00:00:00.000Z" | ✅ |
| **version** | { major, minor, patch } | { 1, 3, 0 } | ✅ |
| **tokens** | array, 110000 items | 6 tokens | ✅ |
@@ -43,7 +43,7 @@ cd /home/intlc/projects/token-lists && npm install && npx ajv validate -s src/to
| Field | Required | Our value | Status |
|-------|----------|-----------|--------|
| **name** | ✅ | "Defi Oracle Meta Mainnet" | ✅ |
| **name** | ✅ | "DeFi Oracle Meta Mainnet" | ✅ |
| **shortName** | ✅ | "dfio-meta-main" — pattern `^[A-Za-z0-9-_]{1,64}$` | ✅ |
| **chain** | ✅ | "dfiometa" | ✅ |
| **chainId** | ✅ | 138 | ✅ |
@@ -83,7 +83,7 @@ npx prettier --write _data/chains/eip155-138.json
| Field | Requirement | Our value | Status |
|-------|--------------|-----------|--------|
| **id** | lowercase, never change | "dfiometa" | ✅ |
| **name** | readable | "Defi Oracle Meta Mainnet" | ✅ |
| **name** | readable | "DeFi Oracle Meta Mainnet" | ✅ |
| **coinId** | 10000000 + chainId for EVM clones | 10000138 | ✅ |
| **symbol** | native coin | "ETH" | ✅ |
| **decimals** | 18 | 18 | ✅ |

View File

@@ -66,7 +66,7 @@ This directory contains setup and configuration guides.
**Chain 138 / Wallets (overview first; all repos in ~/projects/):**
- **[CHAIN138_WALLET_REPOSITORIES.md](CHAIN138_WALLET_REPOSITORIES.md)** ⭐⭐⭐ - **Canonical layout:** metamask-integration, LedgerLive, app-ethereum, TrustWallet-Integration each in `~/projects/`. All items **Yes / Completed.**
- **[CHAIN138_WALLET_ECOSYSTEM_AND_RATIONALE.md](CHAIN138_WALLET_ECOSYSTEM_AND_RATIONALE.md)** ⭐⭐⭐ - **Why** we have the MetaMask Snap, **why** we need Ledger Live when we already use App-Ethereum, Trust Wallet support; links to all wallet docs.
- **[ADD_CHAIN138_TO_LEDGER_LIVE.md](ADD_CHAIN138_TO_LEDGER_LIVE.md)** ⭐⭐ - Add Defi Oracle Meta Mainnet (Chain 138) to Ledger Live (request + materials).
- **[ADD_CHAIN138_TO_LEDGER_LIVE.md](ADD_CHAIN138_TO_LEDGER_LIVE.md)** ⭐⭐ - Add DeFi Oracle Meta Mainnet (Chain 138) to Ledger Live (request + materials).
- **[ADD_CHAIN138_TO_TRUST_WALLET.md](ADD_CHAIN138_TO_TRUST_WALLET.md)** ⭐⭐ - Add Chain 138 to Trust Wallet (user manual add via Chainlist; official Wallet Core PR steps; materials in ~/projects/TrustWallet-Integration).
- **[CHAIN138_WALLET_PROJECTS_COMPLETION_REVIEW.md](CHAIN138_WALLET_PROJECTS_COMPLETION_REVIEW.md)** ⭐⭐ - **Completion and test review:** all four projects verified; MetaMask E2E 7/7 + Snap unit tests pass; Ledger/app-ethereum/Trust status.

View File

@@ -25,7 +25,7 @@ Full stack has been proven correct:
| **Proxy** | NPMplus (192.168.11.167:443) routes by Host header correctly |
| **Upstream** | Besu RPC (192.168.11.221:8545 / :8546) reachable |
| **RPC response** | `eth_chainId`**0x8a** |
| **Chain ID** | **0x8a = 138** (Defi Oracle Meta Mainnet) |
| **Chain ID** | **0x8a = 138** (DeFi Oracle Meta Mainnet) |
Validation command (bypasses public IP; connects directly to NPMplus on LAN):

View File

@@ -1,4 +1,4 @@
# RPC Verification Memo Chain 138 (Defi Oracle Meta Mainnet)
# RPC Verification Memo Chain 138 (DeFi Oracle Meta Mainnet)
**Last Updated:** 2026-01-31
**Document Version:** 1.0
@@ -44,7 +44,7 @@ Response: eth_chainId → 0x8a (Chain ID 138)
| **Proxy** | NPMplus routes by Host to VMID 2201 |
| **Upstream** | Besu RPC (192.168.11.221:8545 / :8546) reachable and responsive |
| **RPC** | `eth_chainId` returns `0x8a` (138) |
| **Chain** | Defi Oracle Meta Mainnet sovereign EVM, no mainnet/testnet collision |
| **Chain** | DeFi Oracle Meta Mainnet sovereign EVM, no mainnet/testnet collision |
**Validation command** (from a host that can reach NPMplus, e.g. LAN with Split DNS or `--resolve`):

View File

@@ -19,7 +19,7 @@
**Live Explorer (HTML/JS version):**
```
SolaceScanScout
The Defi Oracle Meta Explorer
The DeFi Oracle Meta Explorer
Navigation Links:
├── 🏠 Home
@@ -34,7 +34,7 @@ Search Box: Center (address/tx hash/block number)
**Next.js Frontend (layout.tsx - not deployed):**
```
SolaceScanScout
The Defi Oracle Meta Explorer
The DeFi Oracle Meta Explorer
Navigation Links:
├── Blocks
@@ -47,7 +47,7 @@ Navigation Links:
| Feature | Status | Notes |
|---------|--------|-------|
| **Logo/Branding** | ✅ Good | "SolaceScanScout" + tagline "The Defi Oracle Meta Explorer" |
| **Logo/Branding** | ✅ Good | "SolaceScanScout" + tagline "The DeFi Oracle Meta Explorer" |
| **Search** | ✅ Working | Address/tx hash/block number search |
| **Blocks** | ✅ Working | View all blocks |
| **Transactions** | ✅ Working | View all transactions |

View File

@@ -1,8 +1,16 @@
# Storage Growth and Health — Predictable Growth Table & Proactive Monitoring
**Last updated:** 2026-03-28
**Last updated:** 2026-04-22
**Purpose:** Real-time data collection and a predictable growth table so we can stay ahead of disk space issues on hosts and VMs.
### Recent operator maintenance (2026-04-22)
- **r630-01 `local` (ZFS `rpool/var-lib-vz`) was full:** cause was **hundreds of `vzdump` tarballs** under `/var/lib/vz/dump` with no retention. **Pruned** to two newest per VMID; deployed **`/usr/local/sbin/prune-proxmox-vzdump-dump.sh`** + **weekly cron** on **ml110, r630-01, r630-02** via `scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh`. **`pvesh get /cluster/backup`** is still **[]** (no GUI scheduled jobs); if jobs are added later, set **maxfiles** in line with prune **keep=2** (see comment in that deploy script).
- **r630-02 `/var/lib/vz/dump`:** deleted **40** orphan **`vzdump-*.log`** files **mtime +90d**; helper: `scripts/maintenance/prune-orphan-vzdump-logs.sh <ip> --apply`.
- **Fleet `fstrim`:** `FSTRIM_TIMEOUT_SEC=25` on **r630-01** + **r630-02** — many CTs still **FITRIM not permitted**; others trimmed **~hundreds of MiBGiB** per guest (thin pool reclaim best-effort). **`collect-storage-growth-data.sh --append`** + snapshot under `logs/storage-growth/`.
- **Stuck `vzdump` 2500 (r630-01) follow-up:** Parent **Perl** process was not enough to clear state; a **`task` worker** (UPID `vzdump:2500`) stayed in **D-state** in **`fuse_unlink` on `/etc/pve` (pmxcfs)** and held **`pve-config-2500.lock`**, blocking **`lvremove`** of **`snap_vm-2500-disk-0_vzdump`**. **Remediation:** `kill -9` (did not clear D-state); **`systemctl restart pve-cluster`** on **r630-01** cleared the task and lock; then **`lvremove` of the snap** succeeded. Incomplete **`*.tar.dat`** removed. **ZFS `rpool`:** ran **`zpool upgrade rpool`** on **r630-01** and **r630-02** (enabled `block_cloning_endian`, `physical_rewrite`; `zpool status` no longer nags to upgrade). **Caution:** restarting **`pve-cluster` on one node in a corosync cluster** can cause brief **API/UI** blip; verify quorum after. Prefer fixing root cause: avoid **`kill -9` on `vzdump`**; use Proxmox **Task viewer → Stop** when possible, or investigate hung **FUSE** before **SIGKILL** on a task.
- **Daily host backup script (r630-01):** Source **`scripts/maintenance/proxmox-backup-all-running-ct.sh`** → installed as **`/usr/local/bin/proxmox-backup.sh`** (cron `0 2 * * *` + `flock`). **Switched `--compress` to `zstd`**; **removed** fragile **`find -mtime +7` deletes** (they only matched `.tar.gz` and fought real retention). **Retention** is the weekly **`/usr/local/sbin/prune-proxmox-vzdump-dump.sh`**. Optional **`VZDUMP_SKIP_VMIDS`** to skip heavy CTs. **Cluster check:** `scripts/maintenance/verify-pve-cluster-health.sh` after any `pve-cluster` restart.
### Recent operator maintenance (2026-03-28)
- **Fleet checks (same day, follow-up):** Ran `collect-storage-growth-data.sh --append`, `storage-monitor.sh check`, `proxmox-host-io-optimize-pass.sh` (swappiness/sysstat; host `fstrim` N/A on LVM root). **Load:** ml110 load dominated by **Besu (Java)** and **cloudflared**; r630-01 load improved after earlier spike (still many CTs). **r630-01 `data` thin:** after guest `fstrim` fleet, **pvesm** used% dropped slightly (e.g. **~71.6% → ~70.2%** on 2026-03-28 — reclaim varies by CT). **ZFS:** r630-01 / r630-02 `rpool` ONLINE; last scrub **2026-03-08**, 0 errors. **`/proc/mdstat` (r630-01):** RAID devices present and active (no resync observed during check).

View File

@@ -0,0 +1,174 @@
# Vault Shard Custody Policy
**Last Updated:** 2026-04-18
**Status:** Proposed decision draft for approve/revise
**Scope:** Secret-shard custody for vault-related recovery material, rotation preparation, and admin-control continuity
---
## 1. Purpose
This document defines the custody policy for any shard-split recovery material used in the vault and contract-admin control plane. It exists to remove ambiguity before live admin rotation work begins.
The policy is designed to:
- prevent any one person from reconstructing privileged material alone;
- preserve recoverability if one or more custodians become unavailable;
- keep rotation work operationally realistic for Chain 138 and the follow-on chains;
- keep custody procedures compatible with a Safe-first admin model.
---
## 2. Decision Summary
**Recommended selection for §3:** adopt a **3-of-5 shard custody model** with **role-separated custodians**, **one shard per custodian**, and **Safe-based contract admin** as the steady-state control plane.
This means:
- recovery material is split into **5 shards**;
- any **3 shards** are required to reconstruct;
- no custodian may hold more than **1 shard**;
- the operational target admin on-chain is a **Gnosis Safe / Safe multisig**, not an EOA;
- shard reconstruction is allowed only for an approved rotation, incident recovery, or disaster-recovery drill.
---
## 3. Recommended Custody Policy
### 3.1 Selected model
Use **Shamir-style 3-of-5 sharding** for the recovery secret or equivalent root material that would allow privileged admin continuity.
This is the recommended balance because:
- **2-of-3 is too fragile** for travel, turnover, illness, or simultaneous unavailability;
- **4-of-7 adds coordination drag** without enough extra safety for the current operator size;
- **3-of-5** keeps strong separation of control while still being practical during a real incident.
### 3.2 Required custodian classes
Assign the 5 shards to 5 distinct custodians drawn from distinct responsibility domains:
1. **Operations lead**
2. **Security lead**
3. **Platform or protocol lead**
4. **Executive or governance delegate**
5. **Independent recovery custodian**
The independent recovery custodian should not be part of the routine deployer or signer path. This can be a board-level delegate, outside counsel escrow, or another approved non-operator custodian with documented identity and retrieval process.
### 3.3 Custody rules
- Each custodian holds exactly **one shard**.
- No household, single reporting line, or single laptop/password manager may control enough material to reach threshold alone.
- Shards must be stored **offline** or in an **offline-first** medium.
- At least **2 shards** must be held in physically distinct locations.
- No shard may be stored in the same place as the full reconstruction instructions unless those instructions are separately access-controlled.
- No plaintext shard may be committed to git, chat, ticketing, or shared cloud docs.
- Photographs, screenshots, clipboard sync, and auto-backup of shard material are prohibited.
### 3.4 Reconstruction approval gate
Reconstruction may occur only when one of the following is true:
- an approved **planned admin rotation** is in progress;
- a **suspected key compromise** or confirmed loss event requires emergency action;
- a scheduled **disaster-recovery drill** has been approved in advance.
Every reconstruction event requires:
- a ticket or written change record;
- named approvers;
- reason for reconstruction;
- time window;
- witness log of which custodians participated;
- post-event confirmation that temporary plaintext was destroyed.
### 3.5 Safe-first operating model
The shard policy does **not** mean the reconstructed secret should become the daily operating admin.
The steady-state operating model is:
- on-chain admin lives in a **Safe**;
- Safe signers use hardware-backed wallets where possible;
- shard reconstruction is reserved for recovery or controlled migration events;
- post-rotation, recovered or superseded material is re-sharded or retired.
### 3.6 Recommended Safe posture
For `NEW_ADMIN_ADDRESS`, the preferred target is:
- a **Chain 138 Safe**;
- **3-of-5 threshold** if 5 reliable signers are available;
- **2-of-3 threshold** only as an interim fallback if the 5-signer set is not ready yet.
If a temporary `2-of-3` Safe is used to unblock Chain 138, it should be explicitly marked as **interim** and scheduled for migration to **3-of-5** before broader multi-chain rollout.
### 3.7 Lifecycle requirements
- Re-verify custodian availability quarterly.
- Re-issue shards after any custodian departure, suspected exposure, or failed drill.
- Run at least one documented recovery drill before expanding from Chain 138 to additional production chains.
- Keep a custody register with custodian name, role, storage method, storage region, last attestation date, and replacement contact path.
---
## 4. Operational Guidance
### 4.1 When this policy blocks work
Rotation work should be treated as blocked if any of the following remain unresolved:
- the five custodian slots are not assigned;
- the threshold is not approved;
- `NEW_ADMIN_ADDRESS` is still an undecided EOA-versus-Safe placeholder;
- no recovery log template exists for reconstruction events.
### 4.2 What can proceed before live rotation
The following work may proceed before live execution:
- non-broadcast Forge scripts;
- dry-run and compile validation;
- runbook drafting;
- Safe creation and signer enrollment;
- custody register preparation;
- incident and recovery checklist review.
### 4.3 What must not proceed before approval
The following should not proceed until this policy is approved or revised and approved:
- live admin transfer;
- live shard generation for production recovery material;
- any irreversible decommissioning of the old admin path;
- multi-chain expansion of the rotation procedure.
---
## 5. Approve / Revise Checklist
Approve if you agree with all of the following:
- **Threshold:** `3-of-5`
- **Steady-state admin:** Safe multisig
- **Chain 138 target:** `NEW_ADMIN_ADDRESS` is a Chain 138 Safe
- **Fallback:** temporary `2-of-3` Safe allowed only if explicitly interim
- **Rollout gate:** no other-chain live rotation until Chain 138 drill and verification are complete
Revise if you want to change:
- threshold size;
- custodian classes;
- whether the independent custodian is internal or external;
- whether interim `2-of-3` is allowed;
- whether one additional chain may run in parallel with Chain 138.
---
## 6. Recommendation
Approve the **3-of-5 Safe-first** model as written.
It is the strongest option that still fits the current repos operational maturity, it removes the single-operator failure mode, and it gives the Chain 138 rotation work a clear governance target without forcing immediate parallel expansion.

View File

@@ -1,57 +1,100 @@
# CMC / CoinGecko Submission Runbook
**Last Updated:** 2026-02-15
**Last Updated:** 2026-04-21
**Status:** Canonical process for Chain 138 and 651940 listing submission
**Purpose:** Single runbook tying prerequisites, report API export, CoinGecko/CMC submission steps, and "where to update when done."
---
## 1. Prerequisites checklist
## 1. Canonical public references
Use these as the public-facing source of truth for Chain 138:
- **Canonical attachment:** [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md)
- **Canonical chain wrapper:** [COINGECKO_SUBMISSION_PACKAGE.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_PACKAGE.md)
- **Official chain name:** `DeFi Oracle Meta Mainnet`
- **Website:** `https://d-bis.org/`
- **Documentation:** `https://info.defi-oracle.io/`
- **Explorer:** `https://explorer.d-bis.org/`
- **Chainlist:** `https://chainlist.org/chain/138`
### 1.1 CoinGecko / CMC API keys vs pool visibility and links
| Mechanism | What it does |
|-----------|----------------|
| **`COINGECKO_API_KEY` and `COINMARKETCAP_API_KEY`** (e.g. in token-aggregation `.env`) | Lets **your** service **call** [CoinGecko](https://www.coingecko.com/en/api) and [CoinMarketCap](https://coinmarketcap.com/api/) APIs—usually to **ingest** external prices/metadata and get better rate limits. This is **not** the same as publishing every pool on [coingecko.com](https://www.coingecko.com) or [coinmarketcap.com](https://coinmarketcap.com). |
| **Your report API** (`GET /api/v1/report/all`, `/report/coingecko`, `/report/cmc` on the token-aggregation service) | Exports **your** canonical tokens and **pools** (addresses, DEX id, TVL/volume fields)—the right place to confirm **all pools you track** are present. Public examples: `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138` (and other `chainId` values you deploy). See [CMC_COINGECKO_REPORTING.md](../../../smom-dbis-138/services/token-aggregation/docs/CMC_COINGECKO_REPORTING.md). Reading these endpoints does **not** require CG/CMC keys; the keys matter for **inbound** enrichment inside the service. |
| **Vendor web URLs** (`coingecko.com/...`, `dex.coinmarketcap.com/token/ethereum/0x.../`, etc.) | Appear only after **listing / verification** on that product (manual or partner flow). You cannot enumerate “all our pools on CoinGecko” via API key alone if those tokens are not listed. |
**Explorers vs aggregators:** **Blockscout** (your chain explorer): you control verification, token lists, and config. **Etherscan-class sites** and **CoinGecko/CMC** are separate products—update explorers for correctness; use this runbook + [ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md) for off-chain USD and DexScan visibility.
**Operational check:** `curl` your live `/api/v1/report/all?chainId=<id>` (repeat per chain), then—for **Ethereum Mainnet** assets—compare to DexScan/CG only where you have already completed submission; unlisted chains will never show full parity on third-party UIs.
## 2. Prerequisites checklist
Before submitting, ensure:
- [ ] **Report API reachable:** Token Aggregation Service is running and `GET /api/v1/report/coingecko` and `GET /api/v1/report/cmc` are reachable (e.g. `https://your-api/report/coingecko`, or localhost for export-only).
- [ ] **Token list export:** You can export JSON from the report API (see §2). Optionally use [COINGECKO_SUBMISSION_PACKAGE](COINGECKO_SUBMISSION_PACKAGE.md) for chain/token tables.
- [ ] **Token list export:** You can export JSON from the report API (see §3). Optionally use [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) for chain/token tables and verification links.
- [ ] **Logos:** Token logos 512×512 PNG for each token you submit. Chain logo if submitting the chain.
- [ ] **Chain details:** Chain name, Chain ID, RPC URLs, block explorer, native currency (see [COINGECKO_SUBMISSION_PACKAGE](COINGECKO_SUBMISSION_PACKAGE.md)).
**Note:** If CoinGecko/CMC do not yet support ChainID 138 or 651940, keep this runbook for when they do; the report API remains the source of truth and you can submit as soon as the platforms add the chain.
## 2.1 Credibility certification matrix
Use this matrix to distinguish between credibility items we can complete ourselves and those that require third-party approval.
| Item | Owner | Status guidance |
|----------|----------|----------|
| Canonical chain metadata, token tables, report endpoints, logos | Repo/operator | Must be complete before any submission. |
| `validate-config-files.sh` and `run-all-validation.sh --skip-genesis` | Repo/operator | Must pass before submission. |
| `check-contracts-on-chain-138.sh` on the current canonical set | Repo/operator | Should be captured as current on-chain evidence. |
| Public DNS / SSL / HTTPS / RPC / WSS reachability | Repo/operator | Should be checked with `verify-end-to-end-routing.sh --profile=public`. |
| Blockscout verification for Chain 138 contracts | Repo/operator with explorer UI | Strongly recommended before submission; manual follow-through may still be needed. |
| Exact-match verification for public-chain `cW*` contracts | Repo/operator with public explorers | Strongly recommended before submission to avoid "unverified" or "similar match only" warnings. |
| CoinGecko token/chain listing approval | CoinGecko | External review. Submission can be completed by us; approval cannot. |
| CoinMarketCap token/listing/DexScan verification | CoinMarketCap | External review. Submission can be completed by us; approval cannot. |
| Third-party security audit publication | External auditor | External engagement required; not replaceable by internal docs alone. |
For the current canonical status summary, use [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md).
---
## 2. Step-by-step submission
## 3. Step-by-step submission
### 2.1 Export data from report API
### 3.1 Export data from report API
```bash
# Chain 138
curl "https://<your-token-aggregation-url>/api/v1/report/coingecko?chainId=138" -o report-coingecko-138.json
curl "https://<your-token-aggregation-url>/api/v1/report/cmc?chainId=138" -o report-cmc-138.json
curl "https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138" -o report-coingecko-138.json
curl "https://explorer.d-bis.org/api/v1/report/cmc?chainId=138" -o report-cmc-138.json
# Chain 651940 (ALL Mainnet)
curl "https://<your-token-aggregation-url>/api/v1/report/coingecko?chainId=651940" -o report-coingecko-651940.json
curl "https://<your-token-aggregation-url>/api/v1/report/cmc?chainId=651940" -o report-cmc-651940.json
# Cross-chain (CCIP, Alltra, Trustless) — events between Chain 138, ALL Mainnet, and reporting networks
curl "https://<your-token-aggregation-url>/api/v1/report/cross-chain?chainId=138" -o report-cross-chain-138.json
curl "https://explorer.d-bis.org/api/v1/report/cross-chain?chainId=138" -o report-cross-chain-138.json
```
Use these files to fill CoinGecko/CMC forms or attach if they accept file upload. Response format is described in [CMC_COINGECKO_REPORTING.md](../../../../smom-dbis-138/services/token-aggregation/docs/CMC_COINGECKO_REPORTING.md).
### 2.2 CoinGecko
### 3.2 CoinGecko
1. **Chain submission (if applicable):** Use [CoinGecko listing request](https://www.coingecko.com/en/coins/new) or partner/API. Provide chain name (e.g. "DeFi Oracle Meta Mainnet"), Chain ID (138 or 651940), RPC URLs, explorer, API URL e.g. `https://<your-domain>/api/v1/report/coingecko?chainId=138`.
2. **Token submission:** For each token, provide contract address, symbol, name, decimals; attach logo 512×512. Use data from `report-coingecko-138.json` / `report-coingecko-651940.json` or from [COINGECKO_SUBMISSION_CUSDT](COINGECKO_SUBMISSION_CUSDT.md), [COINGECKO_SUBMISSION_CUSDC](COINGECKO_SUBMISSION_CUSDC.md), [COINGECKO_SUBMISSION_PACKAGE](COINGECKO_SUBMISSION_PACKAGE.md).
1. **Chain submission (if applicable):** Use [CoinGecko listing request](https://www.coingecko.com/en/coins/new) or partner/API. Provide chain name `DeFi Oracle Meta Mainnet`, Chain ID `138`, website, docs, explorer, Chainlist URL, and API URL `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138`.
2. **Token submission:** For each token, provide contract address, symbol, name, decimals, and logo. Use data from `report-coingecko-138.json` / `report-coingecko-651940.json` or from [COINGECKO_SUBMISSION_CUSDT](COINGECKO_SUBMISSION_CUSDT.md), [COINGECKO_SUBMISSION_CUSDC](COINGECKO_SUBMISSION_CUSDC.md), and [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md).
3. **Reference:** [COINGECKO_SUBMISSION_GUIDE](COINGECKO_SUBMISSION_GUIDE.md), [smom-dbis-138 token-aggregation COINGECKO_SUBMISSION](../../../smom-dbis-138/services/token-aggregation/docs/COINGECKO_SUBMISSION.md).
4. **Etherscan “Value” on Ethereum Mainnet:** Holders and token pages show **$0** until aggregators (typically **CoinGecko** first) list **that Mainnet contract** with a tradeable/market USD. That is **not** fixable from Solidity or this repo alone—see [ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md).
### 2.3 CoinMarketCap (CMC)
### 3.3 CoinMarketCap (CMC)
1. Use CMCs listing/submission process (DEX or token form). Provide chain and token data in the format returned by `GET /api/v1/report/cmc?chainId=138` (and 651940).
2. Same token list and logos as for CoinGecko; CMC format includes `pairs`, `volume_24h`, `market_cap`, `liquidity_usd` as per [CMC_COINGECKO_REPORTING](../../../smom-dbis-138/services/token-aggregation/docs/CMC_COINGECKO_REPORTING.md).
---
## 3. Unsupported chains (138 / 651940)
## 4. Unsupported chains (138 / 651940)
CoinGecko and CMC may not list ChainID 138 or 651940 until they add the platform. Until then:
@@ -61,9 +104,19 @@ CoinGecko and CMC may not list ChainID 138 or 651940 until they add the platform
No code change is required; submission is manual when the platforms accept the chain.
## 4.1 High-signal credibility tasks still worth completing
After the repo-side checks pass, the remaining highest-value credibility tasks are:
1. Confirm Blockscout source verification for the active Chain 138 contracts.
2. Confirm exact-match explorer verification for the public `cW*` contracts on Ethereum, BSC, Polygon, Base, Arbitrum, Optimism, Avalanche, Gnosis, and Celo.
3. Submit CoinGecko chain and token materials using the report API exports and this attachment.
4. Submit CoinMarketCap chain/token materials and request DexScan verification for public token pages.
5. Publish a third-party audit or formal attestation package and add it to the attachment once available.
---
## 4. When done — where to update
## 5. When done — where to update
After submission (or when chains are listed), update the following so the rest of the repo stays in sync:
@@ -75,7 +128,11 @@ After submission (or when chains are listed), update the following so the rest o
---
## 5. See also
## 6. Do not use
- Files under [exports](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/exports) are currently stale placeholder error payloads, not authoritative report exports.
## 7. See also
- [CMC_COINGECKO_REPORTING](../../../smom-dbis-138/services/token-aggregation/docs/CMC_COINGECKO_REPORTING.md) — Report API reference
- [COINGECKO_SUBMISSION_PACKAGE](COINGECKO_SUBMISSION_PACKAGE.md) — Chain 138 package and token table

View File

@@ -35,7 +35,7 @@ So:
2. **Create liquidity pools** on DEXes that GeckoTerminal indexes (e.g. Uniswap, SushiSwap, etc.) on that chain.
3. CoinGecko/GeckoTerminal will **automatically** pick up those pools from on-chain data. No API push.
### For Chain 138 (Defi Oracle Meta Mainnet)
### For Chain 138 (DeFi Oracle Meta Mainnet)
1. **Submit** the chain and tokens via CoinGeckos listing process.
2. **Provide your report API URL** (e.g. `https://<your-api>/api/v1/report/coingecko?chainId=138`) so CoinGecko can **pull** token and liquidity data from your Token Aggregation Service.

View File

@@ -0,0 +1,143 @@
# Overview
**Network name:** DeFi Oracle Meta Mainnet
**Chain ID:** 138
**Network type:** EVM-compatible mainnet
**Primary explorer:** `https://explorer.d-bis.org/`
**Primary website:** `https://d-bis.org/`
**Primary documentation hub:** `https://info.defi-oracle.io/`
DeFi Oracle Meta Mainnet is the canonical home network for the GRU v2 `c*` compliant asset family. The current repo-backed inventory shows native Chain 138 assets live on the public explorer, including `cUSDT`, `cUSDC`, the broader compliant fiat set, `cXAUC`, `cXAUT`, and `cAUSDT`, with public-network transport mirrors (`cW*`) active across supported destination networks.
Per the current machine-readable deployment graph and generated audit summaries, the public `cW*` surface is active on chain IDs `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`, while `1111` remains deferred.
# Official Links
- **Website:** `https://d-bis.org/`
- **Documentation:** `https://info.defi-oracle.io/`
- **Explorer:** `https://explorer.d-bis.org/`
- **Chainlist:** `https://chainlist.org/chain/138`
- **CoinGecko-style report JSON:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138`
- **CMC-style report JSON:** `https://explorer.d-bis.org/api/v1/report/cmc?chainId=138`
- **Cross-chain report JSON:** `https://explorer.d-bis.org/api/v1/report/cross-chain?chainId=138`
- **Canonical token list JSON:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138`
- **Public `cW*` registry JSON:** `https://explorer.d-bis.org/api/v1/report/cw-registry`
- **Explorer wallet token list JSON:** `https://explorer.d-bis.org/api/config/token-list`
- **Explorer wallet networks JSON:** `https://explorer.d-bis.org/api/config/networks`
- **Logo (IPFS):** `ipfs://QmYrMRnjQJcNkYq9AvZ2FQ9kzYj9szzP4YDmyNA1ybd8xE`
- **Logo (Pinata gateway):** `https://gateway.pinata.cloud/ipfs/QmYrMRnjQJcNkYq9AvZ2FQ9kzYj9szzP4YDmyNA1ybd8xE`
- **Logo (IPFS gateway):** `https://ipfs.io/ipfs/QmYrMRnjQJcNkYq9AvZ2FQ9kzYj9szzP4YDmyNA1ybd8xE`
- **Canonical logo asset in repo:** [chain-138-dbismainnet-logo.png](/home/intlc/projects/proxmox/metamask-integration/chain138-snap/packages/site/src/assets/chain-138-dbismainnet-logo.png)
# Native Assets
These are the canonical GRU v2 `c*` assets on Chain 138 with direct explorer links.
| Symbol | Name | Address | Explorer link |
|---|---|---|---|
| `cUSDT` | Tether USD (Compliant) | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | `https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` |
| `cUSDC` | USD Coin (Compliant) | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | `https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
| `cEURC` | Euro Coin (Compliant) | `0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | `https://explorer.d-bis.org/address/0x8085961F9cF02b4d800A3c6d386D31da4B34266a` |
| `cEURT` | Tether EUR (Compliant) | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | `https://explorer.d-bis.org/address/0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` |
| `cGBPC` | Pound Sterling (Compliant) | `0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | `https://explorer.d-bis.org/address/0x003960f16D9d34F2e98d62723B6721Fb92074aD2` |
| `cGBPT` | Tether GBP (Compliant) | `0x350f54e4D23795f86A9c03988c7135357CCaD97c` | `https://explorer.d-bis.org/address/0x350f54e4D23795f86A9c03988c7135357CCaD97c` |
| `cAUDC` | Australian Dollar (Compliant) | `0xD51482e567c03899eecE3CAe8a058161FD56069D` | `https://explorer.d-bis.org/address/0xD51482e567c03899eecE3CAe8a058161FD56069D` |
| `cJPYC` | Japanese Yen (Compliant) | `0xEe269e1226a334182aace90056EE4ee5Cc8A6770` | `https://explorer.d-bis.org/address/0xEe269e1226a334182aace90056EE4ee5Cc8A6770` |
| `cCHFC` | Swiss Franc (Compliant) | `0x873990849DDa5117d7C644f0aF24370797C03885` | `https://explorer.d-bis.org/address/0x873990849DDa5117d7C644f0aF24370797C03885` |
| `cCADC` | Canadian Dollar (Compliant) | `0x54dBd40cF05e15906A2C21f600937e96787f5679` | `https://explorer.d-bis.org/address/0x54dBd40cF05e15906A2C21f600937e96787f5679` |
| `cXAUC` | Gold (Compliant) | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | `https://explorer.d-bis.org/address/0x290E52a8819A4fbD0714E517225429aA2B70EC6b` |
| `cXAUT` | Tether XAU (Compliant) | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | `https://explorer.d-bis.org/address/0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` |
| `cAUSDT` | Alltra USD Token (Compliant) | `0x5fdDF65733e3d590463F68f93Cf16E8c04081271` | `https://explorer.d-bis.org/address/0x5fdDF65733e3d590463F68f93Cf16E8c04081271` |
# Bridged Wrapped Assets
These are the currently repo-backed public-network `cW*` transport assets with canonical addresses and public explorer links.
| Symbol | Network | Chain ID | Address | Explorer link |
|---|---|---:|---|---|
| `cWUSDC` | Ethereum Mainnet | `1` | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
| `cWUSDC` | BSC | `56` | `0x5355148C4740fcc3D7a96F05EdD89AB14851206b` | `https://bscscan.com/token/0x5355148C4740fcc3D7a96F05EdD89AB14851206b` |
| `cWUSDC` | Polygon | `137` | `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `https://polygonscan.com/token/0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` |
| `cWUSDC` | Gnosis | `100` | `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `https://gnosisscan.io/token/0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` |
| `cWUSDC` | Optimism | `10` | `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `https://optimistic.etherscan.io/token/0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` |
| `cWUSDC` | Arbitrum One | `42161` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `https://arbiscan.io/token/0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` |
| `cWUSDC` | Base | `8453` | `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `https://basescan.org/token/0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` |
| `cWUSDC` | Avalanche C-Chain | `43114` | `0x0C242b513008Cd49C89078F5aFb237A3112251EB` | `https://subnets.avax.network/c-chain/token/0x0C242b513008Cd49C89078F5aFb237A3112251EB` |
| `cWUSDC` | Celo | `42220` | `0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` | `https://celoscan.io/token/0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` |
| `cWUSDT` | Ethereum Mainnet | `1` | `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` | `https://etherscan.io/token/0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` |
| `cWUSDT` | BSC | `56` | `0x9a1D0dBEE997929ED02fD19E0E199704d20914dB` | `https://bscscan.com/token/0x9a1D0dBEE997929ED02fD19E0E199704d20914dB` |
| `cWUSDT` | Polygon | `137` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `https://polygonscan.com/token/0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` |
| `cWUSDT` | Gnosis | `100` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `https://gnosisscan.io/token/0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` |
| `cWUSDT` | Optimism | `10` | `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | `https://optimistic.etherscan.io/token/0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` |
| `cWUSDT` | Arbitrum One | `42161` | `0x73ADaF7dBa95221c080db5631466d2bC54f6a76B` | `https://arbiscan.io/token/0x73ADaF7dBa95221c080db5631466d2bC54f6a76B` |
| `cWUSDT` | Base | `8453` | `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | `https://basescan.org/token/0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` |
| `cWUSDT` | Avalanche C-Chain | `43114` | `0x8142BA530B08f3950128601F00DaaA678213DFdf` | `https://subnets.avax.network/c-chain/token/0x8142BA530B08f3950128601F00DaaA678213DFdf` |
| `cWUSDT` | Celo | `42220` | `0x73376eB92c16977B126dB9112936A20Fa0De3442` | `https://celoscan.io/token/0x73376eB92c16977B126dB9112936A20Fa0De3442` |
| `cWAUSDT` | BSC | `56` | `0xe1a51Bc037a79AB36767561B147eb41780124934` | `https://bscscan.com/token/0xe1a51Bc037a79AB36767561B147eb41780124934` |
| `cWAUSDT` | Polygon | `137` | `0xf12e262F85107df26741726b074606CaFa24AAe7` | `https://polygonscan.com/token/0xf12e262F85107df26741726b074606CaFa24AAe7` |
| `cWAUSDT` | Avalanche C-Chain | `43114` | `0xff3084410A732231472Ee9f93F5855dA89CC5254` | `https://subnets.avax.network/c-chain/token/0xff3084410A732231472Ee9f93F5855dA89CC5254` |
| `cWAUSDT` | Celo | `42220` | `0xC158b6cD3A3088C52F797D41f5Aa02825361629e` | `https://celoscan.io/token/0xC158b6cD3A3088C52F797D41f5Aa02825361629e` |
| `cWUSDW` | BSC | `56` | `0xC2FA05F12a75Ac84ea778AF9D6935cA807275E55` | `https://bscscan.com/token/0xC2FA05F12a75Ac84ea778AF9D6935cA807275E55` |
| `cWUSDW` | Avalanche C-Chain | `43114` | `0xcfdCe5E660FC2C8052BDfa7aEa1865DD753411Ae` | `https://subnets.avax.network/c-chain/token/0xcfdCe5E660FC2C8052BDfa7aEa1865DD753411Ae` |
**Important scope note:** The broader GRU v2 `cW*` family is larger than the live-confirmed list above. The current repo-backed canonical address registry publicly confirms the assets listed here; additional deployable `cW*` families should be treated as planned or partially deployed unless accompanied by a confirmed address record in the canonical registry and deployment graph.
# Credibility Certifications
The table below separates credibility signals we can complete directly from this workspace from those that depend on third-party review or explorer UI submission.
| Surface | Status as of 2026-04-19 | What is already completed | Remaining action |
|---|---|---|---|
| Canonical chain metadata | Complete | Network name, Chain ID, website, docs, explorer, Chainlist URL, and machine-readable report endpoints are published in this attachment. | Keep links current if endpoints move. |
| Repo and config validation | Complete | `bash scripts/run-completable-tasks-from-anywhere.sh` passed on 2026-04-19. That included `validate-config-files.sh` and `run-all-validation.sh --skip-genesis`. | Re-run after any address or token list change. |
| On-chain deployment presence | Complete | `check-contracts-on-chain-138.sh` returned `61 present, 0 missing/empty` on 2026-04-19 for the canonical Chain 138 contract set. | Re-run after new deployments. |
| Public API/report availability | Complete | The public JSON endpoints under **Official Links** returned `200 OK` on 2026-04-19. | Keep the report API public and stable. |
| Public DNS / SSL / endpoint reachability | Complete with minor non-chain warning | `verify-end-to-end-routing.sh --profile=public` was run on 2026-04-19 and showed broad public reachability for explorer, docs, website, RPC, and WSS surfaces. | Track unrelated public web warnings separately from chain listing work. |
| Logo hosting and asset consistency | Complete | Repo-backed chain logo exists and the IPFS logo links are published. Token logo manifest is present. | Ensure submitted logos match the same canonical assets. |
| Canonical token and bridge registry | Complete | Native `c*` inventory, live `cW*` mirror inventory, and supporting JSON artifacts are published here and in the referenced machine-readable reports. | Update only from canonical registry and deployment graph. |
| Blockscout source verification on Chain 138 | In progress / manual | Verification workflow and inventory exist in-repo. | Submit or confirm explorer source verification through Blockscout and then mark contract rows as verified. |
| Exact-match explorer verification on public chains | In progress / manual | Public-chain addresses are documented. | Verify each `cW*` contract on Etherscan/BscScan/Polygonscan/BaseScan/etc. Some public entries still present as unverified or similar-match only. |
| CoinGecko listing verification | Pending external review | Submission package, attachment, and report API are ready. | Submit chain and token listings; wait for CoinGecko review and publication. |
| CoinMarketCap listing / DexScan verification | Pending external review | CMC-formatted report API and token inventory are ready. | Submit through CMC listing flow and CMC Priority where required to replace unverified DexScan metadata. |
| Third-party security audit publication | Not yet complete | Internal audit-scope and verification references exist. | Commission a third-party audit, publish the report or findings summary, and link it in this attachment. |
| Social/profile verification on third-party sites | Pending external review | Canonical website/docs/explorer references are stable. | Align logos, socials, and project descriptions across CoinGecko, CMC, explorer metadata, and token profiles after approval. |
## Fastest Remaining Credibility Wins
These are the highest-signal items still worth completing after the in-repo checks above:
1. Complete Blockscout source verification for the current Chain 138 contract set.
2. Complete exact-match explorer verification for the public `cW*` contracts, especially Ethereum Mainnet `cWUSDC` and `cWUSDT`.
3. Submit CoinGecko chain and token listings using this attachment and the report API exports.
4. Submit CoinMarketCap chain/token materials and request DexScan verification for the public token pages.
5. Publish a third-party smart contract audit or formal attestation package.
# Verification Sources
- **Canonical Chain 138 and public-network token address registry:** [canonical-tokens.ts](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts:84)
- **Chain 138 native `c*` explorer-backed confirmation:** [EXPLORER_TOKEN_LIST_CROSSCHECK.md](/home/intlc/projects/proxmox/docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md:19)
- **Deployment status summary for active public `cW*` surface:** [DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md](/home/intlc/projects/proxmox/docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md:14)
- **Deployability matrix for the broader `cW*` family:** [CW_TOKENS_AND_NETWORKS.md](/home/intlc/projects/proxmox/docs/11-references/CW_TOKENS_AND_NETWORKS.md:9)
- **Public logo upload verification:** [chain-138-dbismainnet-logo.png](/home/intlc/projects/proxmox/metamask-integration/chain138-snap/packages/site/src/assets/chain-138-dbismainnet-logo.png)
- **Existing token-logo IPFS manifest for Chain 138 assets:** [ipfs-manifest.json](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/logos/ipfs-manifest.json:1)
- **Machine-readable deployment matrix (JSON):** [cw-mesh-deployment-matrix-latest.json](/home/intlc/projects/proxmox/reports/status/cw-mesh-deployment-matrix-latest.json)
- **Machine-readable public price snapshot (JSON):** [cw-public-prices-latest.json](/home/intlc/projects/proxmox/reports/status/cw-public-prices-latest.json)
- **Machine-readable wrapped-mesh rollout status (JSON):** [promod-uniswap-v2-phase2-wave1-completion-status-latest.json](/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json)
- **Machine-readable public liquidity snapshot (JSON):** [strict-operator-public-liquidity-table-latest.json](/home/intlc/projects/proxmox/reports/extraction/strict-operator-public-liquidity-table-latest.json)
- **Token-aggregation REST API reference:** [REST_API_REFERENCE.md](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/docs/REST_API_REFERENCE.md:1)
- **Deployer verification inventory and current explorer-verification backlog:** [DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md](/home/intlc/projects/proxmox/docs/11-references/DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md:1)
- **Public endpoint and SSL verification runbook:** [E2E_CLOUDFLARE_DOMAINS_RUNBOOK.md](/home/intlc/projects/proxmox/docs/05-network/E2E_CLOUDFLARE_DOMAINS_RUNBOOK.md:1)
- **Workspace-wide completable verification bundle:** [run-completable-tasks-from-anywhere.sh](/home/intlc/projects/proxmox/scripts/run-completable-tasks-from-anywhere.sh:1)
- **Latest public E2E verification report:** [verification_report.md](/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/verification_report.md:1)
- **Latest public E2E machine-readable results:** [all_e2e_results.json](/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/all_e2e_results.json:1)
**Do not use as authoritative references:** the files under `docs/04-configuration/coingecko/exports/` currently contain placeholder error payloads rather than current report data, so they should not be linked in public submission material until regenerated from a live token-aggregation API export.
**Live verification note (2026-04-19):** the public JSON endpoints listed under **Official Links** were checked and returned `200 OK` with JSON payloads on 2026-04-19. The explorer wallet networks payload reports the network name as `DeFi Oracle Meta Mainnet`, which now matches this document. On the same date, `bash scripts/run-completable-tasks-from-anywhere.sh` passed, including config validation, Chain 138 on-chain presence (`61 present, 0 missing/empty`), and merged no-LAN validation. Also on 2026-04-19, `E2E_SUCCESS_IF_ONLY_RPC_BLOCKED=1 bash scripts/verify/verify-end-to-end-routing.sh --profile=public` completed with `Failed: 0` across `44` public domains and wrote the evidence files linked above.
**Submission interpretation guidance:**
- For CoinGecko chain onboarding, treat the **Native Assets** table as the authoritative Chain 138 native inventory.
- Treat the **Bridged Wrapped Assets** table as the authoritative list of currently repo-backed public transport mirrors with confirmed addresses.
- If CoinGecko asks for a full future-state `cW*` matrix beyond live-confirmed contracts, provide [CW_TOKENS_AND_NETWORKS.md](/home/intlc/projects/proxmox/docs/11-references/CW_TOKENS_AND_NETWORKS.md:9) as the deployability reference and explicitly label it as broader than the current live-confirmed public registry.
- If a machine-readable JSON artifact is requested, prefer the latest files under [reports/status](/home/intlc/projects/proxmox/reports/status) and [reports/extraction](/home/intlc/projects/proxmox/reports/extraction) listed above, not the stale `docs/04-configuration/coingecko/exports/` stubs.

View File

@@ -1,200 +1,35 @@
# CoinGecko Listing Submission - cUSDC (Compliant USD Coin)
# CoinGecko Listing Submission - cUSDC
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
**Last Updated:** 2026-04-19
**Status:** Canonical token-specific reference
---
**Date:** 2026-01-27
**Token:** cUSDC (Compliant USD Coin)
**ChainID:** 138 (DBIS Chain / Defi Oracle Meta Mainnet)
---
## 📋 Token Information
### Basic Details
## Token Information
| Field | Value |
|-------|-------|
| **Token Name** | Compliant USD Coin |
| **Token Symbol** | cUSDC |
| **Token Symbol** | `cUSDC` |
| **Contract Address** | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
| **Chain ID** | 138 |
| **Chain Name** | DBIS Chain (Defi Oracle Meta Mainnet) |
| **Decimals** | 6 |
| **Token Type** | ERC-20 Stablecoin |
| **Peg** | USD (1:1) |
| **Chain ID** | `138` |
| **Chain Name** | `DeFi Oracle Meta Mainnet` |
| **Decimals** | `6` |
| **Explorer Link** | `https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
### Token Description
## Public References
**cUSDC** (Compliant USD Coin) is a regulatory-compliant ERC-20 stablecoin pegged to the US Dollar (USD) at a 1:1 ratio. It is designed to provide the stability of traditional fiat currency while maintaining full compliance with legal and regulatory requirements.
- **Website:** `https://d-bis.org/`
- **Documentation:** `https://info.defi-oracle.io/`
- **Explorer:** `https://explorer.d-bis.org/`
- **Chainlist:** `https://chainlist.org/chain/138`
- **Canonical attachment:** [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md)
**Key Features:**
- ✅ Regulatory compliant (includes Travel Rules exemption and regulatory compliance features)
- ✅ 1:1 USD peg
- ✅ ERC-20 standard
- ✅ 6 decimals (matching USDC standard)
- ✅ Pausable and Ownable for security
## Verified JSON References
---
- **CoinGecko-style chain report:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138`
- **Explorer wallet token list:** `https://explorer.d-bis.org/api/config/token-list`
- **Canonical token list:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138`
## 🔗 Blockchain Information
## Notes
### Network Details
| Property | Value |
|----------|-------|
| **Network Name** | DBIS Chain |
| **Chain ID** | 138 |
| **RPC Endpoint** | `https://rpc-http-pub.d-bis.org` |
| **Block Explorer** | `https://explorer.d-bis.org` |
| **Native Currency** | ETH |
| **Block Time** | ~2 seconds |
### Contract Verification
- **Explorer Link:** https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b
- **Contract Verified:** ✅ Yes
- **Source Code:** Available on explorer
---
## 📊 Market Data
### Current Supply
- **Total Supply:** Check on-chain via explorer
- **Circulating Supply:** Check on-chain via explorer
- **Max Supply:** No maximum (mintable by owner)
### Trading Information
**Note:** As a new token on a custom chain, trading volume and liquidity data may be limited initially.
- **DEX Listings:** TBD (can be added to DEXs)
- **Liquidity Pools:** TBD
- **Trading Pairs:** TBD
---
## 🏗️ Technical Details
### Contract Architecture
- **Base Contract:** OpenZeppelin ERC20
- **Additional Features:**
- Pausable (can pause transfers)
- Ownable (owner can manage contract)
- LegallyCompliantBase (regulatory compliance features)
### Security
- **Audited:** TBD
- **Open Source:** ✅ Yes
- **Verified on Explorer:** ✅ Yes
---
## 📝 Submission Checklist
### Required Information
- [x] Token name and symbol
- [x] Contract address
- [x] Chain ID and network name
- [x] Decimals
- [x] Token type
- [x] Block explorer link
- [x] Token description
- [ ] Logo (512x512 PNG)
- [ ] Official website
- [ ] Social media links
- [ ] Trading volume data (if available)
- [ ] Liquidity information (if available)
### Optional Information
- [ ] Tokenomics documentation
- [ ] Whitepaper or technical documentation
- [ ] Audit reports
- [ ] Team information
- [ ] Roadmap
---
## 🎨 Logo Requirements
**Logo Specifications:**
- **Format:** PNG
- **Size:** 512x512 pixels
- **Background:** Transparent preferred
- **File Name:** `ist-logo.png`
**Note:** Can use USDC logo as reference, but should be distinct for cUSDC.
---
## 🌐 Links and Resources
### Official Links
- **Block Explorer:** https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b
- **Network Info:** https://explorer.d-bis.org
- **RPC Endpoint:** https://rpc-http-pub.d-bis.org
### Documentation
- **Token Contract:** `smom-dbis-138/contracts/tokens/CompliantUSDC.sol`
- **Token List:** `docs/04-configuration/metamask/METAMASK_TOKEN_LIST.json`
---
## 📧 Submission Process
### Step 1: Prepare Materials
1. ✅ Token information (this document)
2. ⏳ Logo (512x512 PNG)
3. ⏳ Official website (if available)
4. ⏳ Social media links (if available)
### Step 2: Submit to CoinGecko
1. Go to: https://www.coingecko.com/en/coins/new
2. Fill out the submission form with information from this document
3. Upload logo
4. Provide all required links
5. Submit for review
### Step 3: Follow-up
- CoinGecko typically reviews submissions within 1-2 weeks
- May request additional information
- Respond promptly to any inquiries
---
## ✅ Post-Listing Benefits
Once listed on CoinGecko:
1. **MetaMask Integration:** MetaMask will automatically display USD values for cUSDC
2. **Price Discovery:** Users can track cUSDC price on CoinGecko
3. **Market Visibility:** Increased exposure to crypto community
4. **Portfolio Tracking:** Users can track cUSDC in portfolio apps
---
## 📚 Additional Notes
- **Peg Maintenance:** cUSDC is designed to maintain 1:1 USD peg
- **Compliance:** Token includes regulatory compliance features
- **Minting:** Only contract owner can mint new tokens
- **Pausing:** Owner can pause transfers if needed for security
---
**Last Updated:** 2026-01-27
**Status:** Ready for submission (pending logo and website)
- Use the chain attachment above as the authoritative shared package for network identity, logo links, native assets, bridged wrapped assets, and machine-readable references.
- Do not cite `docs/04-configuration/coingecko/exports/` from public submission material until those files are regenerated from the live token-aggregation API.

View File

@@ -1,80 +1,35 @@
# CoinGecko Listing Submission - cUSDT (Compliant Tether USD)
# CoinGecko Listing Submission - cUSDT
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
**Last Updated:** 2026-04-19
**Status:** Canonical token-specific reference
---
**Date:** 2026-01-27
**Token:** cUSDT (Compliant Tether USD)
**ChainID:** 138 (DBIS Chain / Defi Oracle Meta Mainnet)
---
## 📋 Token Information
### Basic Details
## Token Information
| Field | Value |
|-------|-------|
| **Token Name** | Compliant Tether USD |
| **Token Symbol** | cUSDT |
| **Token Symbol** | `cUSDT` |
| **Contract Address** | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` |
| **Chain ID** | 138 |
| **Chain Name** | DBIS Chain (Defi Oracle Meta Mainnet) |
| **Decimals** | 6 |
| **Token Type** | ERC-20 Stablecoin |
| **Peg** | USD (1:1) |
| **Chain ID** | `138` |
| **Chain Name** | `DeFi Oracle Meta Mainnet` |
| **Decimals** | `6` |
| **Explorer Link** | `https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` |
### Token Description
## Public References
**cUSDT** (Compliant Tether USD) is a regulatory-compliant ERC-20 stablecoin pegged to the US Dollar (USD) at a 1:1 ratio. It is designed to provide the stability of traditional fiat currency while maintaining full compliance with legal and regulatory requirements.
- **Website:** `https://d-bis.org/`
- **Documentation:** `https://info.defi-oracle.io/`
- **Explorer:** `https://explorer.d-bis.org/`
- **Chainlist:** `https://chainlist.org/chain/138`
- **Canonical attachment:** [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md)
**Key Features:**
- ✅ Regulatory compliant (includes Travel Rules exemption and regulatory compliance features)
- ✅ 1:1 USD peg
- ✅ ERC-20 standard
- ✅ 6 decimals (matching USDT standard)
- ✅ Pausable and Ownable for security
## Verified JSON References
---
- **CoinGecko-style chain report:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138`
- **Explorer wallet token list:** `https://explorer.d-bis.org/api/config/token-list`
- **Canonical token list:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138`
## 🔗 Blockchain Information
## Notes
### Network Details
| Property | Value |
|----------|-------|
| **Network Name** | DBIS Chain |
| **Chain ID** | 138 |
| **RPC Endpoint** | `https://rpc-http-pub.d-bis.org` |
| **Block Explorer** | `https://explorer.d-bis.org` |
| **Native Currency** | ETH |
| **Block Time** | ~2 seconds |
### Contract Verification
- **Explorer Link:** https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22
- **Contract Verified:** ✅ Yes
- **Source Code:** Available on explorer
---
## 📝 Submission Checklist
- [x] Token name and symbol
- [x] Contract address
- [x] Chain ID and network name
- [x] Decimals
- [x] Token type
- [x] Block explorer link
- [x] Token description
- [ ] Logo (512x512 PNG)
- [ ] Official website
- [ ] Social media links
---
**Last Updated:** 2026-01-27
**Status:** Ready for submission (pending logo and website)
- Use the chain attachment above as the authoritative shared package for network identity, logo links, native assets, bridged wrapped assets, and machine-readable references.
- Do not cite `docs/04-configuration/coingecko/exports/` from public submission material until those files are regenerated from the live token-aggregation API.

View File

@@ -1,254 +1,41 @@
# CoinGecko Listing Submission Guide
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
**Last Updated:** 2026-04-21
**Status:** Canonical process reference
---
Use this guide together with [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md).
**Date:** 2026-01-27
**Purpose:** Complete guide for submitting cUSDT and cUSDC to CoinGecko
## Canonical Network Identity
---
- **Chain name:** `DeFi Oracle Meta Mainnet`
- **Chain ID:** `138`
- **Website:** `https://d-bis.org/`
- **Documentation:** `https://info.defi-oracle.io/`
- **Explorer:** `https://explorer.d-bis.org/`
- **Chainlist:** `https://chainlist.org/chain/138`
## 📋 Overview
## Token-Specific References
This guide provides step-by-step instructions for submitting cUSDT and cUSDC tokens to CoinGecko for listing. Once listed, MetaMask will automatically display USD values for these tokens.
- [COINGECKO_SUBMISSION_CUSDT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDT.md)
- [COINGECKO_SUBMISSION_CUSDC.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDC.md)
---
## Verified Public JSON Endpoints
## 🎯 Why Submit to CoinGecko?
- **CoinGecko-style chain report:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138`
- **CMC-style chain report:** `https://explorer.d-bis.org/api/v1/report/cmc?chainId=138`
- **Cross-chain report:** `https://explorer.d-bis.org/api/v1/report/cross-chain?chainId=138`
- **Canonical token list:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138`
- **Public `cW*` registry:** `https://explorer.d-bis.org/api/v1/report/cw-registry`
- **Explorer wallet token list:** `https://explorer.d-bis.org/api/config/token-list`
- **Explorer wallet networks config:** `https://explorer.d-bis.org/api/config/networks`
### Benefits
## Submission Guidance
1. **MetaMask Integration**
- MetaMask automatically queries CoinGecko for USD prices
- No need for custom oracle integration in MetaMask
- Users see USD values automatically
- Use the chain attachment as the authoritative package for naming, links, logo, native assets, bridged wrapped assets, and verification sources.
- Use the token-specific `cUSDT` and `cUSDC` docs only for single-token form entries.
- If a machine-readable file is requested, prefer the verified public JSON endpoints above or the latest generated artifacts linked from the chain attachment.
- Do not use `docs/04-configuration/coingecko/exports/*.json` until regenerated from live API output.
2. **Price Discovery**
- Users can track token prices on CoinGecko
- Historical price data
- Market cap and volume tracking
## Etherscan USD “Value” (Ethereum Mainnet)
3. **Market Visibility**
- Increased exposure to crypto community
- Portfolio tracking apps support
- Exchange listings may require CoinGecko listing
---
## 📝 Prerequisites
### Required Materials
- [x] Token contract addresses
- [x] Token information (name, symbol, decimals)
- [x] Block explorer links
- [ ] Token logos (512x512 PNG)
- [ ] Official website (optional but recommended)
- [ ] Social media links (optional but recommended)
### Token Information
**cUSDT:**
- Address: `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22`
- See: `COINGECKO_SUBMISSION_CUSDT.md`
**cUSDC:**
- Address: `0xf22258f57794CC8E06237084b353Ab30fFfa640b`
- See: `COINGECKO_SUBMISSION_CUSDC.md`
---
## 🚀 Submission Steps
### Step 1: Prepare Logos
**Requirements:**
- Format: PNG
- Size: 512×512 pixels
- Background: Transparent preferred
- Quality: High resolution
**Quick prepare (script):**
```bash
# From repo root. Requires ImageMagick (convert) or Pillow for 512×512 resize.
# Install: apt install imagemagick OR pip install Pillow
./docs/04-configuration/coingecko/scripts/prepare-token-logos-512x512.sh
# Output: docs/04-configuration/coingecko/logos/*-512x512.png
```
**Where to get logos:**
- Use USDT/USDC logos as reference
- Create distinct versions for cUSDT/cUSDC
- Ensure they meet size requirements
### Step 2: Create CoinGecko Account
1. Go to: https://www.coingecko.com
2. Click "Sign Up" or "Login"
3. Create account (free)
4. Verify email if required
### Step 3: Submit Token
1. **Navigate to submission page:**
- Go to: https://www.coingecko.com/en/coins/new
- Or: https://www.coingecko.com/en/request/new
2. **Fill out the form:**
**Basic Information:**
- Token Name: "Compliant Tether USD" (for cUSDT) or "Compliant USD Coin" (for cUSDC)
- Symbol: "cUSDT" or "cUSDC"
- Contract Address: `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` (cUSDT) or `0xf22258f57794CC8E06237084b353Ab30fFfa640b` (cUSDC)
- Chain: Select "Custom Chain" or "Other"
- Chain ID: 138
- Decimals: 6
**Network Information:**
- Network Name: "DBIS Chain" or "Defi Oracle Meta Mainnet"
- RPC URL: `https://rpc-http-pub.d-bis.org`
- Block Explorer: `https://explorer.d-bis.org`
**Additional Information:**
- Description: Use description from submission documents
- Logo: Upload 512x512 PNG
- Website: (if available)
- Twitter: (if available)
- Telegram: (if available)
- Discord: (if available)
3. **Submit for review**
### Step 4: Follow-up
- CoinGecko typically reviews within 1-2 weeks
- Check email for any requests for additional information
- Respond promptly to inquiries
- May need to provide:
- Trading volume data
- Liquidity information
- Additional documentation
---
## 📊 Submission Checklist
### For Each Token (cUSDT and cUSDC)
- [ ] Logo prepared (512x512 PNG)
- [ ] CoinGecko account created
- [ ] Submission form filled out
- [ ] All required fields completed
- [ ] Submission sent
- [ ] Confirmation email received
- [ ] Follow-up completed (if requested)
---
## ⏱️ Timeline
### Expected Timeline
1. **Submission:** Immediate
2. **Initial Review:** 1-3 business days
3. **Additional Info Request:** 3-5 business days (if needed)
4. **Approval:** 1-2 weeks from submission
5. **Listing:** Within 24 hours of approval
### Total Time: 1-2 weeks
---
## 🔍 After Listing
### Verification Steps
1. **Check CoinGecko:**
- Search for "cUSDT" or "cUSDC"
- Verify information is correct
- Check price is displaying
2. **Test MetaMask:**
- Add token to MetaMask
- Verify USD value displays
- Check price updates
3. **Monitor:**
- Check price accuracy
- Monitor for any issues
- Update if needed
---
## 📚 Resources
### Submission Documents
- **cUSDT:** `COINGECKO_SUBMISSION_CUSDT.md`
- **cUSDC:** `COINGECKO_SUBMISSION_CUSDC.md`
### CoinGecko Links
- **Submission Form:** https://www.coingecko.com/en/coins/new
- **Help Center:** https://www.coingecko.com/en/help
- **API Documentation:** https://www.coingecko.com/en/api
### Related Documentation
- **GRU M1 Master Plan:** `../../gru-m1/GRU_M1_MASTER_IMPLEMENTATION_PLAN.md` — End-to-end listing framework, dry-runs, CMC/CG preparation
- **Oracle Setup:** `../metamask/ORACLE_PRICE_FEED_SETUP.md`
- **Token Lists:** `../metamask/METAMASK_TOKEN_LIST.json`
- **Token Addresses:** `../../11-references/CHAIN138_TOKEN_ADDRESSES.md`
---
## ❓ Common Questions
### Q: What if CoinGecko doesn't support ChainID 138?
**A:** CoinGecko supports custom chains. You may need to:
- Select "Custom Chain" or "Other" in the form
- Provide RPC URL and block explorer
- May need to contact CoinGecko support for custom chain support
### Q: Do I need trading volume to be listed?
**A:** Not necessarily, but it helps. CoinGecko may list tokens with:
- Active development
- Community interest
- Technical merit
- Even without significant trading volume initially
### Q: Can I submit both tokens at once?
**A:** Yes, but submit them separately:
- One submission for cUSDT
- One submission for cUSDC
- Each needs its own form submission
### Q: What if my submission is rejected?
**A:** CoinGecko will provide reasons. Common reasons:
- Missing information
- Insufficient documentation
- Chain not supported (may need to request support)
- Contact CoinGecko support for clarification
---
## ✅ Success Criteria
Your submission is successful when:
1. ✅ Token appears on CoinGecko
2. ✅ Price data is available
3. ✅ MetaMask shows USD values automatically
4. ✅ Information is accurate
---
**Last Updated:** 2026-01-27
**Status:** Ready for submission
If **Etherscan** shows **$0 Value** for a `cW*` token while balances are correct, see [ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md) — listing on CoinGecko/CMC for the **Ethereum** contract is what eventually feeds third-party explorer pricing.

View File

@@ -1,243 +1,45 @@
# CoinGecko Submission Package — Chain 138
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
**Last Updated:** 2026-04-19
**Status:** Canonical reference wrapper
---
This document is now a thin wrapper around the current canonical submission attachment for Chain 138.
**Date:** 2026-01-30
**Purpose:** Submit Chain 138 (DeFi Oracle Meta Mainnet) to CoinGecko for native USD prices in MetaMask
**Status:** Ready for submission
Use [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) as the source of truth for:
---
- official chain naming
- official website, explorer, docs, Chainlist, and logo links
- current native `c*` asset inventory
- current public `cW*` bridged wrapped asset inventory
- verified repo sources and machine-readable JSON references
## Why Submit to CoinGecko?
## Canonical Public Network Identity
**Benefits:**
- Native USD prices in MetaMask for Chain 138 tokens
- Better visibility and discoverability
- Integration with DeFi aggregators and wallets
- Historical price data and charts
- **Chain name:** `DeFi Oracle Meta Mainnet`
- **Website:** `https://d-bis.org/`
- **Documentation:** `https://info.defi-oracle.io/`
- **Explorer:** `https://explorer.d-bis.org/`
- **Chainlist:** `https://chainlist.org/chain/138`
---
## Verified Public JSON Endpoints
## Submission Information
These endpoints were live-verified on 2026-04-19 and should be preferred over older exported stubs in this directory.
### Chain Details
- **CoinGecko-style report:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138`
- **CMC-style report:** `https://explorer.d-bis.org/api/v1/report/cmc?chainId=138`
- **Cross-chain report:** `https://explorer.d-bis.org/api/v1/report/cross-chain?chainId=138`
- **Canonical token list:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138`
- **Public `cW*` registry:** `https://explorer.d-bis.org/api/v1/report/cw-registry`
- **Explorer wallet token list:** `https://explorer.d-bis.org/api/config/token-list`
- **Explorer wallet networks config:** `https://explorer.d-bis.org/api/config/networks`
| Field | Value |
|-------|-------|
| **Chain Name** | DeFi Oracle Meta Mainnet |
| **Chain ID** | 138 (0x8a) |
| **Symbol** | ETH |
| **RPC URLs** | https://rpc-http-pub.d-bis.org<br>https://rpc.d-bis.org<br>https://rpc2.d-bis.org |
| **Explorer** | https://explorer.d-bis.org |
| **Website** | https://d-bis.org |
| **Block Time** | 2 seconds |
| **Consensus** | QBFT (Quorum Byzantine Fault Tolerance) |
| **Type** | EVM-compatible (Besu) |
## Local Machine-Readable References
### Network Information
- [cw-mesh-deployment-matrix-latest.json](/home/intlc/projects/proxmox/reports/status/cw-mesh-deployment-matrix-latest.json)
- [cw-public-prices-latest.json](/home/intlc/projects/proxmox/reports/status/cw-public-prices-latest.json)
- [promod-uniswap-v2-phase2-wave1-completion-status-latest.json](/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json)
- [strict-operator-public-liquidity-table-latest.json](/home/intlc/projects/proxmox/reports/extraction/strict-operator-public-liquidity-table-latest.json)
```json
{
"chainId": "0x8a",
"chainName": "DeFi Oracle Meta Mainnet",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"rpcUrls": [
"https://rpc-http-pub.d-bis.org",
"https://rpc.d-bis.org",
"https://rpc2.d-bis.org"
],
"blockExplorerUrls": ["https://explorer.d-bis.org"]
}
```
## Do Not Use
---
## Tokens to Submit
### Priority Tokens (Submit First)
| Symbol | Name | Address | Type |
|--------|------|---------|------|
| **WETH** | Wrapped Ether | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | Wrapped native |
| **WETH10** | Wrapped Ether v10 | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | Wrapped native |
| **cUSDT** | Compliant Tether USD | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | Stablecoin |
| **cUSDC** | Compliant USD Coin | `0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238` | Stablecoin |
| **cEURC** | Compliant Euro Coin | `0x08210F9170F89Ab7658F0B5E3fF39b0E03C594D4` | Stablecoin |
### Additional Tokens
| Symbol | Name | Address | Type |
|--------|------|---------|------|
| **cGBPC** | Compliant British Pound Coin | `0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB` | Stablecoin |
| **cAUDC** | Compliant Australian Dollar Coin | `0x9F3B8679c73C2Fef8b59B4f3444d4e156fb70AA5` | Stablecoin |
| **cJPYC** | Compliant Japanese Yen Coin | `0x431D5dfF03120AFA4bDf332c61A6e1766eF37BDB` | Stablecoin |
| **cCHFC** | Compliant Swiss Franc Coin | `0x2416092f143378750bb29b79eD961ab195CcEea5` | Stablecoin |
| **cCADC** | Compliant Canadian Dollar Coin | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | Stablecoin |
---
## Submission Process
### 1. Create CoinGecko Account
- Visit: https://www.coingecko.com/
- Sign up for free account
- Verify email
### 2. Submit Chain
- Go to: https://www.coingecko.com/en/request
- Select "Add New Blockchain"
- Fill form with chain details above
- Provide:
- Chain name, ID, symbol
- RPC endpoints
- Explorer URL
- Website
- Description
- Logo (if available)
### 3. Submit Tokens
For each token:
- Go to: https://www.coingecko.com/en/request
- Select "Add New Cryptocurrency"
- Provide:
- Token name, symbol, decimals
- Contract address
- Chain: DeFi Oracle Meta Mainnet (138)
- Description
- Logo (if available)
- Website/docs (if available)
### 4. Verification
CoinGecko will verify:
- Chain is live and accessible
- RPC endpoints work
- Explorer shows transactions
- Token contracts are deployed and verified
**Timeline:** Usually 1-2 weeks for review
---
## Supporting Materials
### Chain Verification
```bash
# Verify RPC is accessible
curl -X POST https://rpc-http-pub.d-bis.org \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# Verify explorer
curl https://explorer.d-bis.org/api/v2/stats
```
### Token Verification
```bash
# Verify token contract (example: WETH)
curl "https://explorer.d-bis.org/api/v2/tokens/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
```
### Token List
Full token list available at:
- **API:** https://explorer.d-bis.org/api/config/token-list
- **File:** `docs/04-configuration/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json`
---
## Submission Template
### Chain Submission
```
Chain Name: DeFi Oracle Meta Mainnet
Chain ID: 138
Symbol: ETH
Type: EVM-compatible (Hyperledger Besu)
Consensus: QBFT
Block Time: 2 seconds
RPC Endpoints:
- https://rpc-http-pub.d-bis.org
- https://rpc.d-bis.org
- https://rpc2.d-bis.org
Explorer: https://explorer.d-bis.org
Website: https://d-bis.org
Description:
DeFi Oracle Meta Mainnet (Chain 138) is an enterprise-grade, EVM-compatible blockchain built on Hyperledger Besu with QBFT consensus. It features native oracle integration, cross-chain bridges (CCIP), and compliant stablecoins for institutional DeFi applications.
Key Features:
- 2-second block time
- Native ETH/USD oracle integration
- CCIP bridge to Ethereum Mainnet
- Compliant stablecoins (cUSDT, cUSDC, cEURC, etc.)
- Enterprise-grade security and performance
```
### Token Submission Template (Example: cUSDT)
```
Token Name: Compliant Tether USD
Symbol: cUSDT
Decimals: 6
Contract Address: 0x93E66202A11B1772E55407B32B44e5Cd8eda7f22
Chain: DeFi Oracle Meta Mainnet (138)
Description:
Compliant Tether USD (cUSDT) is a regulated stablecoin pegged to USD, designed for institutional use on Chain 138. It features compliance controls, KYC/AML integration, and cross-chain bridge support.
Explorer: https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22
```
---
## Post-Submission
### After Approval
1. **Verify listings:**
- Check Chain 138 appears on CoinGecko
- Verify tokens show USD prices
2. **Update MetaMask:**
- USD prices should appear automatically
- No code changes needed
3. **Monitor:**
- Check price accuracy
- Report any issues to CoinGecko support
---
## Alternative: Manual Price Feed
If CoinGecko submission takes too long, use token-aggregation API:
```javascript
// Get token price from our API
const response = await fetch('https://explorer.d-bis.org/api/market/tokens?chainId=138');
const tokens = await response.json();
// tokens will include prices from CoinGecko/CMC/DexScreener
```
---
**Last updated:** 2026-01-30
**Status:** Ready for submission
**Submission URL:** https://www.coingecko.com/en/request
Do not use files under [exports](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/exports) as authoritative submission payloads right now. They currently contain placeholder Blockscout-style error JSON rather than current token-aggregation report data.

View File

@@ -0,0 +1,58 @@
# Etherscan “Value” ($0) for Mainnet `cW*` Tokens
**Purpose:** Explain why [Etherscan](https://etherscan.io) shows **correct balances** but **$0** in the **Value** column for custom ERC-20s (including `cWUSDT`, `cWUSDC`, etc.), and what actually fixes it.
**Last updated:** 2026-04-21
---
## Why Value is $0
- Etherscan does **not** read your PMM pool or a fixed peg from the contract for the portfolio **Value** column.
- It aggregates **USD marks** from external sources—**CoinGecko** is the usual primary reference for ERC-20 USD on Ethereum Mainnet; **CoinMarketCap** and other feeds may also be used in combination.
- If the token has **no** listing (or no tradeable price) on those services for **that contract on chain ID 1**, the UI shows **$0** even when the token is real and liquid on-chain.
**No Solidity change, env var, or repo script can force Etherscans Value column.** The fix is **off-chain listing and price discovery** on the aggregators Etherscan trusts.
---
## What fixes it (high level)
1. **Ethereum Mainnet contract verified** on Etherscan (exact match) — improves trust; does not by itself guarantee USD.
2. **CoinGecko** (or equivalent accepted listing) with:
- **Platform:** Ethereum
- **Contract:** the exact `cW*` address (e.g. `cWUSDT` on Mainnet — see [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) public-chain table)
- Accurate **symbol**, **decimals**, **logo**, and **liquidity / trading** data where the form requires it.
3. **CoinMarketCap** token page / DexScan-style verification where applicable — often reinforces visibility.
4. **Wait for propagation** — after approval, Etherscan may take **days to weeks** to reflect new prices; refresh the token page periodically.
---
## CoinMarketCap DexScan vs CMC “verified” (example: `cWUSDC`)
**Mainnet contract:** `CWUSDC_MAINNET` = `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` (see `smom-dbis-138/.env`).
**DexScan page (on-chain DEX stats):** [cWUSDC on Ethereum — CoinMarketCap DexScan](https://dex.coinmarketcap.com/token/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a/)
CMC may still show **“not verified by CoinMarketCap”** on that page, with a note that logo/socials can be third-party and to **DYOR**. For **official** CMC verification, their UI points to **CMC Priority** (paid / expedited listing path). DexScan presence **does not** automatically flip [Etherscan](https://etherscan.io) holder **Value** to a trusted USD mark—that pipeline still depends on the feeds Etherscan uses (typically **CoinGecko**-heavy) plus time.
Treat DexScan as **evidence of on-chain activity** and a **parallel** track to pursue alongside CoinGecko submission in [CMC_COINGECKO_SUBMISSION_RUNBOOK.md](CMC_COINGECKO_SUBMISSION_RUNBOOK.md).
---
## Repo-native steps (operator)
| Step | Action |
|------|--------|
| 1 | Follow [CMC_COINGECKO_SUBMISSION_RUNBOOK.md](CMC_COINGECKO_SUBMISSION_RUNBOOK.md) — export report JSON if needed, prepare logos. |
| 2 | Submit the **Ethereum Mainnet** token (not only Chain 138) with the **Mainnet contract address** from [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) or `smom-dbis-138/.env` (`CWUSDT_MAINNET`, `CWUSDC_MAINNET`, …). |
| 3 | Use [CoinGecko listing / new coin](https://www.coingecko.com/en/coins/new) (or their current partner flow) and attach materials as required. |
| 4 | After listing, confirm the token page on CoinGecko shows a **price** for **Ethereum**; then check Etherscans token and holder views again. |
| 5 | Optional: pursue **CMC Priority** / DexScan verification if you need the [DexScan](https://dex.coinmarketcap.com/) badge and official CMC metadata—separate from Etherscan Value propagation. |
---
## Related
- On-chain / treasury **marks** (not Etherscan): [CW_TOKEN_USD_PRICING_RUNBOOK.md](../../03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md) and `scripts/deployment/price-cw-token-mainnet.sh`.
- Multi-chain mid table: [CW_PUBLIC_NETWORK_PRICES.md](../../03-deployment/CW_PUBLIC_NETWORK_PRICES.md).

View File

@@ -7,7 +7,7 @@
---
**Date:** 2026-01-27
**ChainID:** 138 (DBIS Chain)
**ChainID:** 138 (DeFi Oracle Meta Mainnet)
**Status:** ✅ Verification Complete
---

View File

@@ -1,7 +1,7 @@
{
"chainId": "0x8a",
"chainIdDecimal": 138,
"chainName": "Defi Oracle Meta Mainnet",
"chainName": "DeFi Oracle Meta Mainnet",
"rpcUrls": [
"https://rpc-http-pub.d-bis.org",
"https://rpc.d-bis.org",

View File

@@ -1,7 +1,7 @@
{
"chainId": "0x85a",
"chainIdDecimal": 2138,
"chainName": "Defi Oracle Meta Testnet",
"chainName": "DeFi Oracle Meta Testnet",
"rpcUrls": [
"https://rpc.public-2138.defi-oracle.io"
],

View File

@@ -1,6 +1,6 @@
# PR-Ready Submissions — Chain 138
**Purpose:** Drop-in content to open pull requests or submit listings for Defi Oracle Meta Mainnet (Chain ID 138). Use when you are ready to submit; forms are already submitted where applicable (see [REPOSITORIES_AND_PRS_CHAIN138](../../00-meta/REPOSITORIES_AND_PRS_CHAIN138.md)).
**Purpose:** Drop-in content to open pull requests or submit listings for DeFi Oracle Meta Mainnet (Chain ID 138). Use when you are ready to submit; forms are already submitted where applicable (see [REPOSITORIES_AND_PRS_CHAIN138](../../00-meta/REPOSITORIES_AND_PRS_CHAIN138.md)).
---
@@ -52,7 +52,7 @@ There are two different Trust Wallet paths:
**Directory:** [eip155-138-package/](./eip155-138-package/)
This folder is the operator-friendly handoff bundle for Defi Oracle Meta Mainnet (`eip155-138`). It contains:
This folder is the operator-friendly handoff bundle for DeFi Oracle Meta Mainnet (`eip155-138`). It contains:
- a Chainlist-ready JSON copy
- a Trust Wallet Wallet Core registry entry copy

View File

@@ -1,6 +1,6 @@
# Chain 138 Asset Submission Package
**Chain:** Defi Oracle Meta Mainnet
**Chain:** DeFi Oracle Meta Mainnet
**Chain ID:** 138
**CAIP-2:** `eip155:138`

View File

@@ -1,6 +1,6 @@
{
"chainId": 138,
"chainName": "Defi Oracle Meta Mainnet",
"chainName": "DeFi Oracle Meta Mainnet",
"submissionType": "listing_surfaces",
"surfaceNotes": {
"walletCore": "Chain metadata only. No token assets, bridge listings, or pool listings.",

View File

@@ -1,6 +1,6 @@
{
"name": "Chain 138 Asset Submission Package",
"chainName": "Defi Oracle Meta Mainnet",
"chainName": "DeFi Oracle Meta Mainnet",
"chainId": 138,
"caip2": "eip155:138",
"purpose": "Submission bundle for Chain 138 token assets across wallet and listing surfaces.",

View File

@@ -1,6 +1,6 @@
{
"chainId": 138,
"chainName": "Defi Oracle Meta Mainnet",
"chainName": "DeFi Oracle Meta Mainnet",
"submissionType": "wallet_assets",
"notes": [
"This file is for wallet-facing token asset metadata, not Wallet Core chain support.",

View File

@@ -1,6 +1,6 @@
# Defi Oracle Meta Mainnet PR-Ready Package
# DeFi Oracle Meta Mainnet PR-Ready Package
**Chain:** Defi Oracle Meta Mainnet
**Chain:** DeFi Oracle Meta Mainnet
**Chain ID:** 138
**CAIP-2:** `eip155:138`

View File

@@ -1,5 +1,5 @@
{
"name": "Defi Oracle Meta Mainnet",
"name": "DeFi Oracle Meta Mainnet",
"chain": "dfiometa",
"rpc": [
"https://rpc-http-pub.d-bis.org",

View File

@@ -1,5 +1,5 @@
{
"name": "Defi Oracle Meta Mainnet PR-Ready Package",
"name": "DeFi Oracle Meta Mainnet PR-Ready Package",
"chainId": 138,
"caip2": "eip155:138",
"generatedBy": "scripts/verify/build-chain138-pr-ready-package.sh",

View File

@@ -1,6 +1,6 @@
{
"id": "dfiometa",
"name": "Defi Oracle Meta Mainnet",
"name": "DeFi Oracle Meta Mainnet",
"coinId": 10000138,
"symbol": "ETH",
"decimals": 18,

View File

@@ -1,5 +1,5 @@
{
"name": "Defi Oracle Meta Mainnet",
"name": "DeFi Oracle Meta Mainnet",
"chain": "dfiometa",
"rpc": [
"https://rpc-http-pub.d-bis.org",

View File

@@ -1,6 +1,6 @@
{
"id": "dfiometa",
"name": "Defi Oracle Meta Mainnet",
"name": "DeFi Oracle Meta Mainnet",
"coinId": 10000138,
"symbol": "ETH",
"decimals": 18,

View File

@@ -0,0 +1,20 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:28 GMT
content-type: text/html; charset=utf-8
content-length: 5259
vary: Accept-Encoding
x-dns-prefetch-control: on
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: strict-origin-when-cross-origin
permissions-policy: camera=(), microphone=(), geolocation=()
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https:
vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding
cache-control: s-maxage=31536000, stale-while-revalidate
etag: "oibim89srm41x"
alt-svc: h3=":443"; ma=86400
0.124627

View File

@@ -0,0 +1 @@
{"total_blocks":4158566,"total_transactions":60889,"total_addresses":6832,"latest_block":4158565,"average_block_time":4525.252525252526,"gas_prices":{"average":14.204000292969999},"network_utilization_percentage":0,"transactions_today":51,"freshness":{"chain_head":{"block_number":4158565,"timestamp":"2026-04-19T20:41:10Z","age_seconds":9757,"source":"reported","confidence":"high","provenance":"rpc","completeness":"complete"},"latest_indexed_block":{"block_number":4158565,"timestamp":"2026-04-19T20:41:10Z","age_seconds":9757,"source":"reported","confidence":"high","provenance":"explorer_index","completeness":"complete"},"latest_indexed_transaction":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51335,"hash":"0x03d4e55bcf98bd3bd9ad8f960543b9743d1a5cebad4e23db1b134905f5e8db97","source":"reported","confidence":"high","provenance":"tx_index","completeness":"stale"},"latest_non_empty_block":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51335,"distance_from_head":9239,"source":"reported","confidence":"high","provenance":"tx_index","completeness":"stale"}},"completeness":{"transactions_feed":"stale","blocks_feed":"complete","gas_metrics":"complete","utilization_metrics":"complete"},"sampling":{"stats_generated_at":"2026-04-19T23:23:47Z","rpc_probe_at":"2026-04-19T20:41:10Z","stats_window_seconds":300},"diagnostics":{"tx_visibility_state":"stale","activity_state":"quiet_chain","explanation":"Recent sampled head blocks are empty, which indicates a quiet chain rather than a broken explorer.","tx_lag_blocks":9239,"tx_lag_seconds":51335,"recent_block_sample_size":128,"recent_non_empty_blocks":0,"recent_transactions":0,"latest_non_empty_block_from_block_feed":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51335,"distance_from_head":9239,"source":"derived","confidence":"medium","provenance":"composite","completeness":"stale"},"source":"reported","confidence":"medium","provenance":"composite","completeness":"complete"}}

View File

@@ -0,0 +1,18 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:46 GMT
content-type: text/html; charset=utf-8
content-length: 106336
vary: Accept-Encoding
etag: "9wzweiy79b2a0s"
vary: Accept-Encoding
cache-control: no-store, no-cache, must-revalidate
referrer-policy: strict-origin-when-cross-origin
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://unpkg.com https://cdnjs.cloudflare.com; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; img-src 'self' data: https:; font-src 'self' https://cdnjs.cloudflare.com; connect-src 'self' https://blockscout.defi-oracle.io wss://blockscout.defi-oracle.io https://explorer.d-bis.org wss://explorer.d-bis.org https://rpc-http-pub.d-bis.org wss://rpc-ws-pub.d-bis.org http://192.168.11.221:8545 ws://192.168.11.221:8546;
alt-svc: h3=":443"; ma=86400
x-xss-protection: 0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
strict-transport-security: max-age=63072000; includeSubDomains; preload
0.746715

View File

@@ -0,0 +1,20 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:50 GMT
content-type: text/html
alt-svc: h3=":443"; ma=86400
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=7vdC3ctyhn1X6CkRWv3%2BAEG7vDzZsDAm6r0EQZb2jEHLpZuNa9ti9tqWlPgt0YJKNE1uyo1GbOstE%2BtLvLSLofBX%2BOf24ZazWFN7ES%2BDCzjdhtfT3WrmWhpEUolIpw7xS7PWW17kwk1v"}]}
last-modified: Thu, 02 Apr 2026 19:42:29 GMT
referrer-policy: strict-origin-when-cross-origin
vary: Accept-Encoding
x-content-type-options: nosniff
x-dns-prefetch-control: off
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
cf-cache-status: DYNAMIC
strict-transport-security: max-age=31536000; includeSubDomains
server: cloudflare
cf-ray: 9eefa8c5c9727e62-LAX
0.141737

View File

@@ -0,0 +1,20 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:30 GMT
content-type: text/html
alt-svc: h3=":443"; ma=86400
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=17BRhR%2Bzy%2F0LZuGbGhSIp70vIWykch0OYVcKOe9H01RxWuRiXbXK05JDEdTVeevCszCGVPq6xNRPsG0HMHQuBktM6yIoDzeyMuw4MaCuVjeXqgTgtQc0aaq17KxoZ1bcIAPe65VYIA%3D%3D"}]}
last-modified: Thu, 02 Apr 2026 19:42:29 GMT
referrer-policy: strict-origin-when-cross-origin
vary: Accept-Encoding
x-content-type-options: nosniff
x-dns-prefetch-control: off
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
cf-cache-status: DYNAMIC
strict-transport-security: max-age=31536000; includeSubDomains
server: cloudflare
cf-ray: 9eefa84c5b879dfc-LAX
0.136864

View File

@@ -0,0 +1,10 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:48 GMT
x-dns-prefetch-control: off
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
referrer-policy: strict-origin-when-cross-origin
x-frame-options: SAMEORIGIN
0.040817

View File

@@ -0,0 +1,12 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:35 GMT
content-type: text/html
content-length: 470
vary: Accept-Encoding
last-modified: Sun, 22 Feb 2026 04:25:15 GMT
etag: "699a852b-1d6"
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https:; connect-src 'self' https: wss: http://192.168.11.221:8545 ws://192.168.11.221:8546 https://rpc-http-pub.d-bis.org wss://rpc-ws-pub.d-bis.org; frame-src 'self' https:; frame-ancestors 'self';
accept-ranges: bytes
0.090312

View File

@@ -0,0 +1,20 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:29 GMT
content-type: text/html; charset=utf-8
content-length: 5259
vary: Accept-Encoding
x-dns-prefetch-control: on
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: strict-origin-when-cross-origin
permissions-policy: camera=(), microphone=(), geolocation=()
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https:
vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding
cache-control: s-maxage=31536000, stale-while-revalidate
etag: "oibim89srm41x"
alt-svc: h3=":443"; ma=86400
0.072841

View File

@@ -0,0 +1,19 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:26 GMT
content-type: text/html
content-length: 801
vary: Accept-Encoding
last-modified: Wed, 15 Apr 2026 18:06:44 GMT
etag: "69dfd3b4-321"
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob:; font-src 'self' data:; connect-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests
accept-ranges: bytes
alt-svc: h3=":443"; ma=86400
strict-transport-security: max-age=63072000; includeSubDomains; preload
referrer-policy: strict-origin-when-cross-origin
0.043463

View File

@@ -0,0 +1,20 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:47 GMT
content-type: application/json; charset=utf-8
content-length: 113
vary: Accept-Encoding
content-security-policy: default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: same-origin
origin-agent-cluster: ?1
referrer-policy: no-referrer
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-content-type-options: nosniff
x-dns-prefetch-control: off
x-download-options: noopen
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
x-xss-protection: 0
x-trace-id: aa19e0c4f85a84ac417bd9cd7a8005b0
x-span-id: 924815c450090ad7
x-parent-span-id:

View File

@@ -0,0 +1,20 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:33 GMT
content-type: application/json; charset=utf-8
content-length: 113
vary: Accept-Encoding
content-security-policy: default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: same-origin
origin-agent-cluster: ?1
referrer-policy: no-referrer
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-content-type-options: nosniff
x-dns-prefetch-control: off
x-download-options: noopen
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
x-xss-protection: 0
x-trace-id: 43a23f112fc42023a239d08befd00447
x-span-id: c46a8a1dfc7956e7
x-parent-span-id:

View File

@@ -0,0 +1,10 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:41 GMT
x-dns-prefetch-control: off
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
referrer-policy: strict-origin-when-cross-origin
x-frame-options: SAMEORIGIN
0.037918

View File

@@ -0,0 +1,18 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:34 GMT
content-type: text/html; charset=utf-8
content-length: 106338
vary: Accept-Encoding
etag: "dbgda7r63t2a0u"
vary: Accept-Encoding
cache-control: no-store, no-cache, must-revalidate
referrer-policy: strict-origin-when-cross-origin
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://unpkg.com https://cdnjs.cloudflare.com; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; img-src 'self' data: https:; font-src 'self' https://cdnjs.cloudflare.com; connect-src 'self' https://blockscout.defi-oracle.io wss://blockscout.defi-oracle.io https://explorer.d-bis.org wss://explorer.d-bis.org https://rpc-http-pub.d-bis.org wss://rpc-ws-pub.d-bis.org http://192.168.11.221:8545 ws://192.168.11.221:8546;
alt-svc: h3=":443"; ma=86400
x-xss-protection: 0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
strict-transport-security: max-age=63072000; includeSubDomains; preload
0.785230

View File

@@ -0,0 +1 @@
{"total_blocks":4158566,"total_transactions":60889,"total_addresses":6832,"latest_block":4158565,"average_block_time":4525.252525252526,"gas_prices":{"average":14.204000292969999},"network_utilization_percentage":0,"transactions_today":51,"freshness":{"chain_head":{"block_number":4158565,"timestamp":"2026-04-19T20:41:10Z","age_seconds":9755,"source":"reported","confidence":"high","provenance":"rpc","completeness":"complete"},"latest_indexed_block":{"block_number":4158565,"timestamp":"2026-04-19T20:41:10Z","age_seconds":9755,"source":"reported","confidence":"high","provenance":"explorer_index","completeness":"complete"},"latest_indexed_transaction":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51333,"hash":"0x03d4e55bcf98bd3bd9ad8f960543b9743d1a5cebad4e23db1b134905f5e8db97","source":"reported","confidence":"high","provenance":"tx_index","completeness":"stale"},"latest_non_empty_block":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51333,"distance_from_head":9239,"source":"reported","confidence":"high","provenance":"tx_index","completeness":"stale"}},"completeness":{"transactions_feed":"stale","blocks_feed":"complete","gas_metrics":"complete","utilization_metrics":"complete"},"sampling":{"stats_generated_at":"2026-04-19T23:23:45Z","rpc_probe_at":"2026-04-19T20:41:10Z","stats_window_seconds":300},"diagnostics":{"tx_visibility_state":"stale","activity_state":"quiet_chain","explanation":"Recent sampled head blocks are empty, which indicates a quiet chain rather than a broken explorer.","tx_lag_blocks":9239,"tx_lag_seconds":51333,"recent_block_sample_size":128,"recent_non_empty_blocks":0,"recent_transactions":0,"latest_non_empty_block_from_block_feed":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51333,"distance_from_head":9239,"source":"derived","confidence":"medium","provenance":"composite","completeness":"stale"},"source":"reported","confidence":"medium","provenance":"composite","completeness":"complete"}}

View File

@@ -0,0 +1,20 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:44 GMT
content-type: text/html; charset=utf-8
vary: Accept-Encoding
vary: Accept-Encoding
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Rp4hBLN5bmEGVQhcT3iqNQNhSk3uHzCFche9JQDjOGDTEln1cjEVDm7n9UN5L4xTpK6G8S2YljEYFpoTthleLEFkbqiBPDVFNqzZCobbnzNFJFrov8bM5jaXDv%2FZVSPuKvA%2F908%3D"}]}
cache-control: no-store, no-cache, must-revalidate
referrer-policy: strict-origin-when-cross-origin
referrer-policy: strict-origin-when-cross-origin
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https: data:; style-src 'self' 'unsafe-inline' https: data:; font-src 'self' https: data:; img-src 'self' data: https: blob:; connect-src 'self' https: wss: ws:; media-src 'self' https: data:; object-src 'none'; base-uri 'self'; form-action 'self' https:; frame-ancestors 'none'; upgrade-insecure-requests
alt-svc: h3=":443"; ma=86400
x-xss-protection: 0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
strict-transport-security: max-age=31536000; includeSubDomains
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
cf-cache-status: DYNAMIC
server: cloudflare
cf-ray: 9eefa89d8a00f8b7-LAX

View File

@@ -0,0 +1,10 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:42 GMT
x-dns-prefetch-control: off
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
referrer-policy: strict-origin-when-cross-origin
x-frame-options: SAMEORIGIN
0.045925

View File

@@ -0,0 +1,13 @@
HTTP/2 302
date: Sun, 19 Apr 2026 23:23:37 GMT
location: https://keycloak.sankofa.nexus/admin/
referrer-policy: no-referrer
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-content-type-options: nosniff
x-xss-protection: 0
alt-svc: h3=":443"; ma=86400
x-frame-options: SAMEORIGIN
content-security-policy: upgrade-insecure-requests
0.086120

View File

@@ -0,0 +1,12 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:27 GMT
content-type: text/html
content-length: 2147
last-modified: Wed, 07 May 2025 12:00:31 GMT
vary: Accept-Encoding
etag: "681b4b5f-863"
alt-svc: h3=":443"; ma=86400
accept-ranges: bytes
0.036771

View File

@@ -0,0 +1,18 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:37 GMT
content-type: text/html
content-length: 2710
vary: Accept-Encoding
last-modified: Tue, 31 Mar 2026 05:21:47 GMT
etag: "69cb59eb-a96"
accept-ranges: bytes
alt-svc: h3=":443"; ma=86400
x-xss-protection: 0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
content-security-policy: upgrade-insecure-requests
strict-transport-security: max-age=63072000; includeSubDomains; preload
referrer-policy: strict-origin-when-cross-origin
0.044713

View File

@@ -0,0 +1,14 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:38 GMT
content-type: application/json
content-length: 33
vary: Accept-Encoding
alt-svc: h3=":443"; ma=86400
x-xss-protection: 0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
content-security-policy: upgrade-insecure-requests
strict-transport-security: max-age=63072000; includeSubDomains; preload
0.064355

View File

@@ -0,0 +1,20 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:30 GMT
content-type: text/html; charset=utf-8
content-length: 5259
vary: Accept-Encoding
x-dns-prefetch-control: on
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: strict-origin-when-cross-origin
permissions-policy: camera=(), microphone=(), geolocation=()
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https:
vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding
cache-control: s-maxage=31536000, stale-while-revalidate
etag: "oibim89srm41x"
alt-svc: h3=":443"; ma=86400
0.040186

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1 @@
{"jsonrpc":"2.0","id":1,"result":"0x8a"}

View File

@@ -0,0 +1,13 @@
HTTP/2 502
date: Sun, 19 Apr 2026 23:23:31 GMT
content-type: text/html
content-length: 122
alt-svc: h3=":443"; ma=86400
x-xss-protection: 0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
content-security-policy: upgrade-insecure-requests
strict-transport-security: max-age=63072000; includeSubDomains; preload
0.034055

View File

@@ -0,0 +1,19 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:48 GMT
content-type: text/html
content-length: 801
vary: Accept-Encoding
last-modified: Wed, 15 Apr 2026 18:06:44 GMT
etag: "69dfd3b4-321"
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob:; font-src 'self' data:; connect-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests
accept-ranges: bytes
alt-svc: h3=":443"; ma=86400
strict-transport-security: max-age=63072000; includeSubDomains; preload
referrer-policy: strict-origin-when-cross-origin
0.078530

View File

@@ -0,0 +1,18 @@
HTTP/2 200
date: Sun, 19 Apr 2026 23:23:43 GMT
content-type: text/html
content-length: 2710
vary: Accept-Encoding
last-modified: Tue, 31 Mar 2026 05:21:47 GMT
etag: "69cb59eb-a96"
accept-ranges: bytes
alt-svc: h3=":443"; ma=86400
x-xss-protection: 0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
content-security-policy: upgrade-insecure-requests
strict-transport-security: max-age=63072000; includeSubDomains; preload
referrer-policy: strict-origin-when-cross-origin
0.043258

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