chore(repo): sync operator workspace (config, scripts, docs, multi-chain)
Add optional Cosmos/Engine-X/act-runner templates, CWUSDC/EI-matrix tooling, non-EVM route planner in multi-chain-execution (tests passing), token list and extraction updates, and documentation (MetaMask matrix, GRU/CWUSDC packets). Ignore institutional evidence tarballs/sha256 under reports/status. Validated with: bash scripts/verify/run-all-validation.sh --skip-genesis Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -15,6 +15,14 @@ When answering token/PMM/deployment questions, prefer these docs over inferring
|
||||
**Operator commands:** `docs/00-meta/OPERATOR_READY_CHECKLIST.md`
|
||||
**Doc index:** `docs/MASTER_INDEX.md`
|
||||
|
||||
**Master reference — token / stablecoin launch (institutional compendium):** `docs/00-meta/BIBLE_FROM_NATHAN_TOKEN_LAUNCH_RESOURCE_COMPENDIUM.md` — regulation through aggregators and launch checklists; informational only. For Chain 138 token truth and Explorer alignment, still use `EXPLORER_TOKEN_LIST_CROSSCHECK.md` above.
|
||||
|
||||
**Master reference — MetaMask Money/mUSD ↔ GRU, provider cross-links, DefiLlama DODO `dfio_meta_main` TVL:** `docs/00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md` — replay steps, upstream **DefiLlama/DefiLlama-Adapters#19198**, touchpoints JSON, and **Part G** remaining tasks.
|
||||
|
||||
**Gaps and inconsistencies (audit):** `docs/11-references/COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md`
|
||||
|
||||
**Optional Cosmos / IBC to Chain 138 (streams A–E):** `docs/11-references/COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md` — templates: `config/cosmos-chain138-optional/README.md`
|
||||
|
||||
**Deployment phases (full coverage):** `docs/03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md`
|
||||
- A: mint + add liquidity (138) — `mint-for-liquidity.sh`, AddLiquidityPMMPoolsChain138
|
||||
- B: Celo/Wemix CCIP + LINK (Wemix needs 0.4 WEMIX)
|
||||
|
||||
@@ -1,5 +1,25 @@
|
||||
# Exclude heavy paths from Cursor codebase indexing only (files stay editable).
|
||||
# Syntax: same as .gitignore — see https://cursor.com/docs/reference/ignore-file
|
||||
#
|
||||
# Aligns with pyrightconfig.json / .vscode settings to reduce IDE + Python LS load.
|
||||
# See reports/status/pyright-and-ide-performance-investigation-2026-05-09.md
|
||||
|
||||
ProxmoxVE/
|
||||
explorer-monorepo/
|
||||
MEV_Bot/
|
||||
miracles_in_motion/
|
||||
OMNIS/
|
||||
cross-chain-pmm-lps/
|
||||
tmp/
|
||||
.tmp/
|
||||
.codex-artifacts/
|
||||
.devin/
|
||||
.venv-checkjson/
|
||||
venv/
|
||||
smom-dbis-138/lib/
|
||||
smom-dbis-138/artifacts/
|
||||
smom-dbis-138/broadcast/
|
||||
smom-dbis-138/cache/
|
||||
|
||||
third-party/
|
||||
vendor/
|
||||
@@ -8,7 +28,6 @@ build/
|
||||
dist/
|
||||
out/
|
||||
output/
|
||||
tmp/
|
||||
reports/
|
||||
cross-chain-pmm-lps-publish/
|
||||
smom-dbis-138-publish/
|
||||
|
||||
@@ -119,6 +119,12 @@ RPC_URL_138_PUBLIC=
|
||||
INFURA_PROJECT_ID=
|
||||
INFURA_API_KEY=
|
||||
ETHEREUM_MAINNET_RPC=
|
||||
# EI matrix readiness audit (scripts/verify/run-ei-matrix-full-readiness-audit.sh, optional CI step in run-all-validation.sh)
|
||||
EI_MATRIX_AUDIT_SHARD_SIZE=400
|
||||
EI_MATRIX_AUDIT_WORKERS=3
|
||||
EI_MATRIX_AUDIT_MIN_MAINNET_RAW=12000000
|
||||
EI_MATRIX_AUDIT_MIN_138_RAW=0
|
||||
# CI: EI_MATRIX_ONCHAIN_AUDIT_CI=1 EI_MATRIX_ONCHAIN_AUDIT_CI_LIMIT=120 EI_MATRIX_AUDIT_MIN_MAINNET_RAW_CI=0
|
||||
POLYGON_MAINNET_RPC=
|
||||
ARBITRUM_MAINNET_RPC=
|
||||
OPTIMISM_MAINNET_RPC=
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -181,3 +181,7 @@ reports/status/**/*.jsonl
|
||||
reports/status/ei-matrix-*
|
||||
reports/status/cw-multitoken-l2-remediation-*.jsonl
|
||||
reports/status/screenshots/
|
||||
|
||||
# Large evidence bundles / checksums under reports/status (retain outside git or use releases)
|
||||
reports/status/**/*.tar.gz
|
||||
reports/status/**/*.sha256
|
||||
|
||||
@@ -27,7 +27,8 @@ Orchestration for Proxmox VE, Chain 138 (`smom-dbis-138/`), explorers, NPMplus,
|
||||
| Live vs template (read-only SSH) | `bash scripts/verify/audit-proxmox-operational-template.sh` |
|
||||
| Config validation | `bash scripts/validation/validate-config-files.sh` |
|
||||
| pnpm lockfile vs workspace (prevents `pnpm outdated` / importer bugs) | `bash scripts/verify/check-pnpm-workspace-lockfile.sh` — also run as **step 1b** in `run-all-validation.sh` |
|
||||
| CI validation (no LAN) + cW* mesh matrix | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` — same gate as **Gitea** push/PR: `run-all-validation` in `.gitea/workflows/deploy-to-phoenix.yml` (push) and `.gitea/workflows/validate-on-pr.yml` (PR only). After deploy, optional **Cloudflare** `cloudflare-sync` (Phoenix + `PHOENIX_REPO_ROOT`; set `PHOENIX_CLOUDFLARE_SYNC=1` on that host) via `scripts/deployment/gitea-cloudflare-sync.sh`. Steps: dependencies, **pnpm workspace/lockfile check**, config, cW* mesh (when pair-discovery exists), **`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs`**, optional genesis. Manual only: `bash scripts/verify/build-cw-mesh-deployment-matrix.sh [--json-out …]` |
|
||||
| CI validation (no LAN) + cW* mesh matrix | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` — same gate as **Gitea** push/PR: `run-all-validation` in `.gitea/workflows/deploy-to-phoenix.yml` (push) and `.gitea/workflows/validate-on-pr.yml` (PR only), **`runs-on: ubuntu-latest-heavy`** (CT **5700**). After deploy, optional **Cloudflare** `cloudflare-sync` (Phoenix + `PHOENIX_REPO_ROOT`; set `PHOENIX_CLOUDFLARE_SYNC=1` on that host) via `scripts/deployment/gitea-cloudflare-sync.sh`. Steps: dependencies, **pnpm workspace/lockfile check**, config, cW* mesh (when pair-discovery exists), **`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs`**, optional genesis. Manual only: `bash scripts/verify/build-cw-mesh-deployment-matrix.sh [--json-out …]` |
|
||||
| Gitea Actions runners (heavy vs standard pool) | `docs/04-configuration/GITEA_ACT_RUNNER_SETUP.md` — **5700** `ubuntu-latest-heavy`, **5701** `ubuntu-latest`; apply configs `bash scripts/dev-vm/apply-act-runner-config.sh`; snapshot `bash scripts/dev-vm/act-runner-resource-snapshot.sh` |
|
||||
| FQDN / NPM E2E verifier | `bash scripts/verify/verify-end-to-end-routing.sh --profile=public` — inventory: `docs/04-configuration/E2E_ENDPOINTS_LIST.md`. Gitea Actions URLs (no API): `bash scripts/verify/print-gitea-actions-urls.sh` |
|
||||
| Submodule trees clean (CI / post-merge) | `bash scripts/verify/submodules-clean.sh` |
|
||||
| Submodule + explorer remotes | `docs/00-meta/SUBMODULE_HYGIENE.md` — `mcp-proxmox` uses **Gitea** `https://gitea.d-bis.org/d-bis/mcp-proxmox.git` (not the old GitHub-only URL). `cross-chain-pmm-lps-publish` is a **worktree** of `cross-chain-pmm-lps`, not a submodule. |
|
||||
|
||||
16
config/cosmos-chain138-optional/README.md
Normal file
16
config/cosmos-chain138-optional/README.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Cosmos ↔ Chain 138 — optional config templates
|
||||
|
||||
**Purpose:** Machine- and human-readable templates for [COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md](../../docs/11-references/COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md) streams **A–E**. These files are **examples** until operators copy them to a secured location and fill live values.
|
||||
|
||||
| File | Stream |
|
||||
|------|--------|
|
||||
| [corridor-decision.example.md](corridor-decision.example.md) | A (Noble / stable corridor decisions) |
|
||||
| [osmosis-routing-flags.example.yaml](osmosis-routing-flags.example.yaml) | B (routing mode, limits) |
|
||||
| [denom-trace.example.json](denom-trace.example.json) | C (IBC trace / hash schema) |
|
||||
| [cosmwasm-integration.example.md](cosmwasm-integration.example.md) | D (Wasm app pairing) |
|
||||
| [cross-cutting.example.md](cross-cutting.example.md) | E (relayers, wallets, audits, closure) |
|
||||
| [STATUS.md](STATUS.md) | Doc vs live completion tracking |
|
||||
|
||||
**Gaps and inconsistencies (repo-wide audit, includes PMM/CCIP drift):** [COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md](../../docs/11-references/COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md)
|
||||
|
||||
Do **not** commit production keys, channel IDs, or signed vendor contracts here.
|
||||
18
config/cosmos-chain138-optional/STATUS.md
Normal file
18
config/cosmos-chain138-optional/STATUS.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Streams A–E — completion status (repo)
|
||||
|
||||
**Updated:** 2026-05-09
|
||||
**Meaning:** **Doc** = runbook + templates in this repo are complete. **Live** = requires operator decisions, contracts, keys, and vendor chains (not asserted here).
|
||||
|
||||
**Last LAN operator pass (repo standard scripts, not Cosmos-specific):** `run-completable-tasks-from-anywhere.sh` OK; `run-all-operator-tasks-from-lan.sh --skip-backup` OK (NPMplus proxy refresh + Blockscout verification). Does not deploy IBC or Noble.
|
||||
|
||||
| Stream | Doc / template | Live bridge & ops |
|
||||
|--------|------------------|-------------------|
|
||||
| **A** Noble / stable corridor | Complete (runbook §3 + `corridor-decision.example.md`) | Not live — operator fills decision record and executes on-chain when adopted |
|
||||
| **B** Osmosis / Cosmos DEX routing | Complete (runbook §4 + `osmosis-routing-flags.example.yaml`) | Not live — route engine integration when adopted |
|
||||
| **C** Generic IBC allowlist | Complete (runbook §5 + `denom-trace.example.json`) | Not live — governance allowlist + registry rows when adopted |
|
||||
| **D** CosmWasm app ↔ 138 | Complete (runbook §6 + `cosmwasm-integration.example.md`) | Not live — per-app deploy when adopted |
|
||||
| **E** Cross-cutting + program closure | Complete (runbook §7 + `cross-cutting.example.md`) | Partially live only if A–D adopted (relayers, audits, etc.) |
|
||||
|
||||
**Deferred / out of scope until adoption:** Any mainnet IBC channel, Noble mint path, Osmosis swap execution, CosmWasm ICA, and production relayer keys.
|
||||
|
||||
**Full gaps + inconsistency inventory:** [COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md](../../docs/11-references/COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md)
|
||||
43
config/cosmos-chain138-optional/corridor-decision.example.md
Normal file
43
config/cosmos-chain138-optional/corridor-decision.example.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Stream A — corridor decision record (example)
|
||||
|
||||
Copy to internal wiki or secured docs. Replace all `TODO`.
|
||||
|
||||
## A1 Source and bridge stack
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| Source chain | TODO (e.g. Noble) |
|
||||
| Bridge vendor / stack | TODO (e.g. general-message bridge, CCTP path, or oracle-operated) |
|
||||
| Vendor documentation URL | TODO |
|
||||
|
||||
## A2 138-side contracts and roles
|
||||
|
||||
| Role | Address or multisig | Notes |
|
||||
|------|---------------------|--------|
|
||||
| Admin | TODO | |
|
||||
| Pauser | TODO | |
|
||||
| Oracle or verifier | TODO | |
|
||||
|
||||
## A3 Denom → Chain 138 token mapping
|
||||
|
||||
| IBC denom / trace | Chain 138 token address | Decimals | Canonical ref |
|
||||
|-------------------|-------------------------|----------|---------------|
|
||||
| TODO | TODO | TODO | EXPLORER_TOKEN_LIST_CROSSCHECK + ADDRESS_MATRIX |
|
||||
|
||||
## A4 ChainRegistry
|
||||
|
||||
| chainIdentifier | adapter (138) | additionalData summary |
|
||||
|-----------------|----------------|-------------------------|
|
||||
| TODO | TODO | TODO (channel IDs, bridge contract on counterparty) |
|
||||
|
||||
## A5 Liquidity
|
||||
|
||||
| Venue | Amount / policy | Owner sign-off |
|
||||
|-------|-----------------|----------------|
|
||||
| TODO | TODO | TODO |
|
||||
|
||||
## A6 E2E evidence
|
||||
|
||||
| Direction | Tx hash / link | Date |
|
||||
|-----------|----------------|------|
|
||||
| TODO | TODO | TODO |
|
||||
@@ -0,0 +1,29 @@
|
||||
# Stream D — CosmWasm app pairing (example)
|
||||
|
||||
## D1 Contract pins
|
||||
|
||||
| Network | Contract address | Code ID | Migrate policy |
|
||||
|---------|------------------|---------|------------------|
|
||||
| TODO | TODO | TODO | frozen / multisig / DAO |
|
||||
|
||||
## D2 Control path
|
||||
|
||||
Chosen path: TODO (ICA / ICQ / GMP to EVM / off-chain coordinator + oracle)
|
||||
|
||||
Attach sequence diagram URL: TODO
|
||||
|
||||
## D3 Chain 138 counterpart
|
||||
|
||||
| Contract | Address | Purpose |
|
||||
|----------|---------|---------|
|
||||
| TODO | TODO | vault / adapter / settlement |
|
||||
|
||||
## D4 Hyperledger
|
||||
|
||||
Required: yes / no — if yes, cite Cacti/Firefly task from MULTI_CHAIN_DEPLOYMENT_GUIDE Phase 4.
|
||||
|
||||
## D5 Wasm CI
|
||||
|
||||
Repository: TODO
|
||||
Build command: TODO
|
||||
Upgrade runbook URL: TODO
|
||||
43
config/cosmos-chain138-optional/cross-cutting.example.md
Normal file
43
config/cosmos-chain138-optional/cross-cutting.example.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Stream E — cross-cutting + program closure (example)
|
||||
|
||||
## E1 IBC relayers
|
||||
|
||||
| Channel | Relayer operator | Key custody | SLA |
|
||||
|---------|------------------|-------------|-----|
|
||||
| TODO | TODO | TODO | TODO |
|
||||
|
||||
## E2 Wallets (Cosmos legs)
|
||||
|
||||
| Wallet | Supported flows | User doc URL |
|
||||
|--------|-----------------|--------------|
|
||||
| Keplr | TODO | TODO |
|
||||
| Leap | TODO | TODO |
|
||||
| MetaMask Snap (if used) | TODO | TODO |
|
||||
|
||||
## E3 Indexing and observability
|
||||
|
||||
| System | Cosmos / IBC events | Retention |
|
||||
|--------|---------------------|-----------|
|
||||
| TODO | TODO | TODO |
|
||||
|
||||
## E4 Audits
|
||||
|
||||
| Scope | Vendor | Report URL | Date |
|
||||
|-------|--------|------------|------|
|
||||
| TODO bridge | TODO | TODO | TODO |
|
||||
|
||||
## E5 Rate limits
|
||||
|
||||
| Surface | Limit | Enforced by |
|
||||
|---------|-------|-------------|
|
||||
| Mint API | TODO | TODO |
|
||||
| On-chain mint/burn | TODO | contract |
|
||||
|
||||
## E6 Program closure
|
||||
|
||||
| Milestone | Owner | Date |
|
||||
|-----------|-------|------|
|
||||
| Preconditions P1–P5 signed | TODO | TODO |
|
||||
| Streams adopted (product A–D + closure E) | TODO | TODO |
|
||||
| CHAINS_AND_PROTOCOLS + GALATIC updated for live only | TODO | TODO |
|
||||
| Annual review scheduled | TODO | TODO |
|
||||
19
config/cosmos-chain138-optional/denom-trace.example.json
Normal file
19
config/cosmos-chain138-optional/denom-trace.example.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"$schema_comment": "Stream C — example IBC trace record for allowlist + ChainRegistry.additionalData mirror",
|
||||
"tier": "TIER_1_GOVERNANCE",
|
||||
"ibc_hash": "TODO_ibc_hash_or_full_denom",
|
||||
"path": [
|
||||
{
|
||||
"port_id": "transfer",
|
||||
"channel_id": "TODO",
|
||||
"counterparty_chain_id": "TODO",
|
||||
"counterparty_channel_id": "TODO"
|
||||
}
|
||||
],
|
||||
"human_readable_denom": "TODO",
|
||||
"bridge_stack_id": "TODO_vendor_or_internal_id",
|
||||
"chain138_token_address": "0x0000000000000000000000000000000000000000",
|
||||
"decimals": 6,
|
||||
"canonical_crosscheck_ref": "docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md",
|
||||
"user_warning_long_trace": true
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
# Stream B — routing integration flags (example)
|
||||
# Copy into route-engine or service config when Osmosis/Cosmos DEX leg is adopted.
|
||||
|
||||
cosmos_dex_routing:
|
||||
mode: quotes_only # quotes_only | executable_swaps
|
||||
max_slippage_bps: 50
|
||||
ibc_timeout_seconds: 600
|
||||
quote_ttl_seconds: 30
|
||||
chains_allowlist: [] # e.g. cosmoshub-4, osmosis-1 — fill when live
|
||||
fail_closed_on_timeout: true
|
||||
aggregator_alignment:
|
||||
use_axelar_squid_patterns: false # set true when wired to explorer/squid stack
|
||||
review_doc: docs/11-references/BRIDGE_CHAINS_IMPLEMENTATION_COMPLETE.md
|
||||
@@ -11,6 +11,10 @@
|
||||
"regulatoryFraming": "Compliant digital money / e-money settlement rail — TVL adapters measure on-chain contract balances, not issuer licensing status.",
|
||||
"upstream": {
|
||||
"defillamaAdapters": "https://github.com/DefiLlama/DefiLlama-Adapters",
|
||||
"upstreamPullRequest": "https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198",
|
||||
"upstreamPullRequestState": "open",
|
||||
"upstreamPullRequestStateAsOf": "2026-05-10",
|
||||
"upstreamPullRequestLastGhCheckUtc": "2026-05-10T19:59Z",
|
||||
"fork": "https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters",
|
||||
"defillamaServer": "https://github.com/DefiLlama/defillama-server",
|
||||
"dimensionAdapters": "https://github.com/DefiLlama/dimension-adapters"
|
||||
@@ -113,6 +117,9 @@
|
||||
],
|
||||
"docs": {
|
||||
"ecosystemMap": "docs/04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md",
|
||||
"submissionChecklist": "docs/04-configuration/defillama/DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md"
|
||||
"submissionChecklist": "docs/04-configuration/defillama/DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md",
|
||||
"dodoDfioMetaMainTvlNote": "docs/11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md",
|
||||
"masterReference": "docs/00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md",
|
||||
"repositoriesAndPrs": "docs/00-meta/REPOSITORIES_AND_PRS_CHAIN138.md"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"registryVersion": 1,
|
||||
"purpose": "Authoritative network codes for Elemental Imperium (33×33×6) wallet labels. ASNs are optional; add when assigned.",
|
||||
"purpose": "Authoritative network codes for Elemental Imperium (33×33×6) wallet labels. Grid addresses are treasuries for sovereign nations in the EI model; ASNs are optional; add when assigned.",
|
||||
"labelSpec": {
|
||||
"id": "ei-wallet-label-v1",
|
||||
"cellIdFormat": "EI-L{lpbca:02d}-B{branch:02d}-C{class}",
|
||||
|
||||
122
config/engine-x/automation-policy.json
Normal file
122
config/engine-x/automation-policy.json
Normal file
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"updated": "2026-05-09",
|
||||
"component": "DBIS Engine X",
|
||||
"purpose": "Automation policy for API-fed liquidity advice, XAUt-backed USDC capacity calculation, cW* output planning, on-chain execution gates, and endpoint reporting.",
|
||||
"mode": {
|
||||
"default": "read_only_advisor",
|
||||
"liveExecutionRequires": [
|
||||
"operator_approval",
|
||||
"protected_transaction_rpc",
|
||||
"fresh_live_quotes",
|
||||
"funded_usdc_lender_or_public_quote_inventory",
|
||||
"passing_solidity_preview",
|
||||
"nonzero_iso_audit_peg_hashes"
|
||||
]
|
||||
},
|
||||
"inputs": {
|
||||
"requestedOutput": {
|
||||
"symbolEnv": "ENGINE_X_REQUESTED_CW_SYMBOL",
|
||||
"defaultSymbol": "cWUSDC",
|
||||
"amountRawEnv": "ENGINE_X_REQUESTED_OUTPUT_RAW",
|
||||
"amountUnitsEnv": "ENGINE_X_REQUESTED_OUTPUT_UNITS",
|
||||
"supportedInitialSymbols": [
|
||||
"cWUSDC"
|
||||
]
|
||||
},
|
||||
"collateral": {
|
||||
"symbol": "XAUt",
|
||||
"availableRawEnv": "ENGINE_X_XAUT_AVAILABLE_RAW",
|
||||
"availableUnitsEnv": "ENGINE_X_XAUT_AVAILABLE_UNITS",
|
||||
"usdPrice6Env": "ENGINE_X_XAUT_USD_PRICE6",
|
||||
"defaultUsdPrice6": "3226640000"
|
||||
},
|
||||
"risk": {
|
||||
"ltvBpsEnv": "ENGINE_X_BORROW_LTV_BPS",
|
||||
"defaultLtvBps": 7500,
|
||||
"minHealthFactorBpsEnv": "ENGINE_X_BORROW_MIN_HEALTH_FACTOR_BPS",
|
||||
"defaultMinHealthFactorBps": 11000,
|
||||
"maxRoundTripLossBpsEnv": "ENGINE_X_MAX_ROUND_TRIP_LOSS_BPS",
|
||||
"defaultMaxRoundTripLossBps": 100,
|
||||
"maxPublicSwapLossBpsEnv": "ENGINE_X_MAX_PUBLIC_SWAP_LOSS_BPS",
|
||||
"defaultMaxPublicSwapLossBps": 75,
|
||||
"minGasReserveWeiEnv": "ENGINE_X_MIN_GAS_RESERVE_WEI",
|
||||
"defaultMinGasReserveWei": "5000000000000000"
|
||||
}
|
||||
},
|
||||
"feeds": {
|
||||
"repoReports": [
|
||||
"reports/status/mainnet-cwusdc-usdc-support-health-latest.json",
|
||||
"reports/status/engine-x-public-indexed-readiness-latest.json",
|
||||
"reports/status/engine-x-mev-defense-readiness-latest.json",
|
||||
"reports/status/mainnet-cwusdc-weth-liquidity-surfaces-latest.json"
|
||||
],
|
||||
"onChainReadinessCommands": [
|
||||
"pnpm engine-x:public-readiness",
|
||||
"pnpm engine-x:mev-defense",
|
||||
"pnpm engine-x:weth-liquidity-eval",
|
||||
"python3 scripts/verify/check-mainnet-cwusdc-usdc-support-health.py"
|
||||
],
|
||||
"externalPublicationTargets": [
|
||||
"token-aggregation public report API",
|
||||
"CoinGecko tracker package",
|
||||
"CoinMarketCap tracker package",
|
||||
"Etherscan public transaction and pool pages",
|
||||
"DexScreener and GeckoTerminal indexed pool pages",
|
||||
"exchange listing or OTC due-diligence packet",
|
||||
"Forex desk liquidity and proof packet"
|
||||
]
|
||||
},
|
||||
"decisionGates": {
|
||||
"apiAdvisor": [
|
||||
"all required report feeds are present or regenerated",
|
||||
"requested output token is supported",
|
||||
"calculator produces positive capacity",
|
||||
"all blocker fields are explicit"
|
||||
],
|
||||
"liveExecution": [
|
||||
"MEV defense readiness is ready",
|
||||
"selected liquidity surface has live indexable pool evidence",
|
||||
"selected public swap has nonzero quote and minOut",
|
||||
"USDC debt after loop is zero",
|
||||
"XAUt collateral withdrawal is previewed after repayment",
|
||||
"no route substitutes DODO, UniV2, UniV3, WETH, or USDC roles silently",
|
||||
"operator has reviewed generated commands"
|
||||
],
|
||||
"publication": [
|
||||
"on-chain transaction hashes are present",
|
||||
"before and after reserves or slot0/liquidity are present",
|
||||
"ISO 20022-style proof hash is present when applicable",
|
||||
"audit envelope hash is present",
|
||||
"peg proof hash is present",
|
||||
"public endpoint package was regenerated after execution"
|
||||
]
|
||||
},
|
||||
"automationPhases": [
|
||||
{
|
||||
"id": "phase_0_advisor",
|
||||
"name": "Read-only API and calculator advice",
|
||||
"broadcast": false
|
||||
},
|
||||
{
|
||||
"id": "phase_1_canary",
|
||||
"name": "Protected tiny public canary execution",
|
||||
"broadcast": "operator_approved_only"
|
||||
},
|
||||
{
|
||||
"id": "phase_2_liquidity_defense",
|
||||
"name": "Automated protected rebalance and quote defense",
|
||||
"broadcast": "after_canary_and_loss_limits"
|
||||
},
|
||||
{
|
||||
"id": "phase_3_endpoint_publication",
|
||||
"name": "Regenerate reports and publish endpoint packets",
|
||||
"broadcast": false
|
||||
},
|
||||
{
|
||||
"id": "phase_4_multi_asset_forex_crypto",
|
||||
"name": "Extend cW* request symbols and FX/crypto endpoint packets",
|
||||
"broadcast": "per_asset_policy"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"updated": "2026-04-18",
|
||||
"updated": "2026-05-08",
|
||||
"rail": "mainnet_cwusdc_usdc",
|
||||
"network": {
|
||||
"chainId": 1,
|
||||
@@ -24,6 +24,62 @@
|
||||
"poolAddress": "0x69776fc607e9edA8042e320e7e43f54d06c68f0E",
|
||||
"managedCycleScript": "smom-dbis-138/script/flash/RunManagedMainnetAaveCwusdcUsdcQuotePushCycle.s.sol:RunManagedMainnetAaveCwusdcUsdcQuotePushCycle"
|
||||
},
|
||||
"quoteDefenseSurfaces": [
|
||||
{
|
||||
"id": "mainnet-cwusdc-usdc-univ3-100",
|
||||
"base": "cWUSDC",
|
||||
"quote": "USDC",
|
||||
"role": "primary_public_indexed_quote_defense",
|
||||
"venue": "uniswap_v3_pool",
|
||||
"poolAddress": "0x1Cf2e685682C7F7beF508F0Af15Dfb5CDda01ee3",
|
||||
"fee": 100,
|
||||
"routerAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564",
|
||||
"quoterAddress": "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
|
||||
"activeRange": {
|
||||
"preferredLowerTick": -100,
|
||||
"preferredUpperTick": 100,
|
||||
"targetTick": 0
|
||||
},
|
||||
"defenseMode": "quote_side_tick_reentry_then_proof_swaps",
|
||||
"automationStatus": "operator_review_required",
|
||||
"notes": [
|
||||
"Primary public/indexable quote-defense surface for tiny 1:1 canaries.",
|
||||
"If current tick is below -100, first push quote side with USDC->cWUSDC until the old -100..100 position re-enters range.",
|
||||
"Do not assume historical 75/75 or 85/85 liquidity is active; verify slot0 tick, active liquidity, and token balances before proof swaps."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "mainnet-cwusdc-usdc-univ2",
|
||||
"base": "cWUSDC",
|
||||
"quote": "USDC",
|
||||
"role": "secondary_public_indexed_quote_defense",
|
||||
"venue": "uniswap_v2_pair",
|
||||
"poolAddress": "0xC28706F899266b36BC43cc072b3a921BDf2C48D9",
|
||||
"routerAddress": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",
|
||||
"defenseMode": "quote_side_reserve_repair",
|
||||
"automationStatus": "capital_gated",
|
||||
"notes": [
|
||||
"Public/indexable reserve surface for larger swaps.",
|
||||
"Use only after fresh reserve read and quote-side repair sizing.",
|
||||
"Current role is secondary because the pair is quote-starved."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "mainnet-cwusdc-usdc-dodo-managed",
|
||||
"base": "cWUSDC",
|
||||
"quote": "USDC",
|
||||
"role": "managed_defended_quote_push",
|
||||
"venue": "dodo_pmm",
|
||||
"poolAddress": "0x69776fc607e9edA8042e320e7e43f54d06c68f0E",
|
||||
"defenseMode": "managed_quote_push_cycle",
|
||||
"automationStatus": "capital_gated",
|
||||
"notes": [
|
||||
"Managed defended lane remains distinct from public indexed proof lanes.",
|
||||
"Do not silently substitute this pool for the public spend settlement replacement pool.",
|
||||
"Requires passing DODO quote preview and sufficient official Mainnet USDC quote inventory before automation."
|
||||
]
|
||||
}
|
||||
],
|
||||
"thresholds": {
|
||||
"warnDeviationBps": 25,
|
||||
"interveneDeviationBps": 75,
|
||||
@@ -46,10 +102,37 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"mevDefense": {
|
||||
"status": "required_for_sensitive_execution",
|
||||
"failClosedByDefault": true,
|
||||
"acceptedPrivateRpcEnvKeys": [
|
||||
"ENGINE_X_PRIVATE_TX_RPC",
|
||||
"MEV_BLOCKER_RPC_URL",
|
||||
"FLASHBOTS_RPC_URL",
|
||||
"BLOXROUTE_RPC_URL",
|
||||
"BLINK_RPC_URL"
|
||||
],
|
||||
"publicBroadcastOverrideEnvKey": "ENGINE_X_ALLOW_PUBLIC_BROADCAST",
|
||||
"disableGuardEnvKey": "ENGINE_X_MEV_PROTECTION",
|
||||
"protectedActions": [
|
||||
"engine-x-univ3-public-swap-proof",
|
||||
"engine-x-univ2-public-indexed-loop",
|
||||
"mainnet-cwusdc-usdc-univ2-canary-repair",
|
||||
"engine-x-univ3-indexed-lp-migration"
|
||||
],
|
||||
"rules": [
|
||||
"Use private/protected RPC for any live Engine X public-indexed swap, quote repair, LP migration, or rebalance.",
|
||||
"Dry-runs and read-only health checks may use the normal Mainnet RPC.",
|
||||
"Do not broadcast quote-defense transactions through the public mempool unless the operator explicitly sets ENGINE_X_ALLOW_PUBLIC_BROADCAST=1 for a reviewed canary.",
|
||||
"Never print protected RPC URLs in reports; report only the configured provider label or env key."
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"The public Uniswap V2 pair is for visible routing and discovery, not for hard parity guarantees on its own.",
|
||||
"The UniV3 fee-100 pool is the preferred public/indexable quote-defense canary lane when its tick is in or near the configured active range.",
|
||||
"When the public pair drifts beyond the intervention corridor, use the managed DODO quote-push stack as the first automated defense path.",
|
||||
"Do not trust POOL_CWUSDC_USDC_MAINNET from dotenv blindly; this policy is the canonical defended venue binding.",
|
||||
"Automation must select quoteDefenseSurfaces by explicit role and venue; never silently substitute UniV2, UniV3, or DODO for each other.",
|
||||
"Automation is capped to the currently tested safe tranche until the defended lane is explicitly re-sized from fresh liquidity measurements."
|
||||
]
|
||||
}
|
||||
|
||||
8
config/gitea-act-runner/README.md
Normal file
8
config/gitea-act-runner/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Gitea act_runner config templates
|
||||
|
||||
| File | CT | Purpose |
|
||||
|------|-----|---------|
|
||||
| `config-5700-heavy.yaml` | 5700 (`dev-vm`) | `ubuntu-latest-heavy` — large pnpm/validation jobs |
|
||||
| `config-5701-standard.yaml` | 5701 (`gitea-runner-1`) | `ubuntu-latest` / `ubuntu-22.04` / `ubuntu-20.04` — default pool |
|
||||
|
||||
Deploy with `bash scripts/dev-vm/apply-act-runner-config.sh` from the repo root (LAN). Full procedure: `docs/04-configuration/GITEA_ACT_RUNNER_SETUP.md`.
|
||||
41
config/gitea-act-runner/config-5700-heavy.yaml
Normal file
41
config/gitea-act-runner/config-5700-heavy.yaml
Normal file
@@ -0,0 +1,41 @@
|
||||
# act_runner — CT 5700 (dev-vm): heavy / monorepo CI (label ubuntu-latest-heavy).
|
||||
# Applied by: bash scripts/dev-vm/apply-act-runner-config.sh
|
||||
# Image: https://gitea.com/docker.gitea.com/runner-images
|
||||
|
||||
log:
|
||||
level: info
|
||||
|
||||
runner:
|
||||
file: .runner
|
||||
capacity: 1
|
||||
timeout: 3h
|
||||
shutdown_timeout: 0s
|
||||
insecure: false
|
||||
fetch_timeout: 5s
|
||||
fetch_interval: 5s
|
||||
github_mirror: ''
|
||||
labels:
|
||||
- "ubuntu-latest-heavy:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
||||
|
||||
cache:
|
||||
enabled: true
|
||||
dir: ""
|
||||
host: ""
|
||||
port: 0
|
||||
external_server: ""
|
||||
|
||||
container:
|
||||
network: bridge
|
||||
privileged: false
|
||||
options: "--cpus=4 --memory=10g --pids-limit=8192"
|
||||
workdir_parent: /var/lib/act_runner/workdir
|
||||
valid_volumes:
|
||||
- '**'
|
||||
docker_host: ""
|
||||
force_pull: false
|
||||
force_rebuild: false
|
||||
require_docker: false
|
||||
docker_timeout: 0s
|
||||
|
||||
host:
|
||||
workdir_parent: /var/lib/act_runner/workdir
|
||||
42
config/gitea-act-runner/config-5701-standard.yaml
Normal file
42
config/gitea-act-runner/config-5701-standard.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
# act_runner — CT 5701 (gitea-runner-1): default pool (labels ubuntu-latest / 22.04 / 20.04).
|
||||
# Applied by: bash scripts/dev-vm/apply-act-runner-config.sh
|
||||
|
||||
log:
|
||||
level: info
|
||||
|
||||
runner:
|
||||
file: .runner
|
||||
capacity: 1
|
||||
timeout: 3h
|
||||
shutdown_timeout: 0s
|
||||
insecure: false
|
||||
fetch_timeout: 5s
|
||||
fetch_interval: 5s
|
||||
github_mirror: ''
|
||||
labels:
|
||||
- "ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
||||
- "ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"
|
||||
- "ubuntu-20.04:docker://docker.gitea.com/runner-images:ubuntu-20.04"
|
||||
|
||||
cache:
|
||||
enabled: true
|
||||
dir: ""
|
||||
host: ""
|
||||
port: 0
|
||||
external_server: ""
|
||||
|
||||
container:
|
||||
network: bridge
|
||||
privileged: false
|
||||
options: "--cpus=2 --memory=4g --pids-limit=512"
|
||||
workdir_parent: /var/lib/act_runner/workdir
|
||||
valid_volumes:
|
||||
- '**'
|
||||
docker_host: ""
|
||||
force_pull: false
|
||||
force_rebuild: false
|
||||
require_docker: false
|
||||
docker_timeout: 0s
|
||||
|
||||
host:
|
||||
workdir_parent: /var/lib/act_runner/workdir
|
||||
@@ -24,7 +24,8 @@ jobs:
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
REPO="${{ gitea.repository }}"
|
||||
curl -sSf -X POST "${PHOENIX_DEPLOY_URL}" \
|
||||
curl -sSf --connect-timeout 10 --max-time 3600 \
|
||||
-X POST "${PHOENIX_DEPLOY_URL}" \
|
||||
-H "Authorization: Bearer ${PHOENIX_DEPLOY_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"${REPO}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"${TARGET}\"}"
|
||||
|
||||
@@ -17,7 +17,8 @@ jobs:
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
curl -sSf --connect-timeout 10 --max-time 3600 \
|
||||
-X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"d-bis/CROMERO\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}"
|
||||
|
||||
@@ -17,7 +17,8 @@ jobs:
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
curl -sSf --connect-timeout 10 --max-time 3600 \
|
||||
-X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"d-bis/CurrenciCombo\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}"
|
||||
|
||||
@@ -17,7 +17,8 @@ jobs:
|
||||
run: |
|
||||
SHA="$(git rev-parse HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
curl -sSf --connect-timeout 10 --max-time 3600 \
|
||||
-X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \
|
||||
-H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"repo\":\"Gov_Web_Portals/DBIS\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"dbis-portal-live\"}"
|
||||
|
||||
89
config/non-evm-lane-requirements.json
Normal file
89
config/non-evm-lane-requirements.json
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"schema": "non-evm-lane-requirements/v1",
|
||||
"generatedAt": "2026-05-11T22:34:46.673427+00:00",
|
||||
"status": "stubs_bound_repo_side",
|
||||
"lanes": [
|
||||
{
|
||||
"network": "solana",
|
||||
"nativeAsset": "SOL",
|
||||
"walletStatus": "bound_from_SOLANA_KEYPAIR_PATH_public_key",
|
||||
"canonicalWallet": "9b4ebHVimuhMqbiCh6tUMMY2S48VyEHpqg5nxMMFe5Pf",
|
||||
"requiredBindings": [
|
||||
"splMintAddresses",
|
||||
"rentReserveTarget",
|
||||
"venueMinimumLiquidity"
|
||||
],
|
||||
"minimumFundingTarget": "TBD",
|
||||
"claimBoundary": "Do not claim native Solana liquidity until SPL mints, rent/gas, and venue inventory are bound."
|
||||
},
|
||||
{
|
||||
"network": "tron",
|
||||
"nativeAsset": "TRX",
|
||||
"walletStatus": "derived_wallet_needs_canonical_confirmation",
|
||||
"canonicalWallet": "TGkbidE5LfVJZ3QGj6DaPqzCTcTe9tJDxm",
|
||||
"requiredBindings": [
|
||||
"canonicalWalletApproval",
|
||||
"energyBandwidthTarget",
|
||||
"trc20Inventory"
|
||||
],
|
||||
"minimumFundingTarget": "TBD",
|
||||
"claimBoundary": "Do not claim native Tron liquidity until the canonical wallet and TRC-20 inventory are confirmed."
|
||||
},
|
||||
{
|
||||
"network": "xrpl",
|
||||
"nativeAsset": "XRP",
|
||||
"walletStatus": "missing",
|
||||
"canonicalWallet": null,
|
||||
"requiredBindings": [
|
||||
"xrplAccount",
|
||||
"destinationTagPolicy",
|
||||
"trustlineIssuerPolicy",
|
||||
"xrpReserveTarget"
|
||||
],
|
||||
"minimumFundingTarget": "TBD",
|
||||
"claimBoundary": "Do not claim XRPL corridor readiness until account reserve, tags, trustlines, and wXRP controller evidence are closed."
|
||||
},
|
||||
{
|
||||
"network": "bitcoin",
|
||||
"nativeAsset": "BTC",
|
||||
"walletStatus": "missing",
|
||||
"canonicalWallet": null,
|
||||
"requiredBindings": [
|
||||
"btcCustodyAddress",
|
||||
"proofOfReservesPolicy",
|
||||
"wrappedAssetMapping",
|
||||
"venueTarget"
|
||||
],
|
||||
"minimumFundingTarget": "TBD",
|
||||
"claimBoundary": "Use BTC as a planning lane only until custody/reserve evidence and wrapping policy are bound."
|
||||
},
|
||||
{
|
||||
"network": "dogecoin",
|
||||
"nativeAsset": "DOGE",
|
||||
"walletStatus": "missing",
|
||||
"canonicalWallet": null,
|
||||
"requiredBindings": [
|
||||
"dogeCustodyAddress",
|
||||
"bridgeOrCustodyModel",
|
||||
"venueTarget"
|
||||
],
|
||||
"minimumFundingTarget": "TBD",
|
||||
"claimBoundary": "Use DOGE as a planning lane only until native custody and bridge model are bound."
|
||||
},
|
||||
{
|
||||
"network": "hyperliquid",
|
||||
"nativeAsset": "HYPE",
|
||||
"walletStatus": "research_required",
|
||||
"canonicalWallet": null,
|
||||
"requiredBindings": [
|
||||
"chainIdentifier",
|
||||
"assetIdentifier",
|
||||
"custodyPath",
|
||||
"venueOrApiEvidence"
|
||||
],
|
||||
"minimumFundingTarget": "TBD",
|
||||
"claimBoundary": "Use HYPE only as a market-cap watch item until identifiers and custody path are verified."
|
||||
}
|
||||
],
|
||||
"validationRule": "A lane is claimable only after canonicalWallet, asset IDs, native gas/reserve target, venue target, and evidence source are non-TBD."
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
{
|
||||
"version": 2,
|
||||
"semanticModel": {
|
||||
"summary": "The 33×33×6 Elemental Imperium (EI) grid wallets in this file are the canonical Ethereum addresses designated as on-chain treasuries for sovereign nations in the DBIS/EI routing model. Operational mapping from cell (lpbca × branch × class) to a specific nation uses config/elemental-imperium-network-registry.json and overlays; legal recognition and reserve policy are outside this repo."
|
||||
},
|
||||
"dimensions": {
|
||||
"lpbcaCount": 33,
|
||||
"branchCount": 33,
|
||||
|
||||
16
config/systemd/cwusdc-provider-monitor.service.example
Normal file
16
config/systemd/cwusdc-provider-monitor.service.example
Normal file
@@ -0,0 +1,16 @@
|
||||
# Example install on a monitoring host with this repo checked out:
|
||||
# sudo cp config/systemd/cwusdc-provider-monitor.service.example /etc/systemd/system/cwusdc-provider-monitor.service
|
||||
# sudo cp config/systemd/cwusdc-provider-monitor.timer.example /etc/systemd/system/cwusdc-provider-monitor.timer
|
||||
# sudo systemctl daemon-reload
|
||||
# sudo systemctl enable --now cwusdc-provider-monitor.timer
|
||||
|
||||
[Unit]
|
||||
Description=cWUSDC provider propagation monitor
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=intlc
|
||||
WorkingDirectory=/home/intlc/projects/proxmox
|
||||
ExecStart=/bin/bash /home/intlc/projects/proxmox/scripts/verify/run-cwusdc-provider-monitoring-snapshot.sh
|
||||
10
config/systemd/cwusdc-provider-monitor.timer.example
Normal file
10
config/systemd/cwusdc-provider-monitor.timer.example
Normal file
@@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=Run cWUSDC provider propagation monitor daily
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 13:00:00 UTC
|
||||
Persistent=true
|
||||
RandomizedDelaySec=15m
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
@@ -0,0 +1,479 @@
|
||||
---
|
||||
title: Bible from Nathan — Token Launch Resource Compendium
|
||||
alias: Bible from Nathan
|
||||
document_class: master-reference
|
||||
master_index_role: Cross-cutting institutional token and stablecoin launch compendium (regulatory through aggregators and checklists). Not a substitute for repo-specific canonicals below.
|
||||
source_file: Token_Launch_Resource_Compendium_260510_215234.md
|
||||
contributed_by: Nathan
|
||||
generated: 2026-05-10
|
||||
scope: Sovereign chain / stablecoin / pegged and non-pegged token launches — institutional reference links and checklists.
|
||||
note: Informational only; not legal, financial, or tax advice. URLs were verified at original generation; update before redistribution.
|
||||
---
|
||||
|
||||
|
||||
## SOVEREIGN CHAIN / STABLECOIN LAUNCH
|
||||
## Token Launch
|
||||
## Resource Compendium
|
||||
A Reference for Pegged & Non-Pegged Token Launches
|
||||
## Custody · Banking · Audits · Aggregators · Regulation · Tooling
|
||||
## INSTITUTIONAL-GRADE LAUNCH REFERENCE
|
||||
From Legal Foundation to Mainnet
|
||||
## Generated 10 May 2026
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 2
|
||||
## Purpose & Scope
|
||||
This compendium consolidates the operational, technical, financial, legal, and ecosystem resources
|
||||
required to launch a sovereign Layer-1 blockchain and to issue a pegged stablecoin or any other
|
||||
token across multiple chains.
|
||||
It is structured to be reused for any token launch — both pegged and non-pegged — with the rigor
|
||||
that institutional counterparties expect. Every link below has been verified at the time of generation.
|
||||
Bookmark this PDF and treat it as a working document; update it whenever a vendor or regulator
|
||||
changes.
|
||||
How to use this document
|
||||
Sections 1–4 are foundational and must be addressed before any contract code is deployed. Sections 5–8
|
||||
are technical infrastructure. Sections 9–11 are aggregator, monitoring, and ecosystem integrations.
|
||||
Section 12 contains reusable launch checklists. The final section lists the recommended ordering and the
|
||||
preliminary calls to make before writing a single line of Solidity.
|
||||
Table of Contents
|
||||
## 1. Regulatory & Compliance
|
||||
## 2. Legal Counsel
|
||||
## 3. Custody & Reserves
|
||||
## 4. Banking & Fiat Rails
|
||||
## 5. Smart Contract Tooling
|
||||
## 6. Audits & Bug Bounty
|
||||
## 7. Multisig, Timelock & Liquidity Locking
|
||||
## 8. Reference Protocols & Bridge Architecture
|
||||
## 9. Oracles & Monitoring
|
||||
## 10. Aggregators & Data Integrity
|
||||
- Block Explorers, DEXs & Launch Venues
|
||||
- KYC / AML / Compliance Tooling
|
||||
## 13. Reserve Attestation & Insurance
|
||||
## 14. Reusable Launch Checklists
|
||||
## 15. Recommended Sequencing
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 3
|
||||
## REGULATORY & COMPLIANCE
|
||||
## 1. Regulatory Bodies & Frameworks
|
||||
Issuing a USD-pegged stablecoin in 2026 is among the most legally exposed activities in crypto.
|
||||
Architecture is downstream of legal structure — get the legal foundation in place before contract
|
||||
design. Identify your primary jurisdiction first, then layer in any additional jurisdictions where you
|
||||
intend to serve users.
|
||||
## United States
|
||||
FinCEN — Money Services Business Registration ·
|
||||
https://www.fincen.gov/resources/money-services-business-msb-registration
|
||||
FinCEN — BSA E-File System (Form 107) · https://bsaefiling.fincen.treas.gov/
|
||||
Required filing system for MSB registration.
|
||||
IRS — Money Services Business Information Center · https://www.irs.gov/businesses/small-businesses
|
||||
## -self-employed/money-services-business-msb-information-center
|
||||
CSBS / NMLS — State Money Transmitter Licensing · https://www.csbs.org/
|
||||
State-by-state MTL is required if serving US persons.
|
||||
## European Union
|
||||
ESMA — Markets in Crypto-Assets (MiCA) Hub · https://www.esma.europa.eu/esmas-activities/digital-fin
|
||||
ance-and-innovation/markets-crypto-assets-regulation-mica
|
||||
EBA — Stablecoin & ART/EMT Guidelines · https://www.eba.europa.eu/
|
||||
## United Kingdom
|
||||
FCA — Crypto-Asset Registration · https://www.fca.org.uk/firms/cryptoassets
|
||||
## Australia
|
||||
AUSTRAC — Digital Currency Exchange Provider Registration · https://online.austrac.gov.au/
|
||||
AUSTRAC — DCE Guidance · https://www.austrac.gov.au/business/how-comply-and-report-guidance-and
|
||||
## -resources/guidance-resources/digital-currency-exchange-providers
|
||||
ASIC — Crypto-Asset Regulation ·
|
||||
https://asic.gov.au/regulatory-resources/digital-transformation/crypto-assets/
|
||||
## United Arab Emirates
|
||||
VARA — Dubai Virtual Asset Regulatory Authority · https://www.vara.ae/
|
||||
ADGM Financial Services Regulatory Authority (Abu Dhabi) · https://www.adgm.com/
|
||||
## Singapore
|
||||
MAS — Payment Services Act · https://www.mas.gov.sg/regulation/payments
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 4
|
||||
## LEGAL COUNSEL
|
||||
## 2. Specialist Crypto Law Firms
|
||||
Institutional credibility requires written legal opinions in every jurisdiction where the token is offered.
|
||||
Engage counsel in the primary jurisdiction first, then layer in the additional jurisdictions in priority
|
||||
order.
|
||||
## United States
|
||||
Cooley LLP — Cryptocurrency Practice · https://www.cooley.com/
|
||||
Davis Polk & Wardwell — Digital Assets · https://www.davispolk.com/
|
||||
Morrison Cohen — Crypto Group · https://www.morrisoncohen.com/
|
||||
Wilson Sonsini — Fintech & Crypto · https://www.wsgr.com/
|
||||
United Kingdom & EU
|
||||
Allen Overy Shearman Sterling (A&O; Shearman) — MiCA · https://www.aoshearman.com/
|
||||
Mishcon de Reya — Crypto & Blockchain · https://www.mishcon.com/
|
||||
Bird & Bird — Crypto Regulation · https://www.twobirds.com/
|
||||
## Australia
|
||||
Hall & Wilcox — Crypto & Digital Asset Practice · https://hallandwilcox.com.au/
|
||||
Piper Alderman — Blockchain & Crypto Group · https://piperalderman.com.au/
|
||||
King & Wood Mallesons — Digital Assets · https://www.kwm.com/
|
||||
## CUSTODY
|
||||
## 3. Qualified Custodians
|
||||
Reserves backing a stablecoin must be held in segregated custody at a qualified custodian — never
|
||||
on an exchange, never in the operational treasury. Plan for redundancy across two custodians for
|
||||
systemic risk reduction.
|
||||
Coinbase Custody · https://www.coinbase.com/institutional/custody
|
||||
NY-DFS regulated trust company. Standard institutional choice.
|
||||
BitGo · https://www.bitgo.com/
|
||||
Qualified custodian, broad asset support, multi-jurisdiction.
|
||||
Anchorage Digital · https://www.anchorage.com/
|
||||
OCC-chartered digital asset bank — institutional gold standard.
|
||||
Fireblocks · https://www.fireblocks.com/
|
||||
MPC-based hot/warm wallet ops. Use alongside cold custody.
|
||||
Copper · https://copper.co/
|
||||
ClearLoop network. Strong for trading desks.
|
||||
Komainu · https://www.komainu.com/
|
||||
JV between Nomura, Ledger and CoinShares. EU-friendly.
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 5
|
||||
Standard Custody & Trust · https://www.standardcustody.com/
|
||||
NY trust, smaller and nimble for emerging issuers.
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 6
|
||||
## BANKING
|
||||
## 4. Banking & Fiat Rails
|
||||
Banking is the single hardest dependency in stablecoin operations. Plan redundancy across at least
|
||||
two crypto-friendly institutions in different jurisdictions. Banking relationships are fragile — a single
|
||||
bank failure or de-banking event can halt operations.
|
||||
## United States / Global
|
||||
Customers Bank — Digital Asset Banking ·
|
||||
https://www.customersbank.com/business/digital-asset-banking/
|
||||
Cross River Bank · https://www.crossriver.com/
|
||||
Mercury — Crypto-Adjacent Fintech Banking · https://mercury.com/
|
||||
Europe / UK / Switzerland
|
||||
BCB Group — Crypto Payment & Banking · https://www.bcbgroup.com/
|
||||
AMINA Bank (Switzerland, FINMA-licensed) · https://www.aminagroup.com/
|
||||
Sygnum Bank (Switzerland) · https://www.sygnum.com/
|
||||
## Australia
|
||||
Independent Reserve — Institutional Banking Layer · https://www.independentreserve.com/business
|
||||
Most accessible Australian on/off ramp for crypto businesses.
|
||||
Cuscal — Mutual ADI · https://www.cuscal.com.au/
|
||||
Has historically banked some Australian crypto businesses; case-by-case.
|
||||
## BUILD STACK
|
||||
## 5. Smart Contract Tooling
|
||||
OpenZeppelin Contracts (v5) · https://github.com/OpenZeppelin/openzeppelin-contracts
|
||||
ERC-20, AccessControl, upgradeable proxies, Pausable. Industry standard.
|
||||
OpenZeppelin Defender · https://defender.openzeppelin.com/
|
||||
Operational layer: monitoring, multisig, automated tasks.
|
||||
Hardhat · https://hardhat.org/
|
||||
Mature dev/test/deploy framework.
|
||||
hardhat-deploy · https://github.com/wighawag/hardhat-deploy
|
||||
Foundry · https://book.getfoundry.sh/
|
||||
Faster fuzz/invariant testing. Strongly recommended for bridge invariants.
|
||||
Slither — Static Analyzer · https://github.com/crytic/slither
|
||||
Echidna — Property-Based Fuzzer · https://github.com/crytic/echidna
|
||||
Tenderly — Simulation & Monitoring · https://tenderly.co/
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 7
|
||||
## SECURITY
|
||||
## 6. Audits & Bug Bounty
|
||||
Plan for three independent audits of any bridge, mint/burn, and PSM contracts. Different firms catch
|
||||
different classes of bugs. Bug bounty must be live before mainnet.
|
||||
## Tier-1 Audit Firms
|
||||
Trail of Bits · https://www.trailofbits.com/
|
||||
OpenZeppelin Audits · https://www.openzeppelin.com/security-audits
|
||||
ConsenSys Diligence · https://consensys.io/diligence
|
||||
Spearbit · https://spearbit.com/
|
||||
Cantina (Spearbit Marketplace) · https://cantina.xyz/
|
||||
## Competitive Audit Marketplaces
|
||||
Code4rena · https://code4rena.com/
|
||||
Crowd-sourced audits with strong economics. Use after a private audit.
|
||||
Sherlock · https://www.sherlock.xyz/
|
||||
Audit + on-chain coverage. Combines both lines of defense.
|
||||
## Other Reputable Firms
|
||||
CertiK · https://www.certik.com/
|
||||
Halborn · https://www.halborn.com/
|
||||
Quantstamp · https://quantstamp.com/
|
||||
## Bug Bounty Platforms
|
||||
Immunefi · https://immunefi.com/
|
||||
The only one institutional counterparties care about. $1M cap minimum.
|
||||
HackenProof · https://hackenproof.com/
|
||||
## KEY MANAGEMENT
|
||||
- Multisig, Timelock & LP Locking
|
||||
Safe (formerly Gnosis Safe) · https://app.safe.global/
|
||||
Institutional-grade multisig. Use 4-of-7 minimum for bridge admin.
|
||||
OpenZeppelin TimelockController ·
|
||||
https://docs.openzeppelin.com/contracts/5.x/api/governance#TimelockController
|
||||
24–72hr timelock on all admin functions. Non-negotiable.
|
||||
UNCX Network — LP Locker · https://app.uncx.network/
|
||||
Most established LP locker.
|
||||
Team Finance — Token & LP Locker · https://www.team.finance/
|
||||
PinkSale Lockers · https://www.pinksale.finance/
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 8
|
||||
## ARCHITECTURE REFERENCES
|
||||
## 8. Reference Protocols & Bridge Architecture
|
||||
## Liquidity & Pool Patterns
|
||||
Curve Stableswap (the math for stablecoin pools) · https://github.com/curvefi/curve-contract
|
||||
Uniswap V3 (concentrated liquidity) · https://github.com/Uniswap/v3-core
|
||||
Balancer LBP (fair-launch bootstrapping) · https://docs.balancer.fi/concepts/pools/liquidity-bootstrapping
|
||||
DODO PMM (Proactive Market Maker reference) · https://github.com/DODOEX/contractV2
|
||||
## Stablecoin Architecture References
|
||||
MakerDAO Peg Stability Module (PSM) · https://github.com/makerdao/dss-psm
|
||||
The canonical PSM implementation. Fork this pattern.
|
||||
Circle USDC Smart Contracts · https://github.com/circlefin/stablecoin-evm
|
||||
Institutional reference: pausable, blacklistable, upgradeable.
|
||||
## Bridge Architecture References
|
||||
Circle CCTP — Cross-Chain Transfer Protocol · https://www.circle.com/cross-chain-transfer-protocol
|
||||
Native mint/burn — gold-standard cross-chain stablecoin pattern.
|
||||
LayerZero · https://layerzero.network/
|
||||
Wormhole · https://wormhole.com/
|
||||
Axelar · https://www.axelar.network/
|
||||
Chainlink CCIP — Institutional Cross-Chain · https://chain.link/cross-chain
|
||||
Hyperlane — Modular Interoperability · https://www.hyperlane.xyz/
|
||||
## PRICE & MONITORING
|
||||
## 9. Oracles & Operational Monitoring
|
||||
## Oracle Providers
|
||||
Chainlink Data Feeds · https://docs.chain.link/data-feeds
|
||||
Pyth Network — Low-Latency Institutional Feeds · https://pyth.network/
|
||||
RedStone — Modular Oracles · https://redstone.finance/
|
||||
Chronicle (formerly MakerDAO oracles) · https://chroniclelabs.org/
|
||||
## Monitoring & Threat Detection
|
||||
Tenderly — Real-Time Contract Monitoring · https://tenderly.co/
|
||||
Forta — On-Chain Threat Detection · https://forta.org/
|
||||
Blocknative — Mempool Monitoring · https://www.blocknative.com/
|
||||
Dune Analytics — Public Dashboards · https://dune.com/
|
||||
The Graph — Subgraph Indexing · https://thegraph.com/
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 9
|
||||
## DATA INTEGRITY
|
||||
## 10. Aggregators & Listing
|
||||
These are the surfaces where institutions and retail will see the token. Submit to all four with
|
||||
consistent metadata. Link wrapped versions as additional contracts of the native token to prevent
|
||||
double-counted market cap.
|
||||
CoinGecko
|
||||
Self-Serve Request Form (token listing, info, supply updates) ·
|
||||
https://support.coingecko.com/hc/en-us/articles/33084534107289-Self-Serve-Request-Form
|
||||
How to List a New Cryptocurrency · https://support.coingecko.com/hc/en-us/articles/7291312302617-Ho
|
||||
w-to-List-a-New-Cryptocurrency-on-CoinGecko
|
||||
Support Directory (all forms) · https://support.coingecko.com/hc/en-us/articles/23960919544345-Support
|
||||
-Directory-CoinGecko-Request-Forms
|
||||
CoinMarketCap
|
||||
Request Form (the only official channel) · https://coinmarketcap.com/request/
|
||||
Listing Criteria · https://support.coinmarketcap.com/hc/en-us/articles/360043659351-Listings-Criteria
|
||||
How to Add a Coin/Token ·
|
||||
https://support.coinmarketcap.com/hc/en-us/articles/360016191971-How-to-Add-a-Coin-Token
|
||||
DEX Screener
|
||||
Token Listing Documentation · https://docs.dexscreener.com/token-listing
|
||||
Enhanced Token Info (paid metadata, ~$299) · https://marketplace.dexscreener.com/product/token-info
|
||||
Marketplace (advertising, trending) · https://marketplace.dexscreener.com/
|
||||
DefiLlama
|
||||
Adapters Repository (TVL adapters) · https://github.com/DefiLlama/DefiLlama-Adapters
|
||||
How to Submit a Project · https://docs.llama.fi/list-your-project/submit-a-project
|
||||
Dimension Adapters (DEX volume, fees) · https://github.com/DefiLlama/dimension-adapters
|
||||
Listing Info Edits · https://github.com/DefiLlama/defillama-server/blob/master/defi/src/protocols/data2.ts
|
||||
New chain integration note
|
||||
Both DEX Screener and DefiLlama require chain-level integration before they will index tokens or pools on
|
||||
a new sovereign chain. Open a chain integration request with each via their Discord/contact channels —
|
||||
provide RPC endpoints, a working block explorer, a stable subgraph or indexer, and at least one DEX
|
||||
deployment. This is a multi-week process; start early.
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 10
|
||||
## CHAIN INFRA
|
||||
- Block Explorers, DEXs & Launch Venues
|
||||
Explorers (verify contracts here)
|
||||
Etherscan — Verify Contract · https://etherscan.io/verifyContract
|
||||
BscScan — Verify Contract · https://bscscan.com/verifyContract
|
||||
Polygonscan — Verify Contract · https://polygonscan.com/verifyContract
|
||||
Arbiscan — Verify Contract · https://arbiscan.io/verifyContract
|
||||
Blockscout (open-source explorer for sovereign chains) · https://github.com/blockscout/blockscout
|
||||
Standard self-hosted explorer. Required for DEX Screener / DefiLlama integration.
|
||||
Liquidity Bootstrapping (Fair Launches)
|
||||
Fjord Foundry — LBP-as-a-Service · https://www.fjordfoundry.com/
|
||||
Copper Launch · https://copperlaunch.com/
|
||||
Balancer Pools · https://balancer.fi/pools
|
||||
DEXs to Deploy LPs On (Satellites)
|
||||
Uniswap V3 (ETH, Arbitrum, Polygon, Base, BSC) · https://app.uniswap.org/
|
||||
PancakeSwap V3 (BSC) · https://pancakeswap.finance/
|
||||
Curve (best for stablecoin pools) · https://curve.fi/
|
||||
Balancer (multi-chain) · https://balancer.fi/
|
||||
Camelot (Arbitrum) · https://app.camelot.exchange/
|
||||
## COMPLIANCE STACK
|
||||
- KYC / AML / Compliance Tooling
|
||||
## Transaction Monitoring & Sanctions Screening
|
||||
Chainalysis · https://www.chainalysis.com/
|
||||
TRM Labs · https://www.trmlabs.com/
|
||||
Elliptic · https://www.elliptic.co/
|
||||
KYC / KYB / Identity Verification
|
||||
Sumsub · https://sumsub.com/
|
||||
Persona · https://withpersona.com/
|
||||
Jumio · https://www.jumio.com/
|
||||
Onfido · https://onfido.com/
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 11
|
||||
## RESERVES & RISK
|
||||
## 13. Reserve Attestation & Insurance
|
||||
Monthly attestation by an independent firm is the institutional baseline for any reserve-backed
|
||||
stablecoin. Start with mid-tier and graduate to Big Four as TVL grows.
|
||||
## Reserve Attestation Firms
|
||||
Armanino · https://www.armanino.com/
|
||||
Withum · https://www.withum.com/
|
||||
The Network Firm (crypto-native) · https://thenetworkfirm.com/
|
||||
Grant Thornton · https://www.grantthornton.com/
|
||||
BDO · https://www.bdo.com/
|
||||
Deloitte (Big 4 — audits Circle's USDC) · https://www.deloitte.com/
|
||||
## Insurance / Coverage
|
||||
Nexus Mutual — DeFi Cover · https://nexusmutual.io/
|
||||
Sherlock — Smart Contract Coverage · https://www.sherlock.xyz/
|
||||
Evertas — Institutional Crypto Insurance · https://evertas.com/
|
||||
Native — Treasury Insurance · https://www.native-fi.com/
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 12
|
||||
## REUSABLE
|
||||
## 14. Launch Checklists
|
||||
These checklists work for any token launch. The first is for pegged stablecoins. The second is for
|
||||
non-pegged tokens. The third applies to every aggregator listing. The fourth applies to every
|
||||
multi-chain expansion.
|
||||
## Checklist A — Pegged Stablecoin Launch
|
||||
## Foundation
|
||||
n Legal entity in regulated jurisdiction with crypto-friendly framework
|
||||
n Custodian agreement signed with qualified custodian (with redundancy)
|
||||
n Banking relationship with at least two crypto-friendly banks
|
||||
n Reserve composition policy documented (cash %, T-bills %)
|
||||
n KYC/AML program for institutional minters
|
||||
n Compliance officer designated and primary-jurisdiction registration filed
|
||||
## Smart Contracts
|
||||
n Token contract: ERC-20 upgradeable proxy, pausable, blacklistable
|
||||
n Minting contract: multisig-gated, whitelisted minters
|
||||
n PSM contract: public 1:1 swap with caps and fees
|
||||
n Bridge contracts with strict supply invariant enforcement
|
||||
n Locker contract for protocol-owned liquidity with timelock
|
||||
n All contracts use OpenZeppelin v5
|
||||
n Three independent audits completed
|
||||
n Bug bounty live on Immunefi with $1M+ cap
|
||||
## Reserves
|
||||
n Reserves seeded 1:1 before any mint
|
||||
n Monthly attestation engagement signed
|
||||
n Public reserves dashboard live
|
||||
n Real-time supply API endpoint deployed
|
||||
## Liquidity
|
||||
n Hub pool: stableswap or V3 with $0.999–$1.001 range
|
||||
n LP locked 2+ years with timelock contract
|
||||
n LP held by treasury multisig (POL)
|
||||
n Satellite PMMs deployed and inventory funded
|
||||
n PSM deployed on every chain
|
||||
## Bridge
|
||||
n Two invariants enforced: wrapped supply == native locked, total supply == reserves
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 13
|
||||
n Rate limits configured (1%/hour, 5%/day starting)
|
||||
n 4-of-7 multisig + 24–72hr timelock on admin
|
||||
n Pause guardian configured (single-signer pause)
|
||||
n Daily automated invariant check live
|
||||
## Monitoring
|
||||
n Price deviation alerts at 25 bps
|
||||
n Auto-pause at 100 bps deviation
|
||||
n Independent monitoring agent on separate infrastructure
|
||||
n 24/7 incident response rota documented
|
||||
## Aggregator / Data
|
||||
n All contracts verified on every chain explorer
|
||||
n Logo (256×256 PNG transparent), description, links prepared
|
||||
n CoinGecko submission with reserve attestation
|
||||
n CoinMarketCap submission with reserve attestation
|
||||
n DEX Screener pairs claimed and metadata added
|
||||
n DefiLlama adapter written and PR'd
|
||||
n Public Supply API endpoint live
|
||||
n Multi-chain contracts linked to prevent double-counting
|
||||
n Transparency page with reserves, audits, attestations
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 14
|
||||
Checklist B — Non-Pegged Token Launch
|
||||
## Foundation
|
||||
n Tokenomics document (supply, distribution, vesting, emissions)
|
||||
n Whitepaper or lite paper published
|
||||
n Team / founder allocation: 12-month cliff, 36-month linear vest minimum
|
||||
## Smart Contracts
|
||||
n Token contract: ERC-20, ideally non-upgradeable for trust
|
||||
n Vesting contracts for team / treasury
|
||||
n Bridge contracts with supply invariant (if multi-chain)
|
||||
n LP locker with timelock
|
||||
n At least one audit (two preferred)
|
||||
n Bug bounty proportional to TVL
|
||||
## Launch Mechanism
|
||||
n LBP for fair price discovery (strongly preferred over direct seeding)
|
||||
n Hub pool seeded after LBP at discovered price
|
||||
n V3 concentrated range chosen for expected volatility
|
||||
n LP locked 2 years
|
||||
n LP held by treasury (POL)
|
||||
Multi-Chain Expansion
|
||||
n PMM on each satellite chain instead of thin LPs
|
||||
n Inventory matched to expected volume per chain
|
||||
n PMM oracle-anchored to hub TWAP (30-min)
|
||||
n Bridge with rate limits
|
||||
n Multisig + timelock on bridge admin
|
||||
## Oracle / Stability
|
||||
n Three-source median oracle (hub TWAP + signed off-chain + Chainlink if available)
|
||||
n Auto-pause at 5% deviation between sources
|
||||
n Monitoring agent independent of main infrastructure
|
||||
## Aggregator / Data
|
||||
n Contracts verified on every chain explorer
|
||||
n CoinGecko + CoinMarketCap submissions
|
||||
n DEX Screener claim
|
||||
n DefiLlama adapter (if protocol has TVL)
|
||||
n Multi-chain contracts properly linked
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 15
|
||||
Checklist C — Aggregator Listing (every token)
|
||||
n Verified contracts on every chain explorer
|
||||
n Logo: 256×256 PNG with transparent background
|
||||
n One-paragraph description (50–200 words)
|
||||
n Long description (500–1500 words)
|
||||
n Official website with HTTPS
|
||||
n Twitter / X account active >30 days
|
||||
n Telegram / Discord with real members
|
||||
n Whitepaper PDF
|
||||
n Audit reports public
|
||||
n Active liquidity pools with $50k+ daily volume
|
||||
n CoinGecko submission filed
|
||||
n CoinMarketCap submission filed
|
||||
n DEX Screener pairs claimed
|
||||
n DefiLlama adapter merged (if applicable)
|
||||
n All wrapped / bridged versions listed as additional contracts on the same listing
|
||||
n Supply API endpoint exposed for canonical supply queries
|
||||
Checklist D — Multi-Chain Expansion (any token)
|
||||
n 30+ days clean operation on hub chain before expanding
|
||||
n Bridge contracts audited specifically for the new chain
|
||||
n Satellite chain RPC endpoints stable and redundant
|
||||
n PMM (preferred) or properly-sized LP deployed
|
||||
n Oracle feed extended to new chain
|
||||
n Monitoring extended to new chain
|
||||
n Wrapped contract verified on chain explorer
|
||||
n Aggregator listings updated with new contract address
|
||||
n Bridge rate limits set conservatively for first 30 days
|
||||
n Documentation updated with new chain details
|
||||
n Incident runbook updated for new chain failure modes
|
||||
|
||||
## TOKEN LAUNCH · RESOURCE COMPENDIUMINSTITUTIONAL REFERENCE
|
||||
Generated May 2026Page 16
|
||||
## EXECUTION
|
||||
## 15. Recommended Sequencing
|
||||
Three calls to make before writing a single line of contract code. These conversations reshape the
|
||||
architecture in ways that save many multiples of their cost downstream.
|
||||
01 Primary-Jurisdiction Regulator
|
||||
Identify the primary jurisdiction and complete the relevant registration (e.g., AUSTRAC DCE in Australia,
|
||||
FinCEN MSB in the US, MiCA authorisation in the EU). Filing fees are usually nominal; the AML/CTF
|
||||
program is where consulting cost lives.
|
||||
## 02 Local Crypto Counsel
|
||||
Engage a specialist law firm in the primary jurisdiction. Obtain a written legal opinion on token structure,
|
||||
regulatory classification, and treasury arrangements before any contract design is finalised.
|
||||
03 US Crypto Counsel (if serving US persons)
|
||||
If any US persons will hold or transact the token, get advice on FinCEN MSB registration, state money
|
||||
transmitter implications, and SEC posture from a tier-1 US firm such as Cooley or Davis Polk.
|
||||
Closing note
|
||||
The technical infrastructure is the part most engineering teams already know how to build. Legal structure
|
||||
determines whether the project can actually take institutional money. Sequence accordingly: legal first,
|
||||
contracts second, audits third, mainnet last. The checklists above are reusable for every future launch —
|
||||
pegged or non-pegged.
|
||||
This document is informational and does not constitute legal, financial, or tax advice. URLs verified at time of
|
||||
generation; vendor and regulatory links may change. Update before redistribution.
|
||||
@@ -21,7 +21,8 @@
|
||||
| **CCIPWETH9Bridge.sol** (all chains) | Same: validates token == weth9, then `transfer(recipient, amount)`. **Does not mint cW*.** |
|
||||
| **CCIPWETH10Bridge.sol** | Same for WETH10; no cW* logic. |
|
||||
| **CompliantWrappedToken.sol** | Has `mint`, `burn`, and `burnFrom` (BURNER_ROLE). `burnFrom` added in Phase C1 for TwoWayTokenBridgeL2 outbound. |
|
||||
| **TwoWayTokenBridgeL2.sol** | `ccipReceive` calls `IMintableERC20(mirroredToken).mint(recipient, amount)` — **would mint cW*** if `mirroredToken` = cWUSDT/cWUSDC. Outbound uses `burnFrom`; CompliantWrappedToken does not implement `burnFrom`. |
|
||||
| **CWMultiTokenBridgeL1/L2.sol** | Preferred cW mint/burn bridge path. L1 locks/releases canonical c* on Chain 138; L2 mints/burns configured cW* mirrors on public chains. |
|
||||
| **TwoWayTokenBridgeL2.sol** | Per-token fallback. `ccipReceive` calls `IMintableERC20(mirroredToken).mint(recipient, amount)` and outbound uses `burnFrom`. |
|
||||
| **DeployCWTokens.s.sol** | Grants MINTER_ROLE and BURNER_ROLE to `CW_BRIDGE_ADDRESS` (per-chain in .env). So the *address* we set will have roles, but the *contract code* at that address (CCIPWETH9Bridge/CCIPRelayBridge) never calls `mint`/`burn` on cW*. |
|
||||
|
||||
**Conclusion:** The current bridge suite is **WETH-only**. Granting MINTER/BURNER to it allows deployment of cW* but **does not** enable cross-chain mint/burn of cW* until the receiver logic is extended or a dedicated cW* receiver is deployed.
|
||||
@@ -44,7 +45,7 @@
|
||||
|
||||
| # | Task | Owner | Notes | Status |
|
||||
|---|------|--------|-------|--------|
|
||||
| A1 | **Decide cW* receive strategy:** (1) Extend existing CCIPWETH9Bridge/CCIPRelayBridge to support cW* mint in ccipReceive, or (2) Deploy dedicated cW* receiver per chain (e.g. TwoWayTokenBridgeL2 or new CCIPReceiverCW). | Operator/Dev | Option 2 chosen. | ✅ Done |
|
||||
| A1 | **Decide cW* receive strategy:** (1) Extend existing CCIPWETH9Bridge/CCIPRelayBridge to support cW* mint in ccipReceive, or (2) Deploy dedicated cW* receiver per chain. | Operator/Dev | Option 2 chosen; preferred implementation is CWMultiTokenBridgeL1/L2. | ✅ Done |
|
||||
| A2 | **Document chosen approach** in `docs/07-ccip/CW_BRIDGE_APPROACH.md` (create): flow 138→chain (lock c* on 138, mint cW* on dest), chain→138 (burn cW*, release c*), and which contract(s) implement receive/send. | Dev | | ✅ Done |
|
||||
|
||||
### Phase B: Contract changes (if extending existing bridge)
|
||||
@@ -62,8 +63,8 @@
|
||||
| # | Task | Owner | Notes | Status |
|
||||
|---|------|--------|-------|--------|
|
||||
| C1 | **CompliantWrappedToken:** Add `burnFrom(address from, uint256 amount)` that checks BURNER_ROLE and calls `burn(from, amount)` (or implement ERC20Burnable and grant BURNER to bridge). | Dev | Required if using TwoWayTokenBridgeL2 for outbound. | ✅ Done |
|
||||
| C2 | **Deploy TwoWayTokenBridgeL2** (or new CCIPReceiverCW) per chain: constructor(router, cWUSDT, feeToken). Configure destination (Chain 138 selector, L1 bridge address). | Operator | TwoWayTokenBridgeL2 is not upgradeable; one deployment per (chain, token) or generic with token in message. See [CW_DEPLOY_AND_WIRE_RUNBOOK.md](CW_DEPLOY_AND_WIRE_RUNBOOK.md). | Pending |
|
||||
| C3 | **Point CW_BRIDGE_<CHAIN> to new receiver** and re-run DeployCWTokens so MINTER/BURNER are on the new receiver, or grant roles to new receiver after deploy. | Operator | If receiver is separate from CCIPWETH9_BRIDGE, set CW_BRIDGE_<CHAIN> to receiver address. | Pending |
|
||||
| C2 | **Deploy CWMultiTokenBridgeL1/L2**: L1 on Chain 138, L2 on each active public mesh chain. Configure destinations and canonical-to-mirrored token pairs. | Operator | Preferred multi-token path; TwoWayTokenBridgeL2 remains a per-token fallback. See [CW_DEPLOY_AND_WIRE_RUNBOOK.md](CW_DEPLOY_AND_WIRE_RUNBOOK.md). | Pending |
|
||||
| C3 | **Point CW_BRIDGE_<CHAIN> to new receiver** and re-run DeployCWTokens so MINTER/BURNER are on the new receiver, or grant roles to new receiver after deploy. | Operator | If receiver is separate from CCIPWETH9_BRIDGE, set CW_BRIDGE_<CHAIN> to the CWMultiTokenBridgeL2 address. | Pending |
|
||||
| C4 | **Chain 138 send side:** Ensure a sender/bridge on 138 sends CCIP messages with receiver = new cW* receiver on destination and data encoding (recipient, amount). | Dev/Operator | Documented in [CW_BRIDGE_APPROACH.md](../07-ccip/CW_BRIDGE_APPROACH.md). | ✅ Documented |
|
||||
|
||||
### Phase D: Deploy cW* and wire config
|
||||
@@ -80,7 +81,7 @@
|
||||
| # | Task | Owner | Notes | Status |
|
||||
|---|------|--------|-------|--------|
|
||||
| E1 | **Relay service (138→Mainnet):** If using CCIPRelayBridge for cW*, extend relay to support cUSDT/cUSDC: relay must send CCIP with token = cUSDT (or lock-and-mint semantics) and destination = Mainnet bridge; Mainnet bridge must mint cWUSDT. | Operator/Dev | See RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md pattern (extend bridge or new receiver). Runbook § E1. | Operator |
|
||||
| E2 | **Direct CCIP (138→chain):** If Chain 138 uses UniversalCCIPBridge or CCIPWETH9Bridge to send c* to destination, add destination config for c* and ensure receiver on destination mints cW*. | Dev | Documented in approach; runbook § E2. | Documented |
|
||||
| E2 | **Direct CCIP (138→chain):** Configure CWMultiTokenBridgeL1 destinations for canonical c* and CWMultiTokenBridgeL2 token pairs so the destination receiver mints cW*. | Dev/Operator | Documented in approach; runbook § E2. | Documented |
|
||||
| E3 | **Test E2E:** Lock cUSDT on 138, trigger send, verify cWUSDT minted on destination to recipient. | Operator | Runbook § E3. | Operator |
|
||||
|
||||
### Phase F: Documentation and runbooks
|
||||
@@ -114,5 +115,7 @@
|
||||
- [CW_DEPLOY_AND_WIRE_RUNBOOK.md](../07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md) — Operator steps for D1–D4, E1–E3.
|
||||
- [RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md](../07-ccip/RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md) (pattern for extending bridge)
|
||||
- `smom-dbis-138/contracts/relay/CCIPRelayBridge.sol`, `contracts/ccip/CCIPWETH9Bridge.sol`
|
||||
- `smom-dbis-138/contracts/bridge/CWMultiTokenBridgeL1.sol`
|
||||
- `smom-dbis-138/contracts/bridge/CWMultiTokenBridgeL2.sol`
|
||||
- `smom-dbis-138/contracts/bridge/TwoWayTokenBridgeL2.sol`
|
||||
- `smom-dbis-138/contracts/tokens/CompliantWrappedToken.sol` (includes `burnFrom` for TwoWayTokenBridgeL2)
|
||||
|
||||
@@ -31,7 +31,7 @@ source smom-dbis-138/.env 2>/dev/null
|
||||
# Or one contract: ./scripts/verify/run-contract-verification-with-proxy.sh --only Multicall
|
||||
```
|
||||
|
||||
Check https://explorer.d-bis.org/address/<addr> for verification status.
|
||||
Check https://explorer.d-bis.org/addresses/<addr> for verification status.
|
||||
|
||||
---
|
||||
|
||||
|
||||
295
docs/00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md
Normal file
295
docs/00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md
Normal file
@@ -0,0 +1,295 @@
|
||||
# Master reference — MetaMask Money / mUSD ↔ GRU, provider cross-links, and DefiLlama DODO (`dfio_meta_main`) TVL
|
||||
|
||||
**Status:** canonical **replay and maintenance** document for work completed in-session (narrative alignment, documentation cross-references, DefiLlama DODO Chain 138 TVL diagnosis, upstream PR tracking, and machine-readable touchpoints).
|
||||
|
||||
**Audience:** operators, doc maintainers, and agents who need to **reproduce**, **extend**, or **close the loop** when upstream merges or MetaMask publishes official bindings.
|
||||
|
||||
**Scope boundaries:** This document does **not** replace canonical token economics or on-chain verification — use `docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md` (sections 5 and 8), `docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md`, and `docs/11-references/ADDRESS_MATRIX_AND_STATUS.md` for those. It **does** record **how** the repo was wired for narrative consistency, discoverability, and DefiLlama adapter follow-up.
|
||||
|
||||
---
|
||||
|
||||
## 1. Executive summary — what was achieved
|
||||
|
||||
| Track | Outcome |
|
||||
|-------|---------|
|
||||
| **A. MetaMask Money / mUSD ↔ GRU (internal narrative)** | Added a guarded subsection to the MetaMask provider matrix mapping **Money rail** and **mUSD** to hub **`cUSDC` / `cUSDC_V2`** and wrapped Mainnet **`cWUSDC`**, with explicit disclaimer until MetaMask publishes official CAIP-19 / controller bindings. |
|
||||
| **B. Discoverability (cross-references)** | Linked that narrative from EIP747 packet, GRU positioning packet, CWUSDC packet, DefiLlama ecosystem map, Explorer/address canonicals, and the provider matrix DeFiLlama row. |
|
||||
| **C. DefiLlama DODO TVL on `dfio_meta_main`** | Documented why per-chain breakdown can show **`dfio_meta_main: 0.00`** with a finite multi-chain **total** (e.g. ~12.36M), how PR **#19198** addresses it, and how to verify locally. |
|
||||
| **D. Upstream PR alignment** | Standardized on **[DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198)** with verified **OPEN** state (as of **2026-05-10** in repo copy — **re-verify on GitHub** before relying on stale text). |
|
||||
| **E. Machine-readable registry** | Extended `config/defillama-chain138-touchpoints.json` with **`upstreamPullRequest`**, **`upstreamPullRequestState`**, **`upstreamPullRequestStateAsOf`**, **`upstreamPullRequestLastGhCheckUtc`**, and **`docs`** keys (`dodoDfioMetaMainTvlNote`, `masterReference`, `repositoriesAndPrs`). |
|
||||
| **F. Index registration** | `docs/MASTER_INDEX.md` (quick links + MetaMask + DefiLlama rows), `AGENTS.md`, `.cursor/rules/project-doc-and-deployment-refs.mdc`, `docs/00-meta/NEXT_STEPS_INDEX.md`, `docs/00-meta/TODOS_CONSOLIDATED.md`, `docs/00-meta/REPOSITORIES_AND_PRS_CHAIN138.md` — this file is the **single replay** entry point. |
|
||||
|
||||
---
|
||||
|
||||
## 2. Part A — MetaMask Money / mUSD ↔ GRU narrative (step-by-step)
|
||||
|
||||
### 2.1 Goal
|
||||
|
||||
Provide **internal DBIS / provider-facing narrative alignment** between MetaMask **Money** / **mUSD** concepts and existing GRU hub and `cW*` transport language, **without** claiming MetaMask has officially bound product strings to specific contracts.
|
||||
|
||||
### 2.2 Where it lives
|
||||
|
||||
**Primary file:** `docs/04-configuration/metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md`
|
||||
|
||||
**Subsection heading:** `### MetaMask Money rail and mUSD — internal GRU alignment (narrative)`
|
||||
|
||||
**Content checklist (when editing or extending):**
|
||||
|
||||
1. **Disclaimer block** at top of subsection: internal narrative only; reconcile when MetaMask publishes CAIP-19, token lists, or controller mappings.
|
||||
2. **Three-column table:** External/wallet concept | GRU/DBIS interpretation | On-chain/transport anchor.
|
||||
3. **Hub `cUSDC`:** address `0xf22258f57794CC8E06237084b353Ab30fFfa640b` (6 decimals) — align with canonical token rules in workspace (Explorer cross-check, chain138 token rules).
|
||||
4. **Hub `cUSDC_V2`:** address `0x219522c60e83dEe01FC5b0329d6fA8fD84b9D13d` — reference `smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts` for `familySymbol`, `preferredForX402`, and cutover notes.
|
||||
5. **Mainnet `cWUSDC`:** `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` — explicit separation from Circle-issued USDC; same submission discipline as rest of matrix.
|
||||
6. **Operational rule** paragraph: link **`docs/04-configuration/GRU_RISK_AND_DISCLOSURE_LANGUAGE.md`** for disclaimers.
|
||||
|
||||
### 2.3 Cross-references added from the matrix (discoverability)
|
||||
|
||||
Under the same subsection, maintain a **Cross-references (discoverability)** bullet list pointing to:
|
||||
|
||||
| Target | Path |
|
||||
|--------|------|
|
||||
| EIP747 / contract metadata packet | `docs/04-configuration/metamask/METAMASK_EIP747_CONTRACT_METADATA_REFERENCE_PACKET.md` |
|
||||
| GRU provider positioning | `docs/04-configuration/GRU_PROVIDER_POSITIONING_PACKET.md` |
|
||||
| cWUSDC provider packet | `docs/04-configuration/CWUSDC_PROVIDER_SUBMISSION_PACKET.md` |
|
||||
| Explorer token cross-check | `docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md` |
|
||||
| Contract addresses reference | `docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md` |
|
||||
| Address matrix and status | `docs/11-references/ADDRESS_MATRIX_AND_STATUS.md` |
|
||||
| DefiLlama `dfio_meta_main` TVL note | `docs/11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md` |
|
||||
|
||||
**Maintenance rule:** When you add a new consumer doc for Money/mUSD, add **one reciprocal link** either here or in the matrix cross-ref list so navigation stays symmetric.
|
||||
|
||||
### 2.4 Reciprocal edits (other files)
|
||||
|
||||
Perform these when introducing the matrix subsection (or keep them in sync on edits):
|
||||
|
||||
1. **`docs/04-configuration/metamask/METAMASK_EIP747_CONTRACT_METADATA_REFERENCE_PACKET.md`**
|
||||
- Add **`## Related repo documents`** (after “Sources ingested”) with bullets to: the provider matrix (call out Money/mUSD subsection), GRU packet, CWUSDC packet.
|
||||
|
||||
2. **`docs/04-configuration/GRU_PROVIDER_POSITIONING_PACKET.md`**
|
||||
- In **Canonical References**, extend the matrix bullet to state it **includes MetaMask Money / mUSD ↔ GRU hub and `cW*` transport** (subsection title in prose).
|
||||
|
||||
3. **`docs/04-configuration/CWUSDC_PROVIDER_SUBMISSION_PACKET.md`**
|
||||
- In **Evidence Links**, extend the provider matrix row to mention Money/mUSD ↔ hub `cUSDC` / `cUSDC_V2` and Mainnet `cWUSDC`.
|
||||
|
||||
4. **`docs/MASTER_INDEX.md`**
|
||||
- **MetaMask / wallet price-provider submissions** row: ensure it mentions **MetaMask Money / mUSD** narrative in the matrix.
|
||||
|
||||
---
|
||||
|
||||
## 3. Part B — DefiLlama DODO TVL and `dfio_meta_main` (step-by-step)
|
||||
|
||||
### 3.1 Symptom to recognize
|
||||
|
||||
A **per-chain** DODO (or protocol) TVL table where:
|
||||
|
||||
- Major chains (e.g. `bsc`, `ethereum`, `avax`, `arbitrum`, …) show non-zero USD.
|
||||
- **`dfio_meta_main`** shows **`0.00`** (DefiLlama SDK key for **Chain 138**).
|
||||
- **`total`** is the sum of attributed chains and **does not** reflect meta-main liquidity you know exists on-chain.
|
||||
|
||||
**Interpretation:** Usually **adapter / pricing / chain-registration** gap for Chain 138 in that protocol’s DefiLlama adapter — **not** proof of zero DODO TVL on 138.
|
||||
|
||||
### 3.2 Reference note (detailed diagnosis)
|
||||
|
||||
**Authoritative short doc:** `docs/11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md`
|
||||
|
||||
That file covers:
|
||||
|
||||
- Symptom and **CI summary abbreviation** caveat (from upstream PR body).
|
||||
- Root cause in terms of **`dfio_meta_main`** integration: `chains.json`, **`fixBalancesTokens.dfio_meta_main`** in `tokenMapping.js`, and DODO **`projects/dodo/index.js`** factory / `fromBlock` for 138.
|
||||
- **Open upstream PR** link and “resolved locally vs resolved on defillama.com” table.
|
||||
- Local verification command.
|
||||
|
||||
**Do not duplicate** long methodology here; link and maintain **one** technical note (`DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md`).
|
||||
|
||||
### 3.3 Ecosystem map and checklist (repo steps)
|
||||
|
||||
1. Read **`docs/04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md`** for fork → upstream flow, methodology framing, and **open PR #19198** callout.
|
||||
2. Use **`docs/04-configuration/defillama/DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md`** for **defillama-server** and optional metrics **after** adapters PR merges (checklist opening paragraph ties to **#19198**).
|
||||
|
||||
### 3.4 DefiLlama-Adapters fork (engineering replay)
|
||||
|
||||
**Prerequisites:** Clone or use existing clone; GitHub CLI optional but recommended.
|
||||
|
||||
1. **Clone fork and add upstream**
|
||||
|
||||
```bash
|
||||
git clone https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters.git
|
||||
cd DefiLlama-Adapters
|
||||
git remote add upstream https://github.com/DefiLlama/DefiLlama-Adapters.git
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
2. **Work on feature branch** (example name used in this effort)
|
||||
|
||||
```bash
|
||||
git checkout feat/chain-138-dfio-meta-main-dodo
|
||||
# or: git checkout -b feat/chain-138-dfio-meta-main-dodo origin/main
|
||||
```
|
||||
|
||||
3. **Implement (per PR #19198 scope — verify against current PR diff)**
|
||||
|
||||
- `projects/helper/chains.json` — register **`dfio_meta_main`**.
|
||||
- `projects/helper/tokenMapping.js` — **`fixBalancesTokens.dfio_meta_main`** for canonical hub **cUSDT** / **cUSDC** → CoinGecko-style IDs used by Llama pricing (`tether`, `usd-coin`), with correct decimals.
|
||||
- `projects/dodo/index.js` — DODO V2 **DVM** on **`dfio_meta_main`**: factory **`0xc93870594C7f83A0aE076c2e30b494Efc526b68E`**, **`fromBlock` `3510162`** (values also in `config/defillama-chain138-touchpoints.json` under `implemented.tvlAdapter`).
|
||||
|
||||
**Note:** Final balance helper (`sumTokens` vs `sumTokens2`, etc.) is whatever **upstream maintainers merge**. The operator goal is **end-to-end `dfio_meta_main` in the DODO path** plus **priced hub stables**.
|
||||
|
||||
4. **Local test**
|
||||
|
||||
```bash
|
||||
cd DefiLlama-Adapters
|
||||
npm install # if not already
|
||||
node test.js projects/dodo/index.js
|
||||
```
|
||||
|
||||
**Success signal:** Output includes a block like `--- dfio_meta_main ---` with a **non-zero** USD line (magnitude varies with on-chain balances and pricing).
|
||||
|
||||
5. **Optional: grep for dfio line only**
|
||||
|
||||
```bash
|
||||
node test.js projects/dodo/index.js 2>&1 | grep -E 'dfio_meta_main|^total' | tail -5
|
||||
```
|
||||
|
||||
6. **Open / track upstream PR**
|
||||
|
||||
- Open PR from fork **`Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters`** → **`DefiLlama/DefiLlama-Adapters`**.
|
||||
- Canonical tracking PR used in this repo: **[#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198)**.
|
||||
|
||||
7. **Verify PR state (repeat whenever user asks “is it still open?”)**
|
||||
|
||||
```bash
|
||||
gh pr view 19198 --repo DefiLlama/DefiLlama-Adapters --json state,title,url
|
||||
```
|
||||
|
||||
When **`state`** becomes **`MERGED`** (or PR superseded):
|
||||
|
||||
- Update **`docs/11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md`** (remove stale “verified OPEN on …” or rewrite to merged date).
|
||||
- Update **`docs/04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md`** same.
|
||||
- Update **`config/defillama-chain138-touchpoints.json`**: set **`upstreamPullRequestState`** to `merged` (or remove if PR number changes), refresh **`upstreamPullRequestStateAsOf`**.
|
||||
|
||||
### 3.5 Provider matrix DeFiLlama row
|
||||
|
||||
In **`docs/04-configuration/metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md`**, external table **row 16 (DeFiLlama)** should:
|
||||
|
||||
- Name **open upstream PR #19198** with full URL.
|
||||
- Link fork **`Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters`**.
|
||||
- Link **`DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md`** for `0.00` breakdown questions.
|
||||
- Link **`CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md`** and **`config/defillama-chain138-touchpoints.json`**.
|
||||
|
||||
---
|
||||
|
||||
## 4. Part C — Machine-readable touchpoints (`config/defillama-chain138-touchpoints.json`)
|
||||
|
||||
### 4.1 Fields introduced or standardized
|
||||
|
||||
Under **`upstream`**:
|
||||
|
||||
| Key | Purpose |
|
||||
|-----|---------|
|
||||
| `upstreamPullRequest` | Canonical HTTPS URL for the DefiLlama-Adapters PR (currently **#19198**). |
|
||||
| `upstreamPullRequestState` | Short lifecycle label: e.g. **`open`**, later **`merged`** — **must be updated** when GitHub state changes. |
|
||||
| `upstreamPullRequestStateAsOf` | ISO date (**YYYY-MM-DD**) of last manual or scripted verification — avoids silent staleness. |
|
||||
| `upstreamPullRequestLastGhCheckUtc` | Optional UTC timestamp of last `gh pr view` (or equivalent) used to confirm PR state. |
|
||||
|
||||
Existing fields **`defillamaSdkChainKey`**: **`dfio_meta_main`**, **`implemented.tvlAdapter`** (protocol `dodo`, paths, factory, `fromBlock`, stablecoin mappings) remain the **single JSON source** for scripts and humans.
|
||||
|
||||
### 4.2 Doc pointers (`docs` object in JSON)
|
||||
|
||||
Under **`docs`** in the same JSON file:
|
||||
|
||||
| Key | Path |
|
||||
|-----|------|
|
||||
| `ecosystemMap` | `docs/04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md` |
|
||||
| `submissionChecklist` | `docs/04-configuration/defillama/DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md` |
|
||||
| `dodoDfioMetaMainTvlNote` | `docs/11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md` |
|
||||
| `masterReference` | `docs/00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md` (this replay document) |
|
||||
| `repositoriesAndPrs` | `docs/00-meta/REPOSITORIES_AND_PRS_CHAIN138.md` (external repos + PR status table) |
|
||||
|
||||
### 4.3 Validation
|
||||
|
||||
After any JSON edit:
|
||||
|
||||
```bash
|
||||
python3 -m json.tool config/defillama-chain138-touchpoints.json > /dev/null
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Part D — MASTER_INDEX and AGENTS registration
|
||||
|
||||
### 5.1 `docs/MASTER_INDEX.md`
|
||||
|
||||
- **Quick links** table: includes a row for this **master reference** (alongside other 00-meta master docs).
|
||||
- **MetaMask / wallet price-provider submissions** row: bundles matrix, **this master reference**, GRU/CWUSDC/EIP747 packets.
|
||||
- **DefiLlama metrics ↔ Chain 138** row: references ecosystem map, TVL breakdown doc, **this master reference**, touchpoints JSON, and **#19198**.
|
||||
|
||||
When adding new entry points, prefer linking **this file** once rather than duplicating long PR URLs in many tables.
|
||||
|
||||
### 5.2 `AGENTS.md`
|
||||
|
||||
**Quick pointers** includes **MetaMask + GRU + DefiLlama Chain 138 master replay** → path to **this file**, so IDE agents land here without searching chat history.
|
||||
|
||||
---
|
||||
|
||||
## 6. Part E — Canonical external links (bookmark set)
|
||||
|
||||
| Resource | URL |
|
||||
|----------|-----|
|
||||
| Upstream adapters PR (tracking) | https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198 |
|
||||
| Upstream adapters repo | https://github.com/DefiLlama/DefiLlama-Adapters |
|
||||
| Org fork | https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters |
|
||||
| DefiLlama docs (methodology) | https://docs.llama.fi/ |
|
||||
|
||||
---
|
||||
|
||||
## 7. Part F — Verification checklist (operator sign-off)
|
||||
|
||||
- [ ] **`gh pr view 19198`** shows expected **`state`**; if merged, update all **2026-05-10 “OPEN”** notes and JSON **`upstreamPullRequestState`**.
|
||||
- [ ] **`node test.js projects/dodo/index.js`** on fork branch: **`dfio_meta_main`** line present and non-zero (unless on-chain state truly empty).
|
||||
- [ ] **`defillama.com`** DODO page: after merge + indexer lag, **`dfio_meta_main`** reflects non-zero (spot-check; not instant on merge day).
|
||||
- [ ] Matrix **Money/mUSD** subsection still matches **`canonical-tokens.ts`** and Explorer cross-check for **cUSDC** / **cUSDC_V2** addresses.
|
||||
- [ ] Cross-reference bullets in matrix still resolve (no moved files without redirects).
|
||||
|
||||
---
|
||||
|
||||
## 8. Related documents (read order for new maintainers)
|
||||
|
||||
1. This file (**replay + maintenance**), especially **Part G** (remaining tasks).
|
||||
2. `docs/04-configuration/metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md` — operational provider tracker + Money/mUSD narrative.
|
||||
3. `docs/11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md` — TVL **`0.00`** symptom and PR linkage.
|
||||
4. `docs/04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md` — DefiLlama ↔ Chain 138 map.
|
||||
5. `docs/00-meta/REPOSITORIES_AND_PRS_CHAIN138.md` — external repos and PR table (includes DefiLlama **#19198**).
|
||||
6. `config/defillama-chain138-touchpoints.json` — machine-readable constants and PR URL.
|
||||
7. `docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md` — canonical token list alignment (sections 5 and 8).
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## 9. Part G — Remaining tasks (rolling checklist)
|
||||
|
||||
Use this section as the **authoritative “what is still left”** list for the MetaMask Money/mUSD narrative, provider cross-links, and DefiLlama DODO **`dfio_meta_main`** workstream. Update row **Status** when items close.
|
||||
|
||||
| # | Task | Owner | Status | How to verify / close |
|
||||
|---|------|--------|--------|------------------------|
|
||||
| G1 | **Merge [DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198)** (or equivalent upstream commit for DODO + `dfio_meta_main`) | DefiLlama maintainers + fork author | **OPEN** (2026-05-10) | `gh pr view 19198 --repo DefiLlama/DefiLlama-Adapters --json state` → `MERGED` |
|
||||
| G2 | **Refresh repo docs after merge:** remove or rewrite “verified OPEN on 2026-05-10” lines | Doc maintainer | Pending G1 | `CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md`, `DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md`, this file §1 / §7 |
|
||||
| G3 | **Update `config/defillama-chain138-touchpoints.json`:** `upstreamPullRequestState` → `merged` (or new PR URL); `upstreamPullRequestStateAsOf` | Doc maintainer | Pending G1 | JSON valid; fields match GitHub |
|
||||
| G4 | **Spot-check `defillama.com` DODO** — per-chain breakdown includes priced **`dfio_meta_main`** (allow indexer lag) | Operator | Pending G1 | Public UI vs local `node test.js projects/dodo/index.js` |
|
||||
| G5 | **Optional:** `defillama-server` companion PR (chain label, DODO `chains[]`, listing copy) | Operator | Optional | `DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md` |
|
||||
| G6 | **Optional:** `dimension-adapters` fees/dex for DODO on `dfio_meta_main` | Operator | Blocked on DODO GraphQL | `CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md` blockedExternal |
|
||||
| G7 | **Reconcile Money/mUSD table** with MetaMask official CAIP-19 / token-list / controller docs when published | Product + doc | Pending MetaMask | Update matrix subsection + disclaimers |
|
||||
| G8 | **Keep `canonical-tokens.ts` ↔ matrix ↔ Explorer cross-check** in sync whenever hub or v2 face changes | Dev + doc | Ongoing | `EXPLORER_TOKEN_LIST_CROSSCHECK.md` §5 / §8 |
|
||||
| G9 | **Continue standard ladders** (unrelated to this PR but repo hygiene) | Operator | Ongoing | `run-completable-tasks-from-anywhere.sh`; `run-all-operator-tasks-from-lan.sh` (see `OPERATOR_READY_CHECKLIST.md`) |
|
||||
|
||||
### 9.1 Last completed ladder (repo hygiene)
|
||||
|
||||
| Step | Command | Result (2026-05-10 ~20:00 UTC) |
|
||||
|------|---------|--------------------------------|
|
||||
| Completable (no LAN) | `./scripts/run-completable-tasks-from-anywhere.sh --json-out reports/status/run-completable-tasks-latest.json` | Config OK, **61/61** on-chain, `run-all-validation.sh --skip-genesis` OK, non-EVM advisory OK |
|
||||
| Operator (LAN) | `./scripts/run-all-operator-tasks-from-lan.sh --skip-backup` | NPMplus **40** proxy hosts updated (**0** failed); Blockscout verification submissions OK; backup skipped |
|
||||
|
||||
---
|
||||
|
||||
**Document ID:** `00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md`
|
||||
**Role:** single **master reference** for reproducing and maintaining the workstream above; supersede scattered chat-only instructions by updating **this file** when the process changes.
|
||||
@@ -107,7 +107,7 @@
|
||||
| Question | Answer |
|
||||
|----------|--------|
|
||||
| **What is it?** | That address holds either Multicall or Oracle Aggregator; docs mention both. Need a single source of truth. |
|
||||
| **Prerequisites** | Access to explorer (e.g. https://explorer.d-bis.org/address/0x99b3511a2d315a497c8112c1fdd8d508d4b1e506). |
|
||||
| **Prerequisites** | Access to explorer (e.g. https://explorer.d-bis.org/addresses/0x99b3511a2d315a497c8112c1fdd8d508d4b1e506). |
|
||||
| **Who** | Operator or dev. |
|
||||
| **Steps to complete** | 1. Open the explorer link; check contract name/source. 2. Document in [CONTRACT_ADDRESSES_REFERENCE](../11-references/CONTRACT_ADDRESSES_REFERENCE.md) (and CONTRACT_INVENTORY if needed): “At 0x99b35... the contract is [Multicall | Oracle Aggregator].” Remove or qualify the other. |
|
||||
| **Where to update when done** | CONTRACT_ADDRESSES_REFERENCE § Pre-Deployed / Newly Deployed; ADDRESS_MATRIX_AND_STATUS; [REMAINING](REMAINING_COMPONENTS_TASKS_AND_RECOMMENDATIONS.md) task 19. |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Repositories and Pull Requests — Chain 138 (Forms Submitted, Awaiting Feedback)
|
||||
|
||||
**Last Updated:** 2026-02-28
|
||||
**Last Updated:** 2026-05-10
|
||||
**Purpose:** Single reference for all repositories you can add, connect, or submit PRs to for Chain 138 support — including wallets, explorers, on-ramps/off-ramps. **Forms have been submitted where applicable; we are awaiting feedback.** Use this doc to open or connect PRs when partners respond or when you are ready to contribute.
|
||||
|
||||
---
|
||||
@@ -13,6 +13,7 @@
|
||||
| **Trust Wallet** | PR to wallet-core (materials ready) | Can open PR anytime; [ADD_CHAIN138_TO_TRUST_WALLET](../04-configuration/ADD_CHAIN138_TO_TRUST_WALLET.md) |
|
||||
| **Consensys / MetaMask** | Outreach (contact form, business@consensys.io) | Awaiting response; no public “add chain” PR repo for Swaps/Bridge |
|
||||
| **CoinGecko / CMC** | Submission via platform forms (chain/token listing) | Manual submit when ready; [CMC_COINGECKO_SUBMISSION_RUNBOOK](../04-configuration/coingecko/CMC_COINGECKO_SUBMISSION_RUNBOOK.md) |
|
||||
| **DefiLlama — DODO TVL (`dfio_meta_main`)** | Open upstream PR from org fork | **OPEN:** [DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) — fork [Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters](https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters); replay [METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md](METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md); symptom note [../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md](../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md) |
|
||||
|
||||
---
|
||||
|
||||
@@ -91,6 +92,23 @@ Chain 138 may already be listed (see chainlist.org/chain/138). If you need to ad
|
||||
|
||||
**Master doc:** [PRICE_FEED_CHAIN138_METAMASK_AND_WALLETS.md](../04-configuration/PRICE_FEED_CHAIN138_METAMASK_AND_WALLETS.md) — single reference for adding Chain 138 USD prices to MetaMask and wallets.
|
||||
|
||||
**Related (provider matrix + Money/mUSD narrative + DefiLlama TVL replay):** [METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md](METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md) — cross-links [METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](../04-configuration/metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md), EIP747 / GRU / CWUSDC packets, and DefiLlama DODO **`dfio_meta_main`** upstream **#19198**.
|
||||
|
||||
---
|
||||
|
||||
## 5a. DefiLlama — TVL adapters (DODO on Chain 138)
|
||||
|
||||
| Item | Detail |
|
||||
|------|--------|
|
||||
| **Upstream PR** | [DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) — *Add dfio_meta_main (chain 138) to DODO adapter + token mappings* |
|
||||
| **Status** | **OPEN** (verify on GitHub before acting; update this doc when merged) |
|
||||
| **Fork** | [Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters](https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters) |
|
||||
| **Ecosystem map** | [../04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md](../04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md) |
|
||||
| **Touchpoints JSON** | [`config/defillama-chain138-touchpoints.json`](../../config/defillama-chain138-touchpoints.json) |
|
||||
| **Operator replay + remaining tasks** | [METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md](METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md) **§3, §9 (Part G)** |
|
||||
|
||||
**Local verify (fork clone):** `cd DefiLlama-Adapters && node test.js projects/dodo/index.js` — expect `--- dfio_meta_main ---` with non-zero TVL when adapter + pricing path is complete.
|
||||
|
||||
---
|
||||
|
||||
## 6. CoinGecko / CoinMarketCap (submission, not PR)
|
||||
@@ -136,12 +154,14 @@ Most on-ramp/off-ramp providers do not accept public PRs to “add a chain”; t
|
||||
| **Consensys** | Use [CONSENSYS_OUTREACH_PACKAGE](../../metamask-integration/docs/CONSENSYS_OUTREACH_PACKAGE.md); await response |
|
||||
| **Price Feed (MetaMask/wallets)** | See [PRICE_FEED_CHAIN138_METAMASK_AND_WALLETS.md](../04-configuration/PRICE_FEED_CHAIN138_METAMASK_AND_WALLETS.md); CoinGecko, CMC, Consensys |
|
||||
| **CoinGecko/CMC** | Export from report API; submit via platform forms per runbook |
|
||||
| **DefiLlama (DODO TVL)** | Track [DefiLlama#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198); after merge update `config/defillama-chain138-touchpoints.json` and docs per [METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md](METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md) |
|
||||
| **On-ramps/off-ramps** | Contact each provider (MoonPay, Ramp, Transak, etc.) to request Chain 138; no public PR repos |
|
||||
|
||||
---
|
||||
|
||||
## See also
|
||||
|
||||
- [METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md](METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md) — MetaMask Money/mUSD ↔ GRU + DefiLlama DODO **`dfio_meta_main`** master replay
|
||||
- [ADD_CHAIN138_TO_LEDGER_LIVE.md](../04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md)
|
||||
- [ADD_CHAIN138_TO_TRUST_WALLET.md](../04-configuration/ADD_CHAIN138_TO_TRUST_WALLET.md)
|
||||
- [WHATS_LEFT_OPERATOR_AND_EXTERNAL.md](WHATS_LEFT_OPERATOR_AND_EXTERNAL.md)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Required Fixes, Gaps, and Additional Deployments — Master List
|
||||
|
||||
> Historical note (2026-03-26): this master list contains older PMM verification snapshots. The current canonical Chain 138 PMM stack is `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`.
|
||||
> Historical note (2026-05-10): the **live, traded** Chain 138 PMM stack is `DODOPMMIntegration=0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895` and `DODOPMMProvider=0x3f729632E9553EBacCdE2e9b4c8F2B285b014F2e`. A parallel deployment (`0x5BDc62f1…` / `0x5CAe6Ce1…`) has seeded but un-traded pools — do not treat it as canonical. Source: [ADDRESS_MATRIX_AND_STATUS.md](../11-references/ADDRESS_MATRIX_AND_STATUS.md), [EXPLORER_TOKEN_LIST_CROSSCHECK.md](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md).
|
||||
|
||||
**Last Updated:** 2026-03-04
|
||||
**Purpose:** Single consolidated list of all required fixes, gaps, and additional deployments. Sources: REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS, REMAINING_SUMMARY, TOKEN_CONTRACT_DEPLOYMENTS_REMAINING, PRE_DEPLOYMENT_CHECKLIST, RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY, DETAILED_GAPS_AND_ISSUES_LIST, GAPS_STATUS, WHATS_LEFT_OPERATOR_AND_EXTERNAL, and token-aggregation build.
|
||||
|
||||
@@ -70,7 +70,7 @@ Requires: SSH to Proxmox host (e.g. `root@192.168.11.10` or r630-01/r630-02). Se
|
||||
| DBIS Core containers (6) | `./dbis_core/scripts/deployment/create-dbis-core-containers.sh` | Creates 10100, 10101, 10120, 10150, 10151, 10130 on PROXMOX_HOST. |
|
||||
| Create missing RPC containers | `./scripts/create-missing-containers-2506-2508.sh` (if VMIDs 2506–2508 needed) | Per VMID allocation. |
|
||||
| Chain 138 containers | `./scripts/create-chain138-containers.sh` (if defined) | Besu/RPC/explorer as per docs. |
|
||||
| Spread VMs across nodes | Prefer r630-01 / r630-02 for new VMs to balance load; ml110 already has 34 containers | See PROXMOX_COMPLETE_RECOMMENDATIONS. |
|
||||
| Spread VMs across nodes | Prefer balancing across **r630-01** … **r630-04**; **ml110** currently has **0** guests but stays low-spec — see [PROXMOX_CLUSTER_ARCHITECTURE.md](../02-architecture/PROXMOX_CLUSTER_ARCHITECTURE.md) | See PROXMOX_COMPLETE_RECOMMENDATIONS. |
|
||||
|
||||
---
|
||||
|
||||
@@ -111,7 +111,7 @@ From repo root, with `smom-dbis-138/.env` and RPC reachable:
|
||||
|------|--------|--------|
|
||||
| Reconcile .env | `./scripts/verify/reconcile-env-canonical.sh --print` | Emit canonical lines; merge into smom-dbis-138/.env. |
|
||||
| Update CONTRACT_ADDRESSES_REFERENCE and master JSON | Add any new addresses to `config/smart-contracts-master.json` and [CONTRACT_ADDRESSES_REFERENCE](../11-references/CONTRACT_ADDRESSES_REFERENCE.md) | Keep CONTRACT_INVENTORY in sync. |
|
||||
| Verify on explorer | Open https://explorer.d-bis.org/address/<addr> for new contracts | Confirm bytecode and verification. |
|
||||
| Verify on explorer | Open https://explorer.d-bis.org/addresses/<addr> for new contracts | Confirm bytecode and verification. |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,14 +1,23 @@
|
||||
# Proxmox Cluster Architecture
|
||||
|
||||
**Last Updated:** 2025-01-20
|
||||
**Document Version:** 1.0
|
||||
**Status:** Active Documentation
|
||||
**Last Updated:** 2026-05-09
|
||||
**Document Version:** 1.1
|
||||
**Status:** Active Documentation
|
||||
|
||||
**Live reconcile:** `pvesh get /nodes`, `/cluster/resources`, `pvecm status`, `pvesm status` via SSH to cluster members (LAN). Physical DIMM totals may exceed **cluster-reported `maxmem`** on some nodes; runtime figures below follow the API.
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This document describes the Proxmox cluster architecture, including node configuration, storage setup, network bridges, and VM/container distribution.
|
||||
This document summarizes the **five-node** Proxmox VE cluster (**name `h`**), storage footprint, and **LXC/QEMU placement**. Authoritative VMID/IP/FQDN detail remains in [`../04-configuration/ALL_VMIDS_ENDPOINTS.md`](../04-configuration/ALL_VMIDS_ENDPOINTS.md).
|
||||
|
||||
| Item | Live value (2026-05-09) |
|
||||
|------|-------------------------|
|
||||
| **Proxmox VE** | `pve-manager/9.1.7` (kernel **6.17.13-2-pve** on all nodes) |
|
||||
| **Quorum** | **Quorate** — 5 votes, expected 5 |
|
||||
| **Guests (running)** | **136** LXC + QEMU cluster-wide |
|
||||
| **Guests on ml110** | **0** (workloads run on **r630-01** … **r630-04**) |
|
||||
|
||||
---
|
||||
|
||||
@@ -17,82 +26,70 @@ This document describes the Proxmox cluster architecture, including node configu
|
||||
```mermaid
|
||||
graph TB
|
||||
Cluster[Proxmox Cluster<br/>Name: h]
|
||||
|
||||
ML110[ML110 Management Node<br/>192.168.11.10<br/>6 cores, 125GB RAM]
|
||||
R6301[R630-01<br/>192.168.11.11<br/>32 cores, 503GB RAM]
|
||||
R6302[R630-02<br/>192.168.11.12<br/>32 cores, 503GB RAM]
|
||||
R6303[R630-03<br/>192.168.11.13<br/>32 cores, 512GB RAM]
|
||||
R6304[R630-04<br/>192.168.11.14<br/>32 cores, 512GB RAM]
|
||||
|
||||
|
||||
ML110[ML110<br/>192.168.11.10<br/>6 cores · ~63 GiB reported RAM<br/>0 guests]
|
||||
R6301[r630-01<br/>192.168.11.11<br/>32 cores · ~126 GiB RAM<br/>57 guests]
|
||||
R6302[r630-02<br/>192.168.11.12<br/>56 cores · ~126 GiB RAM<br/>41 guests]
|
||||
R6303[r630-03<br/>192.168.11.13<br/>32 cores · ~126 GiB RAM<br/>19 guests]
|
||||
R6304[r630-04<br/>192.168.11.14<br/>32 cores · ~126 GiB RAM<br/>19 guests]
|
||||
|
||||
Cluster --> ML110
|
||||
Cluster --> R6301
|
||||
Cluster --> R6302
|
||||
Cluster --> R6303
|
||||
Cluster --> R6304
|
||||
|
||||
ML110 --> Storage1[local: 94GB<br/>local-lvm: 813GB]
|
||||
R6301 --> Storage2[local: 536GB<br/>local-lvm: Available]
|
||||
R6302 --> Storage3[local: Available<br/>local-lvm: Available]
|
||||
R6303 --> Storage4[Storage: Available]
|
||||
R6304 --> Storage5[Storage: Available]
|
||||
|
||||
ML110 --> Bridge1[vmbr0<br/>VLAN-aware]
|
||||
R6301 --> Bridge2[vmbr0<br/>VLAN-aware]
|
||||
R6302 --> Bridge3[vmbr0<br/>VLAN-aware]
|
||||
R6303 --> Bridge4[vmbr0<br/>VLAN-aware]
|
||||
R6304 --> Bridge5[vmbr0<br/>VLAN-aware]
|
||||
|
||||
ML110 --> S0[Thin pools ~1.7TB data — nearly empty]
|
||||
R6301 --> S1[local + thin1 + data — high utilization]
|
||||
R6302 --> S2[thin1-r630-02 … thin6 — active]
|
||||
R6303 --> S3[data + thin*-r630-03 pools]
|
||||
R6304 --> S4[data + mev-local-lvm]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cluster Nodes
|
||||
|
||||
### Node Summary
|
||||
### Node summary
|
||||
|
||||
| Hostname | IP Address | CPU | RAM | Storage | VMs/Containers | Status |
|
||||
|----------|------------|-----|-----|---------|----------------|--------|
|
||||
| ml110 | 192.168.11.10 | 6 cores @ 1.60GHz | 125GB | local (94GB), local-lvm (813GB) | 34 | ✅ Active |
|
||||
| r630-01 | 192.168.11.11 | 32 cores @ 2.40GHz | 503GB | local (536GB), local-lvm (available) | 0 | ✅ Active |
|
||||
| r630-02 | 192.168.11.12 | 32 cores @ 2.40GHz | 503GB | local (available), local-lvm (available) | 0 | ✅ Active |
|
||||
| r630-03 | 192.168.11.13 | 32 cores | 512GB | Available | 0 | ✅ Active |
|
||||
| r630-04 | 192.168.11.14 | 32 cores | 512GB | Available | 0 | ✅ Active |
|
||||
| Hostname | IP Address | CPU | RAM (API) | Cluster disk metric¹ | LXC/QEMU | Status |
|
||||
|----------|------------|-----|-----------|----------------------|----------|--------|
|
||||
| ml110 | 192.168.11.10 | 6 @ 1.60GHz | ~63 GiB max | ~94 GiB | **0** | online |
|
||||
| r630-01 | 192.168.11.11 | 32 @ 2.40GHz | ~126 GiB max | ~353 GiB | **57** | online |
|
||||
| r630-02 | 192.168.11.12 | 56 @ 2.00GHz | ~126 GiB max | ~196 GiB | **41** | online |
|
||||
| r630-03 | 192.168.11.13 | 32 cores | ~126 GiB max | ~94 GiB | **19** | online |
|
||||
| r630-04 | 192.168.11.14 | 32 cores | ~126 GiB max | ~78 GiB | **19** | online |
|
||||
|
||||
¹ **`maxdisk`** from `/cluster/resources` node entries — useful for relative sizing; per-pool detail is on each node (`pvesm status`).
|
||||
|
||||
### Memory (cluster API)
|
||||
|
||||
| Node | Used (approx.) | Total (reported) | Usage % |
|
||||
|------|----------------|------------------|---------|
|
||||
| ml110 | 2 GiB | 62 GiB | ~3.5% |
|
||||
| r630-01 | 83 GiB | 125 GiB | ~66% |
|
||||
| r630-02 | 77 GiB | 125 GiB | ~62% |
|
||||
| r630-03 | 77 GiB | 125 GiB | ~62% |
|
||||
| r630-04 | 21 GiB | 125 GiB | ~17% |
|
||||
|
||||
---
|
||||
|
||||
## Storage Configuration
|
||||
|
||||
### Storage Types
|
||||
### Types
|
||||
|
||||
**local (Directory Storage):**
|
||||
- Type: Directory-based storage
|
||||
- Used for: ISO images, container templates, backups
|
||||
- Location: `/var/lib/vz`
|
||||
- **`local`:** directory (`/var/lib/vz`) — ISOs, templates, backups
|
||||
- **`local-lvm` / `data` / `thin*`:** LVM-thin guest disks (node-specific names)
|
||||
|
||||
**local-lvm (LVM Thin Storage):**
|
||||
- Type: LVM thin provisioning
|
||||
- Used for: VM/container disk images
|
||||
- Benefits: Thin provisioning, snapshots, efficient space usage
|
||||
### Snapshot by host (`pvesm status`, 2026-05-09)
|
||||
|
||||
### Storage by Node
|
||||
- **ml110:** `data` / `local-lvm` thin pools ~1.7TB each — **~0.03%** used; **`local`** ~77 GiB free of ~94 GiB.
|
||||
- **r630-01:** **`thin1`** and **`data`**/**`local-lvm`** — **~60–77%** used on thin pools; **`local`** ~345 GiB free of ~532 GiB.
|
||||
- **r630-02:** **`thin1-r630-02`** … **`thin6`** — active; utilization **~4–58%** per pool (varies by pool); **`local`** ~190 GiB free.
|
||||
- **r630-03:** **`data`**/**`local-lvm`** ~31% used; **`thin1-r630-03`** … **`thin6-r630-03`** — several active (some **0%** used).
|
||||
- **r630-04:** **`data`**/**`local-lvm`** ~36% used; **`mev-local-lvm`** ~7% used.
|
||||
|
||||
**ml110:**
|
||||
- `local`: 94GB total, 7.4GB used (7.87%)
|
||||
- `local-lvm`: 813GB total, 214GB used (26.29%)
|
||||
- Status: ✅ Active and operational
|
||||
|
||||
**r630-01:**
|
||||
- `local`: 536GB total, 0% used
|
||||
- `local-lvm`: Available (needs activation)
|
||||
- Status: ⏳ Storage available, ready for use
|
||||
|
||||
**r630-02:**
|
||||
- `local`: Available
|
||||
- `local-lvm`: Available (needs activation)
|
||||
- Status: ⏳ Storage available, ready for use
|
||||
|
||||
**r630-03/r630-04:**
|
||||
- Storage: Available
|
||||
- Status: ⏳ Ready for configuration
|
||||
**Note:** Disabled pool stubs (e.g. foreign node names) may still appear in `pvesm` output; rely on **active** rows for capacity planning.
|
||||
|
||||
---
|
||||
|
||||
@@ -115,136 +112,52 @@ iface vmbr0 inet static
|
||||
bridge-vids 11 110 111 112 120 121 130 132 133 134 140 141 150 160 200 201 202 203
|
||||
```
|
||||
|
||||
**Bridge Features:**
|
||||
- **VLAN-aware:** Supports multiple VLANs on single bridge
|
||||
- **Native VLAN:** 11 (MGMT-LAN)
|
||||
- **Tagged VLANs:** All service VLANs (110-203)
|
||||
- **802.1Q Trunking:** Enabled for VLAN support
|
||||
**Bridge features:** VLAN-aware; native VLAN 11 (MGMT-LAN); tagged service VLANs per [`NETWORK_ARCHITECTURE.md`](NETWORK_ARCHITECTURE.md).
|
||||
|
||||
---
|
||||
|
||||
## VM/Container Distribution
|
||||
|
||||
### Current Distribution
|
||||
| Node | Running guests | Notes |
|
||||
|------|----------------|-------|
|
||||
| ml110 | **0** | Cluster member; no LXC/QEMU registered on this node in API |
|
||||
| r630-01 | **57** | Highest guest count |
|
||||
| r630-02 | **41** | Includes NPMplus, infra CTs per inventory docs |
|
||||
| r630-03 | **19** | Besu / RPC capacity |
|
||||
| r630-04 | **19** | Besu / Gov portals / additional workloads |
|
||||
|
||||
**ml110 (192.168.11.10):**
|
||||
- **Total:** 34 containers/VMs
|
||||
- **Services:** All current services running here
|
||||
- **Breakdown:**
|
||||
- Besu validators: 5 (VMIDs 1000-1004)
|
||||
- Besu sentries: 4 (VMIDs 1500-1503)
|
||||
- Besu RPC: 3+ (VMIDs 2500-2502+)
|
||||
- Blockscout: 1 (VMID 5000)
|
||||
- DBIS services: Multiple
|
||||
- Other services: Various
|
||||
|
||||
**r630-01, r630-02, r630-03, r630-04:**
|
||||
- **Total:** 0 containers/VMs
|
||||
- **Status:** Ready for VM migration/deployment
|
||||
For VMID → IP → node mapping, use [`../04-configuration/ALL_VMIDS_ENDPOINTS.md`](../04-configuration/ALL_VMIDS_ENDPOINTS.md) and `scripts/verify/check-cluster-besu-inventory.sh`.
|
||||
|
||||
---
|
||||
|
||||
## High Availability
|
||||
|
||||
### Current Setup
|
||||
|
||||
- **Cluster Name:** "h"
|
||||
- **HA Mode:** Active/Standby (manual)
|
||||
- **Quorum:** 3+ nodes required for quorum
|
||||
- **Storage:** Local storage (not shared)
|
||||
|
||||
### HA Considerations
|
||||
|
||||
**Current Limitations:**
|
||||
- No shared storage (each node has local storage)
|
||||
- Manual VM migration required
|
||||
- No automatic failover
|
||||
|
||||
**Future Enhancements:**
|
||||
- Consider shared storage (NFS, Ceph, etc.) for true HA
|
||||
- Implement automatic VM migration
|
||||
- Configure HA groups for critical services
|
||||
- **Cluster:** corosync **quorate** (5 nodes).
|
||||
- **Storage:** primarily **local / node-local thin pools** — plan migrations explicitly; no cluster-wide shared disk assumed here.
|
||||
- **HA groups:** configure in UI/API if automatic failover is required for specific VMIDs.
|
||||
|
||||
---
|
||||
|
||||
## Resource Allocation
|
||||
## Storage Recommendations (planning)
|
||||
|
||||
### CPU Resources
|
||||
|
||||
| Node | CPU Cores | CPU Usage | Available |
|
||||
|------|-----------|-----------|-----------|
|
||||
| ml110 | 6 @ 1.60GHz | High | Limited |
|
||||
| r630-01 | 32 @ 2.40GHz | Low | Excellent |
|
||||
| r630-02 | 32 @ 2.40GHz | Low | Excellent |
|
||||
| r630-03 | 32 cores | Low | Excellent |
|
||||
| r630-04 | 32 cores | Low | Excellent |
|
||||
|
||||
### Memory Resources
|
||||
|
||||
| Node | Total RAM | Used | Available | Usage % |
|
||||
|------|-----------|------|-----------|---------|
|
||||
| ml110 | 125GB | 94GB | 31GB | 75% ⚠️ |
|
||||
| r630-01 | 503GB | ~5GB | ~498GB | 1% ✅ |
|
||||
| r630-02 | 503GB | ~5GB | ~498GB | 1% ✅ |
|
||||
| r630-03 | 512GB | Low | High | Low ✅ |
|
||||
| r630-04 | 512GB | Low | High | Low ✅ |
|
||||
|
||||
---
|
||||
|
||||
## Storage Recommendations
|
||||
|
||||
### For R630 Nodes
|
||||
|
||||
**Boot Drives (2×600GB):**
|
||||
- **Recommended:** ZFS mirror or hardware RAID1
|
||||
- **Purpose:** Proxmox OS and boot files
|
||||
- **Benefits:** Redundancy, data integrity
|
||||
|
||||
**Data SSDs (6×250GB):**
|
||||
- **Option 1:** ZFS striped mirrors (3 pairs)
|
||||
- Capacity: ~750GB usable
|
||||
- Performance: High
|
||||
- Redundancy: Good
|
||||
|
||||
- **Option 2:** ZFS RAIDZ1 (5 drives + 1 parity)
|
||||
- Capacity: ~1.25TB usable
|
||||
- Performance: Good
|
||||
- Redundancy: Single drive failure tolerance
|
||||
|
||||
- **Option 3:** ZFS RAIDZ2 (4 drives + 2 parity)
|
||||
- Capacity: ~1TB usable
|
||||
- Performance: Good
|
||||
- Redundancy: Dual drive failure tolerance
|
||||
Boot vs data disk layout remains node-specific. For new pools, follow thin provisioning discipline and monitor **`thin`** pool **%** on **r630-01** and **r630-02** (historically stressed pools during explorer incidents).
|
||||
|
||||
---
|
||||
|
||||
## Network Recommendations
|
||||
|
||||
### VLAN Configuration
|
||||
|
||||
**All Proxmox hosts should:**
|
||||
- Use VLAN-aware bridge (vmbr0)
|
||||
- Support all 19 VLANs
|
||||
- Maintain native VLAN 11 for management
|
||||
- Enable 802.1Q trunking on physical interfaces
|
||||
|
||||
### Network Performance
|
||||
|
||||
- **Link Speed:** Ensure 1Gbps or higher for trunk ports
|
||||
- **Jumbo Frames:** Consider enabling if supported
|
||||
- **Bonding:** Consider link aggregation for redundancy
|
||||
- Trunk links at **1 Gbps+**; **`r630-02`** NICs support **10 Gbps** where the switch allows.
|
||||
- See **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** for VLAN inventory.
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** ⭐⭐⭐ - Network architecture with VLAN plan
|
||||
- **[PHYSICAL_HARDWARE_INVENTORY.md](PHYSICAL_HARDWARE_INVENTORY.md)** ⭐⭐⭐ - Physical hardware inventory
|
||||
- **[PROXMOX_COMPREHENSIVE_REVIEW.md](PROXMOX_COMPREHENSIVE_REVIEW.md)** ⭐⭐ - Comprehensive Proxmox review
|
||||
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** ⭐⭐⭐ - Deployment orchestration
|
||||
- **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** — VLAN plan
|
||||
- **[PROXMOX_HOSTS_COMPLETE_HARDWARE_CONFIG.md](PROXMOX_HOSTS_COMPLETE_HARDWARE_CONFIG.md)** — DIMMs, disks, NIC models (physical)
|
||||
- **[PROXMOX_COMPREHENSIVE_REVIEW.md](PROXMOX_COMPREHENSIVE_REVIEW.md)** — historical deep-dive (**partially superseded** by this file for placement counts)
|
||||
- **[../03-deployment/PROXMOX_VM_CREATION_RUNBOOK.md](../03-deployment/PROXMOX_VM_CREATION_RUNBOOK.md)** — where to create **new** CTs/VMs
|
||||
|
||||
---
|
||||
|
||||
**Last Updated:** 2025-01-20
|
||||
**Document Version:** 1.0
|
||||
**Review Cycle:** Quarterly
|
||||
**Review cycle:** Quarterly or after major migrations.
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Proxmox VE Comprehensive Configuration Review
|
||||
|
||||
**Last Updated:** 2025-01-20
|
||||
**Supersession:** Placement counts, storage enablement, and guest distribution in much of this document reflect **2025** cluster state. **Current** cluster topology (guests per node, PVE version, memory use) is maintained in **[PROXMOX_CLUSTER_ARCHITECTURE.md](PROXMOX_CLUSTER_ARCHITECTURE.md)** (reconcile **2026-05-09**). Retain this file for historical procedure (hostname migration, IP audit methodology).
|
||||
|
||||
**Last Updated:** 2026-05-09
|
||||
**Document Version:** 1.0
|
||||
**Status:** Active Documentation
|
||||
|
||||
@@ -14,10 +16,9 @@
|
||||
- [x] Proxmox services verified (all operational)
|
||||
- [x] Storage configuration reviewed
|
||||
|
||||
### ⚠️ Issues Identified
|
||||
- r630-01 and r630-02 have LVM thin storage **disabled**
|
||||
- All VMs/containers currently on ml110 only
|
||||
- Storage not optimized for performance on r630-01/r630-02
|
||||
### ⚠️ Issues Identified (historical snapshot — verify against live docs)
|
||||
|
||||
- Older notes cited **r630-01**/**02** LVM disabled and **all guests on ml110** — **obsolete**: guest placement has migrated; see [PROXMOX_CLUSTER_ARCHITECTURE.md](PROXMOX_CLUSTER_ARCHITECTURE.md).
|
||||
|
||||
---
|
||||
|
||||
@@ -43,15 +44,8 @@ ssh root@192.168.11.12 "hostname" # Returns: r630-02 ✅
|
||||
## IP Address Audit - COMPLETE ✅
|
||||
|
||||
### Results
|
||||
- **Total VMs/Containers:** 34 with static IPs
|
||||
- **IP Conflicts:** 0 ✅
|
||||
- **Invalid IPs:** 0 ✅
|
||||
- **DHCP IPs:** 2 (VMIDs 3500, 3501)
|
||||
|
||||
### All VMs Currently On
|
||||
- **ml110** (192.168.11.10): All 34 VMs/containers
|
||||
- **r630-01** (192.168.11.11): 0 VMs/containers
|
||||
- **r630-02** (192.168.11.12): 0 VMs/containers
|
||||
- **Total VMs/Containers (historical IP audit):** 34 with static IPs — **superseded**; live cluster **136** guests (not on ml110 only). See [PROXMOX_CLUSTER_ARCHITECTURE.md](PROXMOX_CLUSTER_ARCHITECTURE.md).
|
||||
- **ml110** (192.168.11.10): **0** cluster guests (2026-05-09); table below is historical
|
||||
|
||||
### IP Allocation Summary
|
||||
| IP Range | Count | Purpose |
|
||||
@@ -80,85 +74,46 @@ ssh root@192.168.11.12 "hostname" # Returns: r630-02 ✅
|
||||
| Property | Value | Status |
|
||||
|----------|-------|--------|
|
||||
| **Hostname** | ml110 | ✅ Correct |
|
||||
| **Proxmox Version** | 9.1.0 (kernel 6.17.4-1-pve) | ✅ Current |
|
||||
| **Proxmox Version** | 9.1.7 (kernel 6.17.13-2-pve) | ✅ Current |
|
||||
| **CPU** | Intel Xeon E5-2603 v3 @ 1.60GHz (6 cores) | ⚠️ Older, slower |
|
||||
| **Memory** | 125GB total, 94GB used, 31GB available | ⚠️ High usage |
|
||||
| **Storage - local** | 94GB total, 7.4GB used (7.87%) | ✅ Good |
|
||||
| **Storage - local-lvm** | 813GB total, 214GB used (26.29%) | ✅ Active |
|
||||
| **VMs/Containers** | 34 total | ✅ All here |
|
||||
| **Memory** | ~63 GiB reported (`maxmem`); ~3.5% used (API **2026-05-09**) | ✅ Low vs historical 75% narrative |
|
||||
| **Storage - local** | ~94 GiB dir — see `pvesm` | ✅ |
|
||||
| **Storage - local-lvm / data** | Thin pools ~1.8TB — nearly empty | ✅ |
|
||||
| **VMs/Containers** | **0** on node (**2026-05-09**) | ✅ |
|
||||
|
||||
**Storage Details:**
|
||||
- `local`: Directory storage, active, 94GB available
|
||||
- `local-lvm`: LVM thin, active, 600GB available
|
||||
- `thin1-thin6`: Configured but disabled (not in use)
|
||||
**Storage Details (live snapshot — use `pvesm status` on host):**
|
||||
- **`local`:** directory ISO/template store (~94 GiB).
|
||||
- **`data` / `local-lvm`:** shared thin pool name — **~0.03%** used on **2026-05-09** (nearly empty).
|
||||
|
||||
**Recommendations:**
|
||||
- ⚠️ **CPU is older/slower** - Consider workload distribution
|
||||
- ⚠️ **Memory usage high (75%)** - Monitor closely
|
||||
- ✅ **Storage well configured** - LVM thin active and working
|
||||
- **CPU** remains weaker than **r630-*** — bias new workloads to Dell nodes unless intentional.
|
||||
- **Memory pressure narrative superseded** — API shows **~3.5%** used (**2026-05-09**).
|
||||
|
||||
### r630-01 (192.168.11.11) - Previously "pve"
|
||||
|
||||
| Property | Value | Status |
|
||||
|----------|-------|--------|
|
||||
| **Hostname** | r630-01 | ✅ Migrated |
|
||||
| **Proxmox Version** | 9.1.0 (kernel 6.17.4-1-pve) | ✅ Current |
|
||||
| **CPU** | Intel Xeon E5-2630 v3 @ 2.40GHz (32 cores) | ✅ Good |
|
||||
| **Memory** | 503GB total, 6.4GB used, 497GB available | ✅ Excellent |
|
||||
| **Storage - local** | 536GB total, 0.1GB used (0.00%) | ✅ Available |
|
||||
| **Storage - local-lvm** | **DISABLED** | ⚠️ **Issue** |
|
||||
| **Storage - thin1-thin6** | **DISABLED** | ⚠️ **Issue** |
|
||||
| **VMs/Containers** | 0 | ⏳ Ready for deployment |
|
||||
> **Current operations:** See [PROXMOX_CLUSTER_ARCHITECTURE.md](PROXMOX_CLUSTER_ARCHITECTURE.md) — **57** guests, **~66%** memory use, **thin1**/**data** pools in active use. The table below is a **2025** snapshot; do not use for capacity planning.
|
||||
|
||||
**Storage Details:**
|
||||
- **Volume Group:** `pve` exists with 2 physical volumes
|
||||
- **Thin Pools:** `data` (200GB) and `thin1` (208GB) exist
|
||||
- **Disks:** 4 disks (sda, sdb: 558GB each; sdc, sdd: 232GB each)
|
||||
- **LVM Setup:** Properly configured
|
||||
- **Storage Config Issue:** Storage configured but node references point to "pve" (old hostname) or "pve2"
|
||||
|
||||
**Issues:**
|
||||
- ⚠️ **Storage configured but node references outdated** - Points to "pve" instead of "r630-01"
|
||||
- ⚠️ **Storage may show as disabled** - Due to hostname mismatch in config
|
||||
- ⚠️ **Need to update storage.cfg** - Update node references to r630-01
|
||||
|
||||
**Recommendations:**
|
||||
- 🔴 **CRITICAL:** Enable local-lvm storage to use existing LVM thin pools
|
||||
- 🔴 **CRITICAL:** Activate thin1 storage for better performance
|
||||
- ✅ **Ready for VMs** - Excellent resources available
|
||||
| Property | Value (historical) | Status |
|
||||
|----------|--------------------|--------|
|
||||
| **Proxmox Version** | 9.1.7 (kernel 6.17.13-2-pve) | ✅ Current build |
|
||||
| **VMs/Containers** | 0 in 2025 table | **Superseded** — see cluster doc |
|
||||
|
||||
### r630-02 (192.168.11.12) - Previously "pve2"
|
||||
|
||||
| Property | Value | Status |
|
||||
|----------|-------|--------|
|
||||
| **Hostname** | r630-02 | ✅ Migrated |
|
||||
| **Proxmox Version** | 9.1.0 (kernel 6.17.4-1-pve) | ✅ Current |
|
||||
| **CPU** | Intel Xeon E5-2660 v4 @ 2.00GHz (56 cores) | ✅ Excellent |
|
||||
| **Memory** | 251GB total, 4.4GB used, 247GB available | ✅ Excellent |
|
||||
| **Storage - local** | 220GB total, 0.1GB used (0.06%) | ✅ Available |
|
||||
| **Storage - local-lvm** | **DISABLED** | ⚠️ **Issue** |
|
||||
| **Storage - thin1-thin6** | **DISABLED** | ⚠️ **Issue** |
|
||||
| **VMs/Containers** | 0 | ⏳ Ready for deployment |
|
||||
> **Current operations:** See [PROXMOX_CLUSTER_ARCHITECTURE.md](PROXMOX_CLUSTER_ARCHITECTURE.md) — **41** guests; **`thin1-r630-02` … `thin6`** pools active. Historical “all disabled” narrative below is **obsolete**.
|
||||
|
||||
**Storage Details:**
|
||||
- Need to check LVM configuration (command timed out)
|
||||
- Storage shows as disabled in Proxmox
|
||||
|
||||
**Issues:**
|
||||
- ⚠️ **Storage configured but node references outdated** - Points to "pve2" instead of "r630-02"
|
||||
- ⚠️ **VMs already exist on storage** - Need to verify they're accessible
|
||||
- ⚠️ **Need to update storage.cfg** - Update node references to r630-02
|
||||
|
||||
**Recommendations:**
|
||||
- 🔴 **CRITICAL:** Check and configure LVM storage
|
||||
- 🔴 **CRITICAL:** Enable local-lvm or thin storage
|
||||
- ✅ **Ready for VMs** - Excellent resources available
|
||||
| Property | Value (historical) | Status |
|
||||
|----------|----------------------|--------|
|
||||
| **Proxmox Version** | 9.1.7 (kernel 6.17.13-2-pve) | ✅ Current build |
|
||||
| **VMs/Containers** | 0 in 2025 table | **Superseded** — see cluster doc |
|
||||
|
||||
---
|
||||
|
||||
## Storage Configuration Analysis
|
||||
|
||||
### Current Storage Status
|
||||
> **Migration-era inventory:** Tables and `sed` recipes in this section date from hostname/storage fixes. **Confirm with `pvesm status` on each host** before changing `/etc/pve/storage.cfg`. Live snapshot: **2026-05-09**.
|
||||
|
||||
### Current Storage Status (historical UI export — audit only)
|
||||
|
||||
| Host | Storage Type | Status | Size | Usage | Recommendation |
|
||||
|------|--------------|--------|------|-------|----------------|
|
||||
@@ -224,7 +179,7 @@ done
|
||||
|
||||
### 2. Distribute VMs Across Hosts ⚠️ RECOMMENDED
|
||||
|
||||
**Current State:** All 34 VMs on ml110 (overloaded)
|
||||
**Current State (superseded narrative):** Guests are distributed across **r630-01** … **r630-04** (**136** running, **2026-05-09**).
|
||||
|
||||
**Recommendation:**
|
||||
- Migrate some VMs to r630-01 and r630-02
|
||||
@@ -478,6 +433,6 @@ pvecm nodes
|
||||
|
||||
---
|
||||
|
||||
**Last Updated:** 2025-01-20
|
||||
**Last Updated:** 2026-05-09
|
||||
**Document Version:** 1.0
|
||||
**Review Cycle:** Quarterly
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Proxmox Hosts — Complete Hardware Configuration
|
||||
|
||||
**Last Updated:** 2026-02-13
|
||||
**Last Updated:** 2026-05-09
|
||||
**Document Version:** 1.0
|
||||
**Status:** Active Documentation
|
||||
**Source:** Live query from hosts via `lspci`, `ethtool`, `ip link`
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
Complete hardware specifications for the three Proxmox VE hosts, including CPU, memory, storage, and **all NIC models** with interface mapping and link status.
|
||||
Complete hardware specifications for **three** Proxmox VE hosts (detailed NIC inventory). The **five-node** cluster also includes **r630-03** and **r630-04** — see [PROXMOX_CLUSTER_ARCHITECTURE.md](PROXMOX_CLUSTER_ARCHITECTURE.md) for live counts.
|
||||
|
||||
---
|
||||
|
||||
@@ -19,10 +19,10 @@ Complete hardware specifications for the three Proxmox VE hosts, including CPU,
|
||||
|-----------|---------------|
|
||||
| **Manufacturer** | HP |
|
||||
| **Model** | ProLiant ML110 Gen9 |
|
||||
| **Proxmox** | 9.1.0, kernel 6.17.4-1-pve |
|
||||
| **Proxmox** | 9.1.7, kernel 6.17.13-2-pve |
|
||||
| **CPU** | Intel Xeon E5-2603 v3 @ 1.60 GHz |
|
||||
| **Cores** | 6 (1 socket × 6 cores) |
|
||||
| **RAM** | 125 GiB |
|
||||
| **RAM** | 125 GiB installed (cluster API **~63 GiB** `maxmem` for scheduling — see [PROXMOX_CLUSTER_ARCHITECTURE.md](PROXMOX_CLUSTER_ARCHITECTURE.md)) |
|
||||
| **Storage** | 2× ST1000DM003-1ER162 (931.5 GB 7.2k HDD each) |
|
||||
| **Storage layout** | LVM-thin (data, local-lvm) + local dir |
|
||||
| **Network** | vmbr0 bridge |
|
||||
@@ -45,10 +45,10 @@ Complete hardware specifications for the three Proxmox VE hosts, including CPU,
|
||||
|-----------|---------------|
|
||||
| **Manufacturer** | Dell Inc. |
|
||||
| **Model** | PowerEdge R630 |
|
||||
| **Proxmox** | 9.1.0, kernel 6.17.4-1-pve |
|
||||
| **Proxmox** | 9.1.7, kernel 6.17.13-2-pve |
|
||||
| **CPU** | Intel Xeon E5-2630 v3 @ 2.40 GHz |
|
||||
| **Cores** | 32 (2 sockets × 8 cores) |
|
||||
| **RAM** | 503 GiB |
|
||||
| **RAM** | ~126 GiB (`maxmem` API **2026-05-09**); prior builds cited different installed totals — verify DIMMs if needed |
|
||||
| **Storage** | 2× HUC109060CSS600 (559 GB enterprise SSD boot) + 6× Crucial CT250MX500SSD1 (233 GB SATA SSD) + DVD-ROM |
|
||||
| **Storage layout** | LVM-thin (data, local-lvm, thin1) + local dir |
|
||||
| **Network** | vmbr0 bridge |
|
||||
@@ -73,10 +73,10 @@ Complete hardware specifications for the three Proxmox VE hosts, including CPU,
|
||||
|-----------|---------------|
|
||||
| **Manufacturer** | Dell Inc. |
|
||||
| **Model** | PowerEdge R630 |
|
||||
| **Proxmox** | 9.1.0, kernel 6.17.4-1-pve |
|
||||
| **Proxmox** | 9.1.7, kernel 6.17.13-2-pve |
|
||||
| **CPU** | Intel Xeon E5-2660 v4 @ 2.00 GHz |
|
||||
| **Cores** | 56 (2 sockets × 14 cores) |
|
||||
| **RAM** | 251 GiB |
|
||||
| **RAM** | ~126 GiB (`maxmem` API **2026-05-09**); prior doc 251 GiB — reconcile with DIMM audit |
|
||||
| **Storage** | 8× Crucial CT250MX500SSD1 (233 GB SATA SSD each) |
|
||||
| **Storage layout** | LVM-thin (thin1-r630-02, thin2–thin6) + local dir |
|
||||
| **Network** | vmbr0 bridge (VLAN-aware) |
|
||||
|
||||
@@ -139,7 +139,7 @@ BLOCKSCOUT_URL=http://192.168.11.140:4000 node forge-verification-proxy/server.j
|
||||
### Fallbacks
|
||||
|
||||
- **Nginx fix:** `./scripts/fix-blockscout-forge-verification.sh` then retry (may still fail due to API format)
|
||||
- **Manual verification:** https://explorer.d-bis.org/address/<CONTRACT_ADDRESS>#verify-contract
|
||||
- **Manual verification:** https://explorer.d-bis.org/addresses/<CONTRACT_ADDRESS>#verify-contract
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -342,7 +342,7 @@ BLOCKSCOUT_URL=http://192.168.11.140:4000 node forge-verification-proxy/server.j
|
||||
./scripts/verify-contracts-blockscout.sh
|
||||
```
|
||||
|
||||
**See:** [forge-verification-proxy/README.md](../../forge-verification-proxy/README.md), [BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md](BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md). Fallback: manual verification at https://explorer.d-bis.org/address/<ADDR>#verify-contract
|
||||
**See:** [forge-verification-proxy/README.md](../../forge-verification-proxy/README.md), [BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md](BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md). Fallback: manual verification at https://explorer.d-bis.org/addresses/<ADDR>#verify-contract
|
||||
|
||||
**Runbooks in sync (R12):** [BLOCKSCOUT_FIX_RUNBOOK](BLOCKSCOUT_FIX_RUNBOOK.md), [BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION](BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md), this runbook. **Full recommendations (R1–R24):** [RECOMMENDATIONS_OPERATOR_CHECKLIST](../00-meta/RECOMMENDATIONS_OPERATOR_CHECKLIST.md).
|
||||
|
||||
|
||||
109
docs/03-deployment/DBIS_ENGINE_X_AUTOMATED_LIQUIDITY_ADVISOR.md
Normal file
109
docs/03-deployment/DBIS_ENGINE_X_AUTOMATED_LIQUIDITY_ADVISOR.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# DBIS Engine X Automated Liquidity Advisor
|
||||
|
||||
**Status:** repo-side advisor implemented; live autonomous execution remains gated.
|
||||
|
||||
## Purpose
|
||||
|
||||
Engine X needs one control surface that can accept API feeds, advise on liquidity positions, calculate the requested `cW*` output, evaluate available `XAUt` collateral, and only then promote the request into protected on-chain execution plus endpoint reporting.
|
||||
|
||||
This is implemented as a read-only planner first:
|
||||
|
||||
```bash
|
||||
pnpm engine-x:automation-advisor
|
||||
```
|
||||
|
||||
The planner writes:
|
||||
|
||||
- `reports/status/engine-x-automated-liquidity-advisor-latest.json`
|
||||
- `reports/status/engine-x-automated-liquidity-advisor-latest.md`
|
||||
|
||||
## Feed Inputs
|
||||
|
||||
The advisor consumes the current Engine X evidence surfaces:
|
||||
|
||||
- `mainnet-cwusdc-usdc-support-health-latest.json`
|
||||
- `engine-x-public-indexed-readiness-latest.json`
|
||||
- `engine-x-mev-defense-readiness-latest.json`
|
||||
- `mainnet-cwusdc-weth-liquidity-surfaces-latest.json`
|
||||
|
||||
Regenerate them with:
|
||||
|
||||
```bash
|
||||
python3 scripts/verify/check-mainnet-cwusdc-usdc-support-health.py
|
||||
pnpm engine-x:public-readiness
|
||||
pnpm engine-x:mev-defense
|
||||
pnpm engine-x:weth-liquidity-eval
|
||||
```
|
||||
|
||||
## Request Model
|
||||
|
||||
Initial supported request:
|
||||
|
||||
```bash
|
||||
ENGINE_X_REQUESTED_CW_SYMBOL=cWUSDC \
|
||||
ENGINE_X_REQUESTED_OUTPUT_UNITS=0.01 \
|
||||
ENGINE_X_XAUT_AVAILABLE_UNITS=0.000027 \
|
||||
pnpm engine-x:automation-advisor
|
||||
```
|
||||
|
||||
The advisor currently treats `cWUSDC` as a six-decimal USD-denominated output token. Additional `cW*` assets should be added only after each token has a token policy, public indexed surface mapping, FX/crypto reference source, and endpoint publication packet.
|
||||
|
||||
## Calculator Model
|
||||
|
||||
The calculator combines:
|
||||
|
||||
- requested `cW*` output;
|
||||
- wallet official `USDC`;
|
||||
- wallet `cWUSDC`;
|
||||
- available `XAUt` collateral;
|
||||
- configured `XAUt/USD` price;
|
||||
- LTV and health-factor guardrails;
|
||||
- MEV/protected transaction readiness;
|
||||
- live public-indexed pool readiness;
|
||||
- quote-defense surface status.
|
||||
|
||||
The debt-neutral loop invariant remains:
|
||||
|
||||
```text
|
||||
Borrow USDC
|
||||
Swap cWUSDC -> USDC
|
||||
Repay borrowed USDC debt
|
||||
Swap borrowed USDC -> cWUSDC
|
||||
Stop
|
||||
Withdraw XAUt collateral only after debt is zero
|
||||
```
|
||||
|
||||
The advisor must not mark live automation ready unless ending USDC debt is zero and all protected execution gates pass.
|
||||
|
||||
## Automation Phases
|
||||
|
||||
1. `phase_0_advisor`: read-only API and calculator advice.
|
||||
2. `phase_1_canary`: protected tiny public canary execution.
|
||||
3. `phase_2_liquidity_defense`: automated protected rebalance and quote defense.
|
||||
4. `phase_3_endpoint_publication`: regenerate public reports and endpoint packets.
|
||||
5. `phase_4_multi_asset_forex_crypto`: extend to additional `cW*`, Forex, and crypto publication packets.
|
||||
|
||||
## Endpoint Reporting
|
||||
|
||||
Endpoint packets must contain transaction hashes, public pool state, quote values, ISO/audit/peg hashes where applicable, and clear boundaries between internal Engine X accounting and public DEX evidence.
|
||||
|
||||
Targets:
|
||||
|
||||
- token-aggregation public report API;
|
||||
- CoinGecko tracker package;
|
||||
- CoinMarketCap tracker package;
|
||||
- Etherscan transaction and pool pages;
|
||||
- DexScreener / GeckoTerminal pool pages;
|
||||
- exchange listing or OTC due-diligence packets;
|
||||
- Forex desk liquidity and proof packets.
|
||||
|
||||
## Live Execution Boundary
|
||||
|
||||
No advisor output is a broadcast instruction. Live execution still requires:
|
||||
|
||||
- protected/private transaction RPC;
|
||||
- fresh live quotes;
|
||||
- funded official-USDC lender or quote inventory;
|
||||
- passing Solidity preview;
|
||||
- nonzero ISO/audit/peg hashes;
|
||||
- operator approval.
|
||||
@@ -9,7 +9,7 @@ This runbook is the durable operator path for the DBIS Engine X proof package wh
|
||||
|
||||
The final 2026-05-07 execution delivered exactly `5,000,000,000.000000 cWUSDC` to the Meta wallet and exactly `5,000,000,000.000000 cWUSDC` to the master wallet. The final execution report is `reports/status/dbis-engine-x-final-recipient-proof-execution-20260507.md`.
|
||||
|
||||
The current implementation proves the Engine X internal maintained rail, not public DEX market depth. A public `cWUSDC/USDC` peg still requires separate public liquidity and quote evidence.
|
||||
The current implementation proves the Engine X internal maintained rail, not public DEX market depth. A public `cWUSDC/USDC` peg still requires separate public liquidity and quote evidence. Engine X also tracks `cWUSDC/WETH9` as an indirect USD peg-support surface because WETH has deep public USD markets; that lane supports, but does not replace, direct official-USDC redemption-style evidence.
|
||||
|
||||
**Public LP compliance boundary:** if the proof standard requires a public, Etherscan-indexable `cWUSDC/USDC` swap against official Mainnet `USDC`, Engine X evidence alone fails that standard. The proof must use an actual public LP surface, preserve before/after reserves plus swap transaction hashes, and avoid labeling virtual internal netting as public DEX volume. See `reports/status/mainnet-cwusdc-cross-protocol-public-lp-proof-plan-20260507.md` and `reports/status/mainnet-engine-x-indexed-liquidity-upgrade-plan-20260507.md`.
|
||||
|
||||
@@ -42,6 +42,8 @@ Official ISO references used by this package:
|
||||
| Engine X ERC-3156 proof borrower | `smom-dbis-138/contracts/flash/DBISEngineXFlashProofBorrower.sol` |
|
||||
| XAUt-backed USDC borrow vault | `smom-dbis-138/contracts/flash/DBISEngineXXautUsdcBorrowVault.sol` |
|
||||
| XAUt-backed USDC borrow vault tests | `smom-dbis-138/test/flash/DBISEngineXXautUsdcBorrowVault.t.sol` |
|
||||
| Single-sided DODO cWUSDC wrapper | `smom-dbis-138/contracts/flash/DBISEngineXSingleSidedDodoCwusdcVault.sol` |
|
||||
| Single-sided DODO cWUSDC wrapper tests | `smom-dbis-138/test/flash/DBISEngineXSingleSidedDodoCwusdcVault.t.sol` |
|
||||
| Recipient deposit planner | `scripts/verify/plan-dbis-engine-x-recipient-deposits.py` |
|
||||
| Planner wrapper | `scripts/verify/plan-dbis-engine-x-recipient-deposits.sh` |
|
||||
| ISO/audit proof generator | `scripts/verify/generate-dbis-engine-x-iso20022-proofs.py` |
|
||||
@@ -56,6 +58,7 @@ Official ISO references used by this package:
|
||||
| UniV3 public swap proof dry-run | `scripts/deployment/run-engine-x-univ3-public-swap-proof.sh` |
|
||||
| Indexed proof recorder dry-run | `scripts/deployment/record-engine-x-indexed-liquidity-proof.sh` |
|
||||
| Public indexed readiness report | `scripts/verify/check-engine-x-public-indexed-readiness.sh` |
|
||||
| WETH-backed peg-support evaluator | `scripts/verify/evaluate-mainnet-cwusdc-weth-liquidity-surfaces.sh` |
|
||||
| Audit manifest builder | `scripts/verify/build-engine-x-audit-manifest.sh` |
|
||||
| Main status report | `reports/status/dbis-engine-x-5b-cwusdc-ladder-recalc-20260506.md` |
|
||||
| Final execution report | `reports/status/dbis-engine-x-final-recipient-proof-execution-20260507.md` |
|
||||
@@ -153,12 +156,35 @@ Engine X proof execution must satisfy all of these conditions:
|
||||
|
||||
This proves the maintained Engine X internal accounting rail. It does not prove public market price discovery or public DEX volume.
|
||||
|
||||
## MEV Defense
|
||||
|
||||
Live Engine X public swap, rebalance, and LP migration scripts now use the shared protected-broadcast guard in `scripts/lib/mev-protection.sh`.
|
||||
|
||||
```bash
|
||||
pnpm engine-x:mev-defense
|
||||
```
|
||||
|
||||
For sensitive execution, configure one protected write RPC through `ENGINE_X_PRIVATE_TX_RPC`, `MEV_BLOCKER_RPC_URL`, `FLASHBOTS_RPC_URL`, `BLOXROUTE_RPC_URL`, or `BLINK_RPC_URL`. Dry-runs and read-only quote checks still use `ETHEREUM_MAINNET_RPC`. If no protected RPC is configured, live Engine X quote-defense scripts fail closed before broadcasting. An operator can intentionally use the public mempool only by setting `ENGINE_X_ALLOW_PUBLIC_BROADCAST=1` for a reviewed canary.
|
||||
|
||||
## Automated Liquidity Advisor
|
||||
|
||||
Engine X now has a read-only advisor layer for API-fed liquidity recommendations, requested `cW*` output sizing, XAUt-backed USDC capacity, execution gates, and endpoint reporting:
|
||||
|
||||
```bash
|
||||
pnpm engine-x:automation-advisor
|
||||
```
|
||||
|
||||
The advisor policy is `config/engine-x/automation-policy.json`; the durable runbook is `docs/03-deployment/DBIS_ENGINE_X_AUTOMATED_LIQUIDITY_ADVISOR.md`. It does not broadcast transactions. It decides whether a requested output can move from calculator advice into protected on-chain execution and reporting.
|
||||
|
||||
## Public LP And Flash-Loan Boundary
|
||||
|
||||
Cross-protocol routing can be used for a public proof, but the roles must stay explicit:
|
||||
|
||||
- UniV2 `cWUSDC/USDC` is the public indexed proof surface.
|
||||
- UniV3 `cWUSDC/USDC` can also be used as the public indexed proof surface once created and funded with actual `cWUSDC` plus official Mainnet `USDC`.
|
||||
- UniV3, UniV2, and DODO PMM `cWUSDC/WETH9` surfaces are Engine X peg-support lanes. They support the USD peg indirectly by comparing the `cWUSDC/WETH9` pool price against live WETH/USD or WETH/USDC reference markets.
|
||||
- `cWUSDC/ETH` and `cWUSDC/WETH` should be treated as the same public WETH9-backed market. UniV2 `addLiquidityETH` wraps native ETH and creates a WETH9 pair; UniV3 and DODO require ERC-20 WETH9 directly.
|
||||
- Single-sided DODO cWUSDC can be tracked as Engine X inventory, but it is not an executable DODO swap surface through the current integration. `DODOPMMIntegration.addLiquidity(pool, baseAmount, quoteAmount)` requires both base and quote amounts to be nonzero, so a true cWUSDC-only DODO lane needs either a dedicated single-sided wrapper or enough WETH9/USDC quote inventory to make the PMM executable.
|
||||
- Aave USDC flash liquidity is same-block working capital, not permanent LP funding.
|
||||
- The upgraded Engine X vault can provide ERC-3156 flash loans from its accounted USDC lender bucket only; it cannot lend pool USDC and it keeps flash fees in lender accounting.
|
||||
- DODO or cW mesh pools may be unwind legs only when live min-out quotes repay Aave principal plus premium in official USDC.
|
||||
@@ -166,6 +192,36 @@ Cross-protocol routing can be used for a public proof, but the roles must stay e
|
||||
|
||||
With current balances, the only honest public LP path is a tiny wallet-funded UniV2 canary. Larger policy-floor or listing-quality depth still needs external official Mainnet USDC.
|
||||
|
||||
Evaluate the WETH-backed support lane before creating any cWUSDC/ETH, cWUSDC/WETH, UniV2, UniV3, or DODO PMM pool:
|
||||
|
||||
```bash
|
||||
pnpm engine-x:weth-liquidity-eval
|
||||
```
|
||||
|
||||
The evaluator writes `reports/status/mainnet-cwusdc-weth-liquidity-surfaces-latest.json` and `.md`, checks the canonical Mainnet WETH9 Cc2 address, detects existing UniV2/UniV3 pools, confirms DODO manager readiness, quotes WETH against official USDC, and sizes the current wallet's maximum WETH-backed seed.
|
||||
|
||||
For single-sided cWUSDC DODO inventory, use this promotion rule:
|
||||
|
||||
1. Record cWUSDC-only inventory as Engine X accounted support inventory.
|
||||
2. Do not claim executable public DODO liquidity until the pool has nonzero quote-side inventory and a passing `querySellBase` / `querySellQuote` canary.
|
||||
3. Prefer a wrapper for cWUSDC-only deposits if the goal is single-sided operator UX; the wrapper must expose solvency, min-out, pause, and withdrawal controls and must not label idle inventory as public swap depth.
|
||||
|
||||
The Engine X single-sided DODO wrapper deployment command is dry-run by default:
|
||||
|
||||
```bash
|
||||
pnpm engine-x:single-sided-dodo-deploy
|
||||
```
|
||||
|
||||
The wrapper:
|
||||
|
||||
- accepts `cWUSDC` as single-sided accounted inventory;
|
||||
- optionally accepts a quote token, defaulting to Mainnet WETH9 Cc2;
|
||||
- reports solvency as actual balances greater than or equal to accounted inventory;
|
||||
- rejects DODO promotion unless both cWUSDC and quote amounts are nonzero;
|
||||
- approves the DODO integration only for the exact promotion amounts and then clears allowances;
|
||||
- requires a configured DODO pool plus passing `querySellBase` / `querySellQuote` canaries before promoted liquidity is treated as executable;
|
||||
- keeps idle cWUSDC inventory separate from public DODO depth.
|
||||
|
||||
## XAUt-Backed USDC Borrow Vault
|
||||
|
||||
Engine X now has a dedicated repo-side borrowing component for the banking model where `XAUt` represents XAU collateral and `USDC` represents USD debt:
|
||||
@@ -210,14 +266,79 @@ The indexed LP upgrade creates public proof surface only. It does not meet the `
|
||||
|
||||
**2026-05-07 live attempt:** the legacy vault balances were swept and used to create/fund the official UniV3 `cWUSDC/USDC` pool at `0x1Cf2e685682C7F7beF508F0Af15Dfb5CDda01ee3`. External swaps immediately moved the pool out of range; current active liquidity is `0` and deployer USDC is `0`. See `reports/status/engine-x-univ3-public-lp-migration-attempt-20260507.md`.
|
||||
|
||||
## Mainnet cWUSDC Tracker And Public LP Completion Packet
|
||||
|
||||
The 2026-05-08 internal completion pass finished every non-broadcast task available from the repo/operator workspace and left external/capital-dependent gates explicit.
|
||||
|
||||
Fresh internal evidence:
|
||||
|
||||
- `reports/status/mainnet-cwusdc-tracker-readiness-20260508.md`
|
||||
- `reports/status/mainnet-cwusdc-technical-completion-20260508.md`
|
||||
- `reports/status/mainnet-cwusdc-technical-completion-20260508.json`
|
||||
- `reports/status/mainnet-cwusdc-supply-proof-20260508.json`
|
||||
- `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md`
|
||||
- `docs/04-configuration/coingecko/CWUSDC_MAINNET_EXTERNAL_SUBMISSION_CHECKLIST.md`
|
||||
- `reports/status/engine-x-public-indexed-readiness-latest.json`
|
||||
- `reports/status/mainnet-cwusdc-usdc-preflight-latest.json`
|
||||
- `reports/status/mainnet-cwusdc-usdc-repeg-plan-latest.json`
|
||||
- `reports/status/mainnet-cwusdc-weth-liquidity-surfaces-latest.json`
|
||||
|
||||
Completed internal tasks:
|
||||
|
||||
- Verified the cWUSDC contract source and supply surfaces.
|
||||
- Recorded machine-readable supply proof and circulating-supply methodology.
|
||||
- Confirmed cWUSDC is in the internal canonical metadata registry and CoinGecko-style export.
|
||||
- Confirmed DexScreener and GeckoTerminal index the public UniV2 and UniV3 `cWUSDC/USDC` pairs.
|
||||
- Confirmed CoinMarketCap DEX has a reachable Ethereum token page for cWUSDC; full CMC listing acceptance remains external.
|
||||
- Documented LP caveats: UniV2 is official-USDC quote-starved and public depth remains too thin for listing-quality proof.
|
||||
- Generated the latest public indexed readiness, public-pair preflight, repeg plan, and WETH support-surface reports.
|
||||
- Deployed the upgraded accounting-aware Engine X v2 vault: `0xf108586d1FC330EA1D4EA4ff8fd983cde94279B1`.
|
||||
- Deployed the public indexed-liquidity proof vault: `0xC264005EC6C3C74Ae2DfD0c60fb1EF5E792B45EE`.
|
||||
- Verified both new Engine X contracts on Etherscan.
|
||||
- Re-ran public indexed readiness against the new vaults; latest readiness is `readyForPublicIndexedProof=true`.
|
||||
- Confirmed dry-run deployment command for the single-sided DODO wrapper.
|
||||
- Fixed the indexed LP migration dry-run so it cleanly reports that no balanced vault liquidity remains to migrate.
|
||||
- Granted cWUSDC `BURNER_ROLE` to `CW_BRIDGE_MAINNET=0x2bF74583206A49Be07E0E8A94197C12987AbD7B5`; bridge now has `MINTER_ROLE=true` and `BURNER_ROLE=true`.
|
||||
- Documented valuation precedence while no direct third-party cWUSDC oracle feed is live.
|
||||
- Prepared the external submission checklist with copy-paste asset fields, tracker URLs, ownership gates, and liquidity caveats.
|
||||
|
||||
2026-05-08 on-chain completion transactions:
|
||||
|
||||
| Action | Address / tx |
|
||||
|---|---|
|
||||
| Grant bridge cWUSDC burner role | `0x38d292d274158eb3a6015466cd3a4a9f9013c0e75be048a38214b64ae1f73eae` |
|
||||
| Deploy Engine X v2 virtual batch vault | `0xf108586d1FC330EA1D4EA4ff8fd983cde94279B1` / `0xa02dffa042be591d256b75500d7774da1cf63f69e935d3058632d07871021bb4` |
|
||||
| Set v2 flash fee to `5` bps | `0x7ae74c050b5e051e195e2a30912ae8064fbdbace20f96b53f3d213704f22e46a` |
|
||||
| Set v2 max flash loan amount to `0` | `0x87aed485c0adac22452f14e89d6524e8db21226538bbe75652d0b3a94ed2b76c` |
|
||||
| Deploy indexed-liquidity proof vault | `0xC264005EC6C3C74Ae2DfD0c60fb1EF5E792B45EE` / `0x3534657de3d8de2a56fc74d8b4b42f51dc7d56397c3ed33526927c684aa177d5` |
|
||||
|
||||
Current public liquidity/capital gates:
|
||||
|
||||
| Gate | Latest status |
|
||||
|---|---|
|
||||
| Public UniV2 policy-floor quote-side top-up | Needs `2,497.832239 USDC` |
|
||||
| DODO defended reserve-parity quote top-up | Needs `290,995.072514 USDC` |
|
||||
| Operator wallet official Mainnet USDC | `0.839784 USDC` |
|
||||
| Public UniV2 quote-side shortfall after wallet balance | `2,496.992455 USDC` |
|
||||
| DODO defended parity shortfall after wallet balance | `290,994.232730 USDC` |
|
||||
| UniV3 active liquidity | `66,836,248` raw active liquidity; latest indexed readiness passes |
|
||||
| CoinGecko public contract lookup | External pending; API returns `404` |
|
||||
| CoinMarketCap DEX token page | Reachable |
|
||||
| Full CoinMarketCap listing | External pending |
|
||||
| Circulating supply accepted by public tracker | External pending |
|
||||
|
||||
Do not broadcast public LP repair, claim listing-quality depth, or claim accepted tracker circulating supply until official Mainnet USDC is funded and the relevant external tracker accepts the submission.
|
||||
|
||||
## Engine X V2 Public Proof Sequence
|
||||
|
||||
All commands are dry-run by default:
|
||||
|
||||
```bash
|
||||
pnpm engine-x:public-readiness
|
||||
pnpm engine-x:weth-liquidity-eval
|
||||
pnpm engine-x:v2-deploy
|
||||
pnpm engine-x:borrow-vault-deploy
|
||||
pnpm engine-x:single-sided-dodo-deploy
|
||||
pnpm engine-x:indexed-lp-migration
|
||||
pnpm engine-x:indexed-vault-deploy
|
||||
pnpm engine-x:loop-proof
|
||||
@@ -228,17 +349,20 @@ pnpm engine-x:audit-manifest
|
||||
|
||||
Recommended order:
|
||||
|
||||
1. Run `pnpm engine-x:public-readiness` and confirm the blockers.
|
||||
2. Deploy the upgraded accounting-aware Engine X v2 vault with `pnpm engine-x:v2-deploy`.
|
||||
3. Optionally deploy the XAUt-backed USDC borrow vault with `pnpm engine-x:borrow-vault-deploy`; fund it only with real official USDC.
|
||||
4. Seed the upgraded vault with actual `cWUSDC/USDC` and a bounded USDC lender bucket.
|
||||
5. Create/fund the official UniV3 `cWUSDC/USDC` public LP from the upgraded vault using `pnpm engine-x:indexed-lp-migration`.
|
||||
6. Deploy `DBISEngineXIndexedLiquidityVault` with `pnpm engine-x:indexed-vault-deploy`.
|
||||
7. For internal Engine X loop evidence, dry-run the exact `0.01 cWUSDC` loop proof with `pnpm engine-x:loop-proof`.
|
||||
8. Run a tiny actual UniV3 public swap proof with `pnpm engine-x:univ3-swap-proof`.
|
||||
9. Record the indexed proof with real swap/liquidity/proof hashes using `pnpm engine-x:indexed-proof-record`.
|
||||
10. Build the ABI/proof audit manifest with `pnpm engine-x:audit-manifest`.
|
||||
11. Retire the legacy vault only after v2 proof state is live and externally reviewed with `pnpm engine-x:legacy-retirement`.
|
||||
1. Run `pnpm engine-x:public-readiness` and confirm the current no-blocker indexed proof state when using the 2026-05-08 v2 and indexed vault addresses.
|
||||
2. Run `pnpm engine-x:weth-liquidity-eval` and confirm whether the WETH-backed support lane can be created at a meaningful size.
|
||||
3. Use the deployed accounting-aware Engine X v2 vault at `0xf108586d1FC330EA1D4EA4ff8fd983cde94279B1`.
|
||||
4. Optionally deploy the XAUt-backed USDC borrow vault with `pnpm engine-x:borrow-vault-deploy`; fund it only with real official USDC.
|
||||
5. Deploy the single-sided DODO cWUSDC wrapper with `pnpm engine-x:single-sided-dodo-deploy` if cWUSDC-only inventory needs a solvency-controlled holding lane.
|
||||
6. Seed the upgraded vault with actual `cWUSDC/USDC` and a bounded USDC lender bucket.
|
||||
7. Create/fund the official UniV3 `cWUSDC/USDC` public LP from the upgraded vault using `pnpm engine-x:indexed-lp-migration`.
|
||||
8. Create only one WETH-backed support surface first, preferably UniV3 `cWUSDC/WETH9`; add UniV2 or DODO PMM only after the evaluator report and dry-runs pass.
|
||||
9. Use the deployed `DBISEngineXIndexedLiquidityVault` at `0xC264005EC6C3C74Ae2DfD0c60fb1EF5E792B45EE`.
|
||||
10. For internal Engine X loop evidence, dry-run the exact `0.01 cWUSDC` loop proof with `pnpm engine-x:loop-proof`.
|
||||
11. Run a tiny actual UniV3 public swap proof with `pnpm engine-x:univ3-swap-proof`.
|
||||
12. Record the indexed proof with real swap/liquidity/proof hashes using `pnpm engine-x:indexed-proof-record`.
|
||||
13. Build the ABI/proof audit manifest with `pnpm engine-x:audit-manifest`.
|
||||
14. Retire the legacy vault only after v2 proof state is live and externally reviewed with `pnpm engine-x:legacy-retirement`.
|
||||
|
||||
The indexed proof vault enforces the public proof gates: nonzero public swap hash, nonzero liquidity tx hash, tick drift limit, minimum liquidity, optional pool token-balance floors, optional max proof amount, pause, and operator allowlist.
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ Design and pool matrix: [POOLS_AND_NETWORKS_FULL_DESIGN.md](../11-references/POO
|
||||
|
||||
| # | Item | Action |
|
||||
|---|------|--------|
|
||||
| 5.1 | **Per-chain RPC and env** | Set `CHAIN_*_RPC_URL`, `CHAIN_*_DODO_PMM_INTEGRATION` (or pool source) for each of 1, 10, 25, 56, 100, 137, 42161, 42220, 43114, 8453, 1111 if indexing via token-aggregation. |
|
||||
| 5.1 | **Per-chain RPC and env** | Set `CHAIN_*_RPC_URL`, `CHAIN_*_DODO_PMM_INTEGRATION` (or pool source) for each of 1, 10, 56, 100, 137, 42161, 42220, 43114, 8453, 1111 if indexing via token-aggregation (nine-chain promoted `cW*` surface; add `25` only if you explicitly index Cronos). |
|
||||
| 5.2 | **Deploy and fund** | Per chain: deploy or bridge cW* tokens; create and fund PMM pools per pool-matrix; add to MCP allowlist per chain if using MCP. |
|
||||
|
||||
---
|
||||
|
||||
@@ -130,7 +130,7 @@ Check that the contract exists and (if applicable) is verified:
|
||||
```
|
||||
|
||||
Or open the contract on the explorer:
|
||||
https://explorer.d-bis.org/address/<ADDRESS>
|
||||
https://explorer.d-bis.org/addresses/<ADDRESS>
|
||||
|
||||
---
|
||||
|
||||
|
||||
43
docs/03-deployment/EI_MATRIX_CWUSDC_MINT_PIPELINE.md
Normal file
43
docs/03-deployment/EI_MATRIX_CWUSDC_MINT_PIPELINE.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# EI matrix — mainnet cWUSDC mint pipeline
|
||||
|
||||
**Purpose:** Mint **Ethereum mainnet** `cWUSDC` (`CWUSDC_MAINNET`, default `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`) directly to every address in `config/pmm-soak-wallet-grid.json` (EI matrix), without bridging from Chain 138.
|
||||
|
||||
**Treasury semantics:** The **33 × 33 × 6** grid (**6 534** wallets) is the canonical **sovereign-nation treasury address set** for the Elemental Imperium model—each cell’s Ethereum address is the designated on-chain treasury for that routing cell (see `semanticModel` in `config/pmm-soak-wallet-grid.json`). Nation↔cell attribution and reserve governance are layered via `config/elemental-imperium-network-registry.json` and optional overlays; scripts operate on addresses regardless of label assignment.
|
||||
|
||||
**Entry point (recommended):**
|
||||
|
||||
```bash
|
||||
./scripts/deployment/pipeline-ei-matrix-mint-cwusdc.sh --dry-run --mint-raw 10000000
|
||||
./scripts/deployment/pipeline-ei-matrix-mint-cwusdc.sh --mint-raw 10000000
|
||||
```
|
||||
|
||||
Pass extra flags to the mint script after `--`:
|
||||
|
||||
```bash
|
||||
./scripts/deployment/pipeline-ei-matrix-mint-cwusdc.sh --dry-run --total-mint-raw 72000000000000 --spread-pct 15 -- --offset 0 --limit 100
|
||||
```
|
||||
|
||||
**Resume after partial run:**
|
||||
|
||||
```bash
|
||||
./scripts/deployment/continue-mint-cwusdc-ei-matrix-wallets.sh --mint-raw 10000000
|
||||
```
|
||||
|
||||
(progress file: `reports/status/ei-matrix-cwusdc-mint-last-idx.txt`)
|
||||
|
||||
**Modes:**
|
||||
|
||||
| Flag | Meaning |
|
||||
|------|--------|
|
||||
| `--mint-raw R` | Same raw amount (6 decimals) minted to each wallet in the slice. |
|
||||
| `--total-mint-raw B` | Total minted across the slice equals `B`; per-wallet amounts use ±`--spread-pct` jitter then renormalize (default spread 15). |
|
||||
|
||||
**Requirements:**
|
||||
|
||||
- `PRIVATE_KEY` with **`mint(address,uint256)`** authority on the token (typically `MINTER_ROLE` on `CompliantWrappedToken`-style `cWUSDC`).
|
||||
- `ETHEREUM_MAINNET_RPC` (or `RPC_URL_1`) and ETH for gas.
|
||||
- On-chain **reserve / policy** on the token must allow mints (otherwise transactions revert).
|
||||
|
||||
**Not in scope:** Minting **c\*** on Chain 138 and bridging to mainnet as `cWUSDC` — use bridge / Engine X runbooks separately (`docs/03-deployment/DBIS_ENGINE_X_RECIPIENT_PROOF_RUNBOOK.md`, `docs/07-ccip/`).
|
||||
|
||||
**Artifacts:** `reports/status/ei-matrix-cwusdc-mint-*.json` manifests, `ei-matrix-cwusdc-mint-failures.log`, flock `ei-matrix-cwusdc-mint.lock` (one live mint job).
|
||||
@@ -1,6 +1,6 @@
|
||||
# Phase D — Optional Extended Coverage Checklist
|
||||
|
||||
**Last Updated:** 2026-03-04
|
||||
**Last Updated:** 2026-05-09
|
||||
**Purpose:** Checklist for Phase D of [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md): XAU, vaults, ALL Mainnet, and trustless stack.
|
||||
|
||||
---
|
||||
@@ -43,8 +43,19 @@
|
||||
|
||||
---
|
||||
|
||||
## D.5 Cosmos ecosystem (optional — not Phase D required)
|
||||
|
||||
Cross-chain connectivity to Cosmos Hub, Noble, Osmosis, IBC app tokens, and CosmWasm apps is **out of band** for Phase D core (XAU, vaults, ALL, trustless) unless explicitly adopted.
|
||||
|
||||
| Step | Action | Ref |
|
||||
|------|--------|-----|
|
||||
| D.5.1 | If adopting any Cosmos leg, follow streams **A–E** and completion criteria. | [COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK](../11-references/COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md), [`config/cosmos-chain138-optional/`](../../config/cosmos-chain138-optional/README.md) |
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- [REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md) Phase D
|
||||
- [LIQUIDITY_POOLS_MASTER_MAP](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md)
|
||||
- [VAULT_SYSTEM_MASTER_TECHNICAL_PLAN](../02-architecture/VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md)
|
||||
- [COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK](../11-references/COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md) (optional; D.5)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Mr. Promod Uniswap V2 Live Pair Discovery
|
||||
|
||||
- Generated: `2026-04-22T04:59:28Z`
|
||||
- Generated: `2026-05-09T05:43:24Z`
|
||||
- Live pairs discovered: `19`
|
||||
- Healthy live pairs: `10`
|
||||
- Write mode: `False`
|
||||
- Write mode: `True`
|
||||
|
||||
| Chain | Network | Env Ready | Live Pairs Found | Healthy Live Pairs |
|
||||
|---|---|---|---|---|
|
||||
|
||||
@@ -1,72 +1,46 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Funding Actions
|
||||
|
||||
- Generated: `2026-04-17T18:13:05Z`
|
||||
- Generated: `2026-05-09T21:07:05Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: strict per-chain action plan for phase-1 funding and deployment.
|
||||
|
||||
| Chain | Network | Action | Tokens Missing | Gas Issue | Recommended Seed |
|
||||
|---|---|---|---|---|---:|
|
||||
| `1` | Ethereum Mainnet | `seed_now` | `none` | `false` | `8888511.867466` |
|
||||
| `10` | Optimism | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `true` | `1000` |
|
||||
| `25` | Cronos | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `56` | BSC | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `1` | Ethereum Mainnet | `mint_destination_then_seed` | `cWUSDC` | `false` | `1000` |
|
||||
| `10` | Optimism | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `25` | Cronos | `mint_destination_then_seed` | `none` | `false` | `1000` |
|
||||
| `56` | BSC | `mint_destination_then_seed` | `none` | `false` | `1000` |
|
||||
| `100` | Gnosis | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `137` | Polygon | `seed_now` | `none` | `false` | `996.297636` |
|
||||
| `8453` | Base | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `true` | `1000` |
|
||||
| `137` | Polygon | `mint_destination_then_seed` | `cWUSDC` | `false` | `1000` |
|
||||
| `8453` | Base | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `42161` | Arbitrum One | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `42220` | Celo | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `43114` | Avalanche | `mint_missing_side_then_seed` | `cWUSDC` | `false` | `0.8` |
|
||||
| `43114` | Avalanche | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
|
||||
## Per-Chain Actions
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Action: `seed_now`
|
||||
- Tokens missing: `none`
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `1` via `CW_BRIDGE_MAINNET` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Post-funding deploy block:
|
||||
Mint steps:
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_1_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_1_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
|
||||
export CWUSDC="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="8888511867466"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
cast send "0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ETHEREUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `true`
|
||||
- Gas issue: `false`
|
||||
- Gas note: Top up native gas on Optimism before minting or seeding; current balance is below the 0.001 safety threshold.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `10` via `CW_BRIDGE_OPTIMISM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
@@ -88,48 +62,22 @@ cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Tokens missing: `none`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `25` via `CW_BRIDGE_CRONOS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Tokens missing: `none`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `56` via `CW_BRIDGE_BSC` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
@@ -156,52 +104,26 @@ cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Action: `seed_now`
|
||||
- Tokens missing: `none`
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `137` via `CW_BRIDGE_POLYGON` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Post-funding deploy block:
|
||||
Mint steps:
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_137_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_137_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="996297636"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${POLYGON_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `true`
|
||||
- Gas issue: `false`
|
||||
- Gas note: Top up native gas on Base before minting or seeding; current balance is below the 0.001 safety threshold.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `8453` via `CW_BRIDGE_BASE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
@@ -268,17 +190,23 @@ cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Action: `mint_missing_side_then_seed`
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `43114` via `CW_BRIDGE_AVALANCHE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDC` `0.8` with:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
cast send "0x8142BA530B08f3950128601F00DaaA678213DFdf" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Funding Readiness
|
||||
|
||||
- Generated: `2026-04-17T20:05:54Z`
|
||||
- Generated: `2026-05-09T20:53:57Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: live deployer-wallet funding view for seeding `cWUSDT/cWUSDC` phase-1 pools chain by chain.
|
||||
- Completed: `1`, `10`, `25`, `56`, `100`, `137`, `8453`, `42161`, `42220`, `43114`
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
| Chain | Network | Status | Pair Exists | Seeded Live | Native Gas | cWUSDT | cWUSDC | Max Equal Seed |
|
||||
|---|---|---|---|---|---:|---:|---:|---:|
|
||||
| `1` | Ethereum Mainnet | `completed` | `true` | `true` | `0.028982898459925766` | `397.197013` | `0` | `0` |
|
||||
| `10` | Optimism | `completed` | `true` | `true` | `0.001980670026642148` | `0` | `0` | `0` |
|
||||
| `25` | Cronos | `completed` | `true` | `true` | `22.401143346977489259` | `1000` | `1000` | `1000` |
|
||||
| `56` | BSC | `completed` | `true` | `true` | `0.010626271367072709` | `1000` | `1000` | `1000` |
|
||||
| `100` | Gnosis | `completed` | `true` | `true` | `2.407080479781350729` | `0` | `0` | `0` |
|
||||
| `137` | Polygon | `completed` | `true` | `true` | `24.318080574425380349` | `2.686028` | `0` | `0` |
|
||||
| `8453` | Base | `completed` | `true` | `true` | `0.002877934067617928` | `0` | `0` | `0` |
|
||||
| `42161` | Arbitrum One | `completed` | `true` | `true` | `0.001055113904178255` | `0` | `0` | `0` |
|
||||
| `42220` | Celo | `completed` | `true` | `true` | `8.537307308649465530` | `0` | `0` | `0` |
|
||||
| `43114` | Avalanche | `completed` | `true` | `true` | `0.446784013286210977` | `0` | `0` | `0` |
|
||||
| `1` | Ethereum Mainnet | `completed` | `true` | `true` | `0.002397937659907006` | `8523829.088635` | `56705345.129226` | `8523829.088635` |
|
||||
| `10` | Optimism | `completed` | `true` | `true` | `0.000430532335030017` | `3000.984101` | `3000.9869` | `3000.984101` |
|
||||
| `25` | Cronos | `completed` | `true` | `true` | `19.154691909389182692` | `999.9918` | `999.9938` | `999.9918` |
|
||||
| `56` | BSC | `completed` | `true` | `true` | `0.003681967051288879` | `997.9959` | `997.9959` | `997.9959` |
|
||||
| `100` | Gnosis | `completed` | `true` | `true` | `0.551078988224567304` | `999.9958` | `998.9959` | `998.9959` |
|
||||
| `137` | Polygon | `completed` | `true` | `true` | `15.030270707053166727` | `3001.992967` | `2999.903173` | `2999.903173` |
|
||||
| `8453` | Base | `completed` | `true` | `true` | `0.004958123781375043` | `5998.9839` | `5998.9859` | `5998.9839` |
|
||||
| `42161` | Arbitrum One | `completed` | `true` | `true` | `0.000971971100341626` | `1999.8848` | `999.8848` | `999.8848` |
|
||||
| `42220` | Celo | `completed` | `true` | `true` | `5.373727945247599766` | `6999.9889` | `5999.9889` | `5999.9889` |
|
||||
| `43114` | Avalanche | `completed` | `true` | `true` | `0.014891739291454170` | `998.9859` | `998.9859` | `998.9859` |
|
||||
|
||||
## Blockers
|
||||
|
||||
@@ -26,14 +26,13 @@
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDC balance is zero
|
||||
- no funding blockers
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
- native gas below 0.001
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
@@ -51,39 +50,34 @@
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
- no funding blockers
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDC balance is zero
|
||||
- no funding blockers
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
- no funding blockers
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
- native gas below 0.001
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
- no funding blockers
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
- no funding blockers
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
|
||||
**Overall Status:** `complete`
|
||||
|
||||
**Completed Chains:** `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`
|
||||
**Evidence chains (this report):** `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`
|
||||
**Nine-chain promoted public `cW*` surface (portal-aligned):** `1, 10, 56, 100, 137, 8453, 42161, 42220, 43114` — Cronos `25` rows below are historical mesh evidence only; do **not** count `25` toward the nine-chain public claim.
|
||||
|
||||
## Reserve Verification
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Proxmox VM/Container Creation Runbook — Capacity and Availability
|
||||
|
||||
**Last Updated:** 2026-02-13
|
||||
**Last Updated:** 2026-05-09
|
||||
**Purpose:** Create all planned VMs/containers on the Proxmox cluster using capacity and availability best practices. Use this when SSH'd to the Proxmox host or from a host that can SSH to Proxmox with access to env/config.
|
||||
|
||||
**Related:** [VMID_ALLOCATION_FINAL](../02-architecture/VMID_ALLOCATION_FINAL.md) | [PROXMOX_CLUSTER_ARCHITECTURE](../02-architecture/PROXMOX_CLUSTER_ARCHITECTURE.md) | [PROXMOX_COMPLETE_RECOMMENDATIONS](../10-best-practices/PROXMOX_COMPLETE_RECOMMENDATIONS.md) | [STEPS_FROM_PROXMOX_OR_LAN_WITH_SECRETS](../00-meta/STEPS_FROM_PROXMOX_OR_LAN_WITH_SECRETS.md)
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
## 1. Capacity and availability principles
|
||||
|
||||
- **Node spread:** Prefer **r630-01** (192.168.11.11) and **r630-02** (192.168.11.12) for new workloads; **ml110** (192.168.11.10) already runs 34 containers and is CPU/memory constrained. Distribute to improve redundancy and performance.
|
||||
- **Node spread:** Prefer **r630-01** / **r630-02** when balancing write-heavy pools; **r630-03** / **r630-04** have spare capacity vs **r630-01**/**02**. **ml110** (192.168.11.10) currently hosts **0** cluster guests (cluster reconcile **2026-05-09**) but remains lower-spec — keep it for lightweight roles unless you deliberately expand it.
|
||||
- **VMID ranges:** Use [VMID_ALLOCATION_FINAL](../02-architecture/VMID_ALLOCATION_FINAL.md) — e.g. DBIS Core 10000–10199, Sankofa 7800–8999, Besu 1000–4999. Do not reuse VMIDs.
|
||||
- **Storage:** Use `local-lvm` or node-specific thin pools (e.g. r630-01 thin1, r630-02 thin2–thin6). Set `PROXMOX_STORAGE` per node if creating on a specific host.
|
||||
- **High availability:** For critical services (DB, API), create primary and secondary on **different nodes** where possible (e.g. DB primary on r630-01, replica on r630-02).
|
||||
@@ -20,13 +20,15 @@
|
||||
|
||||
## 2. Cluster node summary
|
||||
|
||||
| Node | IP | CPU / RAM | Storage | Current load | Use for |
|
||||
|----------|----------------|------------|----------------|-------------------|----------------------------------|
|
||||
| ml110 | 192.168.11.10 | 6c / 125GB | 907GB (26% used) | 34 containers | Lightweight / management only |
|
||||
| r630-01 | 192.168.11.11 | 32c / 503GB| thin1 200GB+ | 0 | New VMs (DBIS, Sankofa, RPC) |
|
||||
| r630-02 | 192.168.11.12 | 56c / 251GB| thin2–thin6 | Some VMs | New VMs (HA pair, heavy workload)|
|
||||
| r630-03 | 192.168.11.13 | 32c / 512GB| Available | 0 | Future expansion |
|
||||
| r630-04 | 192.168.11.14 | 32c / 512GB| Available | 0 | Future expansion |
|
||||
| Node | IP | CPU / RAM (API) | Storage (high level) | Guests (live) | Use for |
|
||||
|----------|----------------|-----------------|----------------------|---------------|----------------------------------|
|
||||
| ml110 | 192.168.11.10 | 6c / ~63 GiB | Thin pools mostly empty | **0** | Lightweight / quorum member |
|
||||
| r630-01 | 192.168.11.11 | 32c / ~126 GiB | thin1 + data busy | **57** | Primary compute (check thin %) |
|
||||
| r630-02 | 192.168.11.12 | 56c / ~126 GiB | thin1-r630-02 … thin6 | **41** | Heavy workloads / infra CTs |
|
||||
| r630-03 | 192.168.11.13 | 32c / ~126 GiB | data + thin*-r630-03 | **19** | Besu / RPC expansion |
|
||||
| r630-04 | 192.168.11.14 | 32c / ~126 GiB | data + mev-local-lvm | **19** | Besu / app CTs |
|
||||
|
||||
Source: `pvesh get /nodes`, `/cluster/resources` (**2026-05-09**). See [PROXMOX_CLUSTER_ARCHITECTURE.md](../02-architecture/PROXMOX_CLUSTER_ARCHITECTURE.md).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
| Chain 138 liquidity | **Re-verify required** — prior run reported cUSDT/cUSDC liquidity add; this checklist previously showed zero liquidity. Treat liquidity state as unknown until reconfirmed on-chain. |
|
||||
| CCIP 138 → 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220 (Celo)** | Configured/live in current repo-backed status. Wemix (1111) is still the unresolved lane. |
|
||||
| Alltra 138 ↔ 651940 | ALT path live. |
|
||||
| cW* on public chains | No longer design-only. Current machine-readable deployment artifacts show active `cW*` inventory on `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`; `1111` remains deferred. |
|
||||
| cW* on public chains | No longer design-only. Current machine-readable deployment artifacts show active `cW*` inventory on **nine** public chains `1, 10, 56, 100, 137, 8453, 42161, 42220, 43114` (Cronos `25` excluded from the promoted surface); `1111` remains deferred. |
|
||||
| LINK for CCIP | Fund bridges per lane so cross-chain messages execute. |
|
||||
|
||||
---
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
| Step | Action | Ref |
|
||||
|------|--------|-----|
|
||||
| C.1 | **Remaining token gaps:** focus on chains still deferred or undocumented, with Wemix first. The active set already includes `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md) §3 |
|
||||
| C.1 | **Remaining token gaps:** focus on chains still deferred or undocumented, with Wemix first. The nine-chain promoted active set is `1, 10, 56, 100, 137, 8453, 42161, 42220, 43114` (exclude Cronos `25` from that public claim). | [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) |
|
||||
|
||||
|
||||
73
docs/04-configuration/CHAIN138_SYSTEM_OF_RECORD_MODEL.md
Normal file
73
docs/04-configuration/CHAIN138_SYSTEM_OF_RECORD_MODEL.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# Chain 138 System-of-Record Model
|
||||
|
||||
Status: canonical boundary document for explaining what Chain 138 records, verifies, and does not claim to replace.
|
||||
|
||||
## Summary
|
||||
|
||||
Chain 138 is the synchronized settlement and verification layer for the GRU ecosystem. It records reserve-linked asset state, transactional state, collateral-validation state, token mappings, proof references, and settlement events.
|
||||
|
||||
Chain 138 should be presented as an auditable distributed-ledger system-of-record and proof layer. It should not be presented as the legal custodian of every underlying off-chain asset.
|
||||
|
||||
## Boundary
|
||||
|
||||
| Domain | Chain 138 role | External evidence / authority |
|
||||
|---|---|---|
|
||||
| Reserve balances | Records and synchronizes reserve-linked state and proof references. | Custodians, banks, trustees, UCC filings, Euroclear records, exchange reporting, and qualified counterparties. |
|
||||
| Settlement positions | Records transactional state, balances, mappings, and settlement transitions. | Participant ledgers, payment systems, banking rails, RTGS/EMI systems, and reconciliation APIs. |
|
||||
| Collateral validation | Anchors validation state and provides audit trails. | Custodian attestations, inventory records, legal filings, exchange reports, and internal reserve-grade controls. |
|
||||
| c* assets | Native Chain 138 compliant representations. | GRU registry, UniversalAssetRegistry, token contracts, and reserve evidence. |
|
||||
| cW* assets | Public-chain transport representations of c* source assets. | Public-chain token contracts, bridge/mapping evidence, and Chain 138 source-asset records. |
|
||||
| Prices | May expose internal accounting, oracle, or report API data for dApps. | Wallet fiat displays depend on external providers such as CoinGecko, CMC, Etherscan, or provider-specific pricing systems. |
|
||||
|
||||
## What Chain 138 Is
|
||||
|
||||
- An EVM-compatible settlement and verification network.
|
||||
- A synchronized record of GRU reserve-linked asset and settlement state.
|
||||
- A proof and reconciliation layer for c* and cW* asset relationships.
|
||||
- A source of token metadata, mappings, contract state, and report API evidence.
|
||||
- An audit trail for collateral validation, reserve checks, and settlement events.
|
||||
|
||||
## What Chain 138 Is Not
|
||||
|
||||
- Not a speculative cryptocurrency thesis.
|
||||
- Not an algorithmic stablecoin mechanism.
|
||||
- Not a replacement for regulated custodians, banks, trustees, or official filing systems.
|
||||
- Not a guarantee that external wallets will display USD prices.
|
||||
- Not a claim that cW* wrappers are official third-party issuer tokens.
|
||||
|
||||
## API and Evidence Flow
|
||||
|
||||
Recommended provider-facing evidence flow:
|
||||
|
||||
```text
|
||||
Underlying reserve evidence
|
||||
-> reserve catalog / custodian / filing / exchange record
|
||||
-> Chain 138 reserve or asset state
|
||||
-> c* native compliant representation
|
||||
-> cW* public-chain transport representation
|
||||
-> token-aggregation report API
|
||||
-> provider packet / wallet metadata / tracker submission
|
||||
```
|
||||
|
||||
## Operational Cadence
|
||||
|
||||
Reserve verification, reconciliation, rebasing, and audit workflows should be described as rolling checks that operate at 6-second intervals where the integration is live. Chain 138's 2-second block interval supports settlement-state updates, while 6-second reserve verification aligns with the PMM mesh and keeper cadence used across the ecosystem.
|
||||
|
||||
## Acceptance Criteria for Provider Claims
|
||||
|
||||
Do not promote a claim as externally accepted until there is evidence for the specific provider surface:
|
||||
|
||||
| Claim | Required evidence |
|
||||
|---|---|
|
||||
| Chain metadata accepted | Provider or registry page shows Chain 138 with correct chain ID, RPC, explorer, icon, and native currency. |
|
||||
| Token metadata accepted | Provider page or wallet shows correct symbol, name, decimals, logo, and contract. |
|
||||
| Price accepted | Provider returns a current nonzero price for the exact CAIP-19 asset ID or contract. |
|
||||
| Supply accepted | Provider accepts total or circulating supply method and displays it on the public profile/API. |
|
||||
| Market accepted | Public indexed pool, depth, volume, and pair page are visible and stable. |
|
||||
|
||||
## References
|
||||
|
||||
- [GRU_PROVIDER_POSITIONING_PACKET.md](GRU_PROVIDER_POSITIONING_PACKET.md)
|
||||
- [GRU_RESERVE_LAYER_EXPLAINER.md](GRU_RESERVE_LAYER_EXPLAINER.md)
|
||||
- [metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md)
|
||||
- [PRICE_FEED_CHAIN138_METAMASK_AND_WALLETS.md](PRICE_FEED_CHAIN138_METAMASK_AND_WALLETS.md)
|
||||
@@ -0,0 +1,23 @@
|
||||
# CMC Top 10 Ecosystem Accessibility Matrix
|
||||
|
||||
- Generated: `2026-05-11T22:34:46.683039+00:00`
|
||||
- Source: [CoinMarketCap coins page](https://coinmarketcap.com/coins/)
|
||||
- Observed: `2026-05-11`
|
||||
- Boundary: Ranks are volatile; rerun or update this snapshot before external outreach.
|
||||
|
||||
| Rank | Token | Accessibility | DBIS touchpoint | Repo-side timeframe | Repo-doable next work |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 1 | BTC (Bitcoin) | non_evm_wrapped_lane_required | cWBTC / BTC reserve-or-wrapper evidence lane | 1-2 weeks repo evidence after wallet/venue binding | Bind canonical BTC custody/address evidence fields.<br>Add BTC venue and wrapped-asset evidence placeholders.<br>Keep claims as provenance-only until custody and liquidity are independently evidenced. |
|
||||
| 2 | ETH (Ethereum) | native_evm_core_surface | WETH/cWETH, Ethereum Mainnet cWUSDC, gas/quote evidence | 1-3 days repo hardening | Refresh Ethereum pool and quote-side evidence.<br>Add CMC/Dex/Gecko sanity checks for ETH-paired surfaces. |
|
||||
| 3 | USDT (Tether USDt) | evm_quote_asset_and_wrapped_transport | cUSDT / cWUSDT | 1-3 days repo-side; provider acceptance external | Refresh cUSDT/cWUSDT provider packet fields.<br>Validate official USDT quote addresses per chain. |
|
||||
| 4 | XRP (XRP) | xrpl_lane_required | XRPLAdapter / wXRP / MintBurnController | 1-2 weeks after wallet/trustline binding | Bind XRPL account and destination tag policy placeholders.<br>Document XRP reserve, trustline, and issuer requirements. |
|
||||
| 5 | BNB (BNB) | evm_compatible_bsc_lane | BSC cW* routing and gas surface | 2-5 days repo-side | Refresh BSC cW* pool and official quote evidence.<br>Check BNB gas budget and CMC report values. |
|
||||
| 6 | USDC (USD Coin) | primary_focus_ready_for_submission | cUSDC / cWUSDC | submission-ready now; price/listing acceptance external | Keep Etherscan/CoinGecko/CMC/DexScreener packets current.<br>Maintain exact CAIP-19 discipline for Mainnet cWUSDC. |
|
||||
| 7 | SOL (Solana) | solana_spl_lane_required | SolanaAdapter and config/solana-gru-bridge-lineup.json | 3-7 days repo-side if mints are bound | Bind SPL mint placeholders and minimum rent/gas targets.<br>Separate confirmed Chain 138 adapter evidence from native Solana liquidity claims. |
|
||||
| 8 | TRX (TRON) | tron_wallet_and_energy_lane_required | TronAdapter and derived/canonical Tron wallet evidence | 3-7 days after address confirmation | Bind canonical Tron address policy placeholder.<br>Document TRX energy/bandwidth and TRC-20 inventory requirements. |
|
||||
| 9 | DOGE (Dogecoin) | new_non_evm_adapter_or_custody_lane | future DOGE wrapper/custody evidence lane | 1-3 weeks for serious repo evidence | Create DOGE custody and bridge evidence stub.<br>Keep DOGE out of provider claims until wallet, reserve, and venue evidence exist. |
|
||||
| 10 | HYPE (Hyperliquid) | new_chain_or_venue_research_required | future Hyperliquid venue/asset touchpoint | 1-3 weeks for discovery/evidence | Open a research stub for chain/asset identifiers and supported custody paths.<br>Do not include HYPE in liquidity or settlement claims until identifiers are bound. |
|
||||
|
||||
## Operating Rule
|
||||
|
||||
This matrix is a repo-side planning artifact. It improves DBIS coverage discipline, but it does not imply that any external tracker, wallet, exchange, custodian, or market-data provider has accepted a token.
|
||||
108
docs/04-configuration/CWUSDC_NON_MANUAL_PROVIDER_TASKS.md
Normal file
108
docs/04-configuration/CWUSDC_NON_MANUAL_PROVIDER_TASKS.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# cWUSDC Non-Manual Provider Tasks
|
||||
|
||||
Status: canonical list of cWUSDC provider tasks that do not require manual provider-form submission, wallet UI screenshots, live liquidity transactions, or external account dashboards.
|
||||
|
||||
Latest evidence source: [../../reports/status/cwusdc-provider-handoff-latest.md](../../reports/status/cwusdc-provider-handoff-latest.md) (`2026-05-11T03:34:35Z`).
|
||||
|
||||
## Current State
|
||||
|
||||
| Area | Status | Evidence |
|
||||
|---|---|---|
|
||||
| Repo-controlled public URL prerequisites | Passing | `8 / 8` `d-bis.org` URLs returned HTTP `200` in `reports/status/cwusdc-etherscan-prereq-urls-latest.md`. |
|
||||
| CI-safe provider readiness | Passing for repo-controlled checks | `reports/status/cwusdc-provider-readiness-ci-latest.md`; external blockers are advisory. |
|
||||
| Etherscan token page visibility | Passing | External tracker probe sees the token page and required text. |
|
||||
| CMC DEX visibility | Passing | External tracker probe sees the CMC DEX token page. |
|
||||
| GeckoTerminal V3 pool visibility | Passing | V3 pool API returns `data`. |
|
||||
| GeckoTerminal V2 pool visibility | External / rate-limit blocker | Latest probe returned HTTP `429`, so it is treated as an external advisory blocker until the next successful probe. |
|
||||
| CoinGecko price API | External blocker | API responds but does not include the cWUSDC contract key. |
|
||||
| DexScreener token APIs | External blocker | Token-pairs and tokens endpoints return empty arrays. |
|
||||
| EVM liquidity-gap planner rows | No current rows | Latest planner summary shows `rows = 0`. |
|
||||
| Non-EVM funding requirements | Open, operator-bound | Solana, Tron, XRPL, and other non-EVM requirements need wallet/asset/target binding before claims. |
|
||||
| Mainnet cWUSDC supply attestation | Refreshed | `reports/status/cwusdc-supply-circulating-attestation-latest.md`; circulating supply `10451316981.309788`. |
|
||||
| Global cUSDC/cWUSDC family proof | Refreshed | `reports/status/global-cusdc-cwusdc-family-supply-proof-latest.md`; `22 / 23` entries proved for aggregate. |
|
||||
| Etherscan Value dossier | Refreshed | `reports/status/cwusdc-etherscan-value-dossier-latest.md`; ready for external submission, but Etherscan USD Value not ready. |
|
||||
| Etherscan Value propagation monitor | Refreshed | `reports/status/cwusdc-etherscan-value-propagation-latest.md`; market cap fields remain blank. |
|
||||
| Evidence bundle index | Complete | `docs/04-configuration/etherscan/CWUSDC_EVIDENCE_BUNDLE_INDEX.md`. |
|
||||
| Supply/circulating methodology | Complete | `docs/04-configuration/etherscan/CWUSDC_SUPPLY_AND_CIRCULATING_METHODOLOGY.md`. |
|
||||
| Security/audit disclosure | Complete | `docs/04-configuration/etherscan/CWUSDC_SECURITY_AND_AUDIT_DISCLOSURE.md`; formal third-party audit URL still not recorded. |
|
||||
| Provider response tracker | Complete template | `docs/04-configuration/etherscan/CWUSDC_PROVIDER_RESPONSE_TRACKER.md`; external ticket IDs still require operator updates. |
|
||||
| No-broadcast liquidity readiness plan | Complete | `docs/04-configuration/etherscan/CWUSDC_LIQUIDITY_READINESS_NO_BROADCAST_PLAN.md`. |
|
||||
|
||||
## Primary Automation
|
||||
|
||||
| Task | Command | Output | Gate behavior |
|
||||
|---|---|---|---|
|
||||
| Run all non-manual provider checks | `pnpm cwusdc:provider-checks` | `reports/status/cwusdc-provider-handoff-latest.{json,md}` plus prerequisite/tracker/liquidity reports | Does not fail on external provider blockers unless the wrapped command itself fails unexpectedly. |
|
||||
| Run CI-safe provider readiness | `pnpm cwusdc:provider-ci` | `reports/status/cwusdc-provider-readiness-ci-latest.{json,md}` | Fails only when repo-controlled public URL prerequisites fail. External provider blockers remain advisory. |
|
||||
| Rebuild handoff from latest JSON | `pnpm cwusdc:provider-handoff` | `reports/status/cwusdc-provider-handoff-latest.{json,md}` | Uses existing latest JSON files; no network calls. |
|
||||
|
||||
## Individual Non-Manual Tasks
|
||||
|
||||
| Task | Command | Output | Current interpretation |
|
||||
|---|---|---|---|
|
||||
| Check Etherscan prerequisite website URLs | `bash scripts/verify/check-cwusdc-etherscan-prereq-urls.sh --json-out reports/status/cwusdc-etherscan-prereq-urls-latest.json --md-out reports/status/cwusdc-etherscan-prereq-urls-latest.md` | URL evidence JSON/Markdown with HTTP status, attempts, and curl status. | Passing; rerun before Etherscan profile submission or CI. |
|
||||
| Probe external tracker/indexing surfaces | `bash scripts/verify/check-cwusdc-external-trackers-live.sh` | `reports/status/cwusdc-external-trackers-live-latest.{json,md}` | Etherscan, CMC DEX, and GeckoTerminal V3 pass; CoinGecko, DexScreener, and latest GeckoTerminal V2 probe remain external blockers. |
|
||||
| Re-run liquidity-gap funding planner | `node scripts/verify/plan-token-aggregation-liquidity-gap-funding.mjs` | `reports/status/token-aggregation-liquidity-gap-funding-plan-latest.{json,md}` | Read-only; latest EVM gap rows are `0`; non-EVM funding requirements remain open. |
|
||||
| Build cWUSDC Etherscan Value dossier | `pnpm cwusdc:etherscan-dossier` | `reports/status/cwusdc-etherscan-value-dossier-latest.{json,md}` | Read-only dossier generation for the Etherscan USD Value path. |
|
||||
| Generate Mainnet cWUSDC supply/circulating attestation | `python3 scripts/verify/generate-cwusdc-supply-circulating-attestation.py` | `reports/status/cwusdc-supply-circulating-attestation-latest.json` and related report output. | Safe when supply/exclusion evidence needs refresh. |
|
||||
| Generate global cUSDC/cWUSDC family supply proof | `python3 scripts/verify/generate-global-cusdc-cwusdc-family-supply-proof.py` | `reports/status/global-cusdc-cwusdc-family-supply-proof-latest.json` and related report output. | Safe when provider packets need refreshed family supply context. |
|
||||
| Monitor Etherscan Value propagation | `python3 scripts/verify/monitor-cwusdc-etherscan-value-propagation.py` | `reports/status/cwusdc-etherscan-value-propagation-latest.json` and related report output. | Read-only; useful after provider submissions or indexing changes. |
|
||||
|
||||
## Public Probe Commands
|
||||
|
||||
Use these only for quick spot checks; the wrapper scripts above are preferred because they write evidence files.
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://api.coingecko.com/api/v3/simple/token_price/ethereum?contract_addresses=0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a&vs_currencies=usd&include_market_cap=true&include_24hr_vol=true' | jq
|
||||
|
||||
curl -fsS 'https://api.dexscreener.com/token-pairs/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a' | jq
|
||||
|
||||
curl -fsS 'https://api.dexscreener.com/tokens/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a' | jq
|
||||
|
||||
curl -fsS 'https://api.geckoterminal.com/api/v2/networks/eth/pools/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3' | jq
|
||||
|
||||
curl -fsS 'https://api.geckoterminal.com/api/v2/networks/eth/pools/0xc28706f899266b36bc43cc072b3a921bdf2c48d9' | jq
|
||||
```
|
||||
|
||||
## Tasks Excluded From This Non-Manual List
|
||||
|
||||
These still require manual or external intervention:
|
||||
|
||||
| Excluded task | Reason |
|
||||
|---|---|
|
||||
| Submit Etherscan token profile/logo/social update | Requires authenticated Etherscan account and Etherscan review. |
|
||||
| Submit CoinGecko listing/update | Requires CoinGecko form/support flow and provider review. |
|
||||
| Submit CoinMarketCap listing/update | Requires CMC form/support flow and provider review. |
|
||||
| Submit DexScreener paid/profile/update flow | Requires DexScreener provider flow or marketplace action. |
|
||||
| Capture wallet screenshots | Requires wallet UI interaction. |
|
||||
| Add liquidity, swap, bridge, mint, approve, or rebalance | Broadcasts transactions or moves funds; operator approval required. |
|
||||
| Attach UCC, Euroclear, custodian, exchange, or counterparty records | Requires off-repo authenticated evidence sources. |
|
||||
| Bind non-EVM wallets/assets/minimum funding targets | Requires operator confirmation and network-specific custody data. |
|
||||
|
||||
## Maintenance Rule
|
||||
|
||||
After any non-manual run, update or review:
|
||||
|
||||
- [metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md)
|
||||
- [CWUSDC_PROVIDER_SUBMISSION_PACKET.md](CWUSDC_PROVIDER_SUBMISSION_PACKET.md)
|
||||
- [RESERVE_VERIFICATION_EVIDENCE_INDEX.md](RESERVE_VERIFICATION_EVIDENCE_INDEX.md)
|
||||
- `reports/status/cwusdc-provider-handoff-latest.md`
|
||||
- `docs/04-configuration/etherscan/CWUSDC_EVIDENCE_BUNDLE_INDEX.md`
|
||||
- `docs/04-configuration/etherscan/CWUSDC_PROVIDER_RESPONSE_TRACKER.md`
|
||||
|
||||
Do not mark external provider work as `accepted` until the public provider page/API confirms acceptance.
|
||||
|
||||
## Last Completion Run
|
||||
|
||||
Completed on 2026-05-11:
|
||||
|
||||
```bash
|
||||
pnpm cwusdc:provider-checks
|
||||
pnpm cwusdc:provider-ci
|
||||
python3 scripts/verify/generate-cwusdc-supply-circulating-attestation.py
|
||||
python3 scripts/verify/generate-global-cusdc-cwusdc-family-supply-proof.py
|
||||
python3 scripts/verify/monitor-cwusdc-etherscan-value-propagation.py
|
||||
pnpm cwusdc:etherscan-dossier
|
||||
```
|
||||
|
||||
All repo-safe commands completed. Remaining blockers require external provider indexing/review or operator-bound non-EVM/funding data.
|
||||
@@ -0,0 +1,33 @@
|
||||
# cWUSDC Operator-Safe Provider Checklist
|
||||
|
||||
Status: repo-side checklist for improving the cWUSDC / Chain 138 provider posture without submitting external forms, moving funds, approving tokens, swapping, bridging, or broadcasting transactions.
|
||||
|
||||
## Repo-Doable Now
|
||||
|
||||
| Task | Command / artifact | Output |
|
||||
|---|---|---|
|
||||
| Refresh provider CI | `pnpm cwusdc:provider-ci` | `reports/status/cwusdc-provider-readiness-ci-latest.*` |
|
||||
| Refresh provider monitor snapshot | `pnpm cwusdc:provider-monitor` | `reports/status/cwusdc-provider-monitoring-snapshot-latest.*` |
|
||||
| Build provider submission prefill | `pnpm cwusdc:submission-prefill` | `reports/status/cwusdc-provider-submission-prefill-latest.*` |
|
||||
| Build external packet index | `pnpm provider:submission-index` | `docs/04-configuration/EXTERNAL_SUBMISSION_PACKET_INDEX.md` |
|
||||
| Build CMC top-10 coverage | `pnpm ecosystem:cmc-top10` | `docs/04-configuration/CMC_TOP10_ECOSYSTEM_ACCESSIBILITY_MATRIX.md` |
|
||||
| Build non-EVM requirement stubs | `pnpm non-evm:requirements` | `config/non-evm-lane-requirements.json` |
|
||||
| Check CMC-shaped report sanity | `pnpm provider:cmc-sanity` | `reports/status/cmc-provider-report-sanity-latest.*` |
|
||||
|
||||
## External Or Operator-Bound
|
||||
|
||||
| Task | Boundary |
|
||||
|---|---|
|
||||
| Etherscan profile approval | Requires Etherscan review and acceptance. |
|
||||
| CoinGecko price API entry | Requires CoinGecko listing/indexing acceptance. |
|
||||
| CoinMarketCap full token profile/value | Requires CMC review/indexing acceptance. |
|
||||
| DexScreener pair indexing/profile | Requires DexScreener indexing/profile acceptance. |
|
||||
| Market-depth or peg claim | Requires real quote-side liquidity, fresh public events, and truthful caveats. |
|
||||
| Non-EVM production liquidity claim | Requires canonical wallets, asset IDs, gas/reserve targets, venue evidence, and funding policy closure. |
|
||||
|
||||
## Claim Discipline
|
||||
|
||||
- Use `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` for Mainnet cWUSDC provider work.
|
||||
- Keep Chain 138 cUSDC evidence as provenance/system-of-record context, not as Ethereum Mainnet cWUSDC supply.
|
||||
- Do not describe cWUSDC as Circle-issued USDC.
|
||||
- Treat repo reports as submission evidence until a provider visibly accepts the asset.
|
||||
135
docs/04-configuration/CWUSDC_PROVIDER_SUBMISSION_PACKET.md
Normal file
135
docs/04-configuration/CWUSDC_PROVIDER_SUBMISSION_PACKET.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# cWUSDC Provider Submission Packet
|
||||
|
||||
Status: consolidated cross-provider packet for Ethereum Mainnet `cWUSDC`. Use provider-specific packets for final form fields, but keep this file as the shared narrative and evidence source.
|
||||
|
||||
## Asset Identity
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Network | Ethereum Mainnet |
|
||||
| Chain ID / CAIP-2 | `1` / `eip155:1` |
|
||||
| Contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| CAIP-19 | `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Token name | `Wrapped cUSDC` |
|
||||
| Symbol | `cWUSDC` |
|
||||
| Decimals | `6` |
|
||||
| Asset class | Compliant wrapped public-network transport representation |
|
||||
| Canonical source asset | Chain 138 `cUSDC` |
|
||||
| Source asset address | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
|
||||
|
||||
## Provider Description
|
||||
|
||||
Use this for Etherscan, CoinGecko, CMC, wallet registries, and support tickets:
|
||||
|
||||
```text
|
||||
cWUSDC is the Ethereum Mainnet compliant wrapped transport representation of Chain 138 cUSDC in the DBIS GRU asset family. It is used for public-network mirrored settlement, proof, and interoperability workflows. cWUSDC is a DBIS/GRU transport asset and should not be presented as official Circle-issued USDC.
|
||||
```
|
||||
|
||||
Short version:
|
||||
|
||||
```text
|
||||
cWUSDC is a DBIS/GRU compliant wrapped transport representation of canonical Chain 138 cUSDC on Ethereum Mainnet.
|
||||
```
|
||||
|
||||
## Submission Boundaries
|
||||
|
||||
| Boundary | Required wording |
|
||||
|---|---|
|
||||
| Official issuer status | cWUSDC is not Circle-issued USDC. |
|
||||
| Source-chain relationship | Chain 138 `cUSDC` is the canonical source asset. |
|
||||
| Public-chain role | Ethereum Mainnet `cWUSDC` is the wrapped transport and proof surface. |
|
||||
| Price display | Fiat price display depends on external provider acceptance. |
|
||||
| Liquidity | Public pools are supporting evidence only when indexed and sufficiently liquid. |
|
||||
| Supply | Submit exact total supply and any provider-requested circulating-supply exclusions. |
|
||||
|
||||
## Evidence Links
|
||||
|
||||
| Evidence | Location |
|
||||
|---|---|
|
||||
| Evidence bundle index | [etherscan/CWUSDC_EVIDENCE_BUNDLE_INDEX.md](etherscan/CWUSDC_EVIDENCE_BUNDLE_INDEX.md) |
|
||||
| Supply/circulating methodology | [etherscan/CWUSDC_SUPPLY_AND_CIRCULATING_METHODOLOGY.md](etherscan/CWUSDC_SUPPLY_AND_CIRCULATING_METHODOLOGY.md) |
|
||||
| Security and audit disclosure | [etherscan/CWUSDC_SECURITY_AND_AUDIT_DISCLOSURE.md](etherscan/CWUSDC_SECURITY_AND_AUDIT_DISCLOSURE.md) |
|
||||
| Provider response tracker | [etherscan/CWUSDC_PROVIDER_RESPONSE_TRACKER.md](etherscan/CWUSDC_PROVIDER_RESPONSE_TRACKER.md) |
|
||||
| Liquidity readiness plan | [etherscan/CWUSDC_LIQUIDITY_READINESS_NO_BROADCAST_PLAN.md](etherscan/CWUSDC_LIQUIDITY_READINESS_NO_BROADCAST_PLAN.md) |
|
||||
| Etherscan token page | `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Provider submission prefill | `reports/status/cwusdc-provider-submission-prefill-latest.md` |
|
||||
| Screenshot capture checklist | `reports/status/cwusdc-provider-submission-prefill-latest.md` |
|
||||
| Provider monitoring snapshot | `reports/status/cwusdc-provider-monitoring-snapshot-latest.md` |
|
||||
| Token logo | `https://explorer.d-bis.org/api/v1/report/logo/cUSDC` |
|
||||
| CoinGecko report | `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1` |
|
||||
| CMC report | `https://explorer.d-bis.org/api/v1/report/cmc?chainId=1` |
|
||||
| All report | `https://explorer.d-bis.org/api/v1/report/all` |
|
||||
| Etherscan profile packet | [etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md](etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md) |
|
||||
| Tracker packet | [coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md](coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md) |
|
||||
| Etherscan E2E recommendations | [etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md](etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md) |
|
||||
| Provider matrix | [metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md) (incl. Money / mUSD ↔ hub `cUSDC` / `cUSDC_V2` and Mainnet `cWUSDC` narrative) |
|
||||
| Reserve evidence index | [RESERVE_VERIFICATION_EVIDENCE_INDEX.md](RESERVE_VERIFICATION_EVIDENCE_INDEX.md) |
|
||||
|
||||
## Provider-Specific Notes
|
||||
|
||||
| Provider | Submit / emphasize |
|
||||
|---|---|
|
||||
| Etherscan | Contract, logo, website, description, verified source, non-Circle disclosure. |
|
||||
| CoinGecko | Contract, supply proof, logo, website, LP evidence, liquidity caveats, non-affiliation disclosure. |
|
||||
| CMC | Same as CoinGecko plus CMC DEX discoverability if applicable. |
|
||||
| MetaMask | EIP-747 can refresh custom-asset metadata; native fiat value requires provider-side price acceptance. |
|
||||
| DexScreener / GeckoTerminal | Indexed pair URLs, logo/profile links, and liquidity caveats. |
|
||||
| Wallet registries | Exact CAIP-19 asset ID, logo, name, symbol, decimals, and non-affiliation disclosure. |
|
||||
|
||||
## Incident Response and Escalation
|
||||
|
||||
Use these contacts for provider and reviewer escalation:
|
||||
|
||||
| Purpose | Contact / URL |
|
||||
|---|---|
|
||||
| Provider submissions | `submissions@d-bis.org` |
|
||||
| User support | `support@d-bis.org` |
|
||||
| Security / responsible disclosure | `https://d-bis.org/security` |
|
||||
| General contact | `https://d-bis.org/contact` |
|
||||
| Trust metadata | `https://d-bis.org/.well-known/trust.json` |
|
||||
|
||||
Provider-facing incident language:
|
||||
|
||||
```text
|
||||
For token metadata, supply, market-data, or security questions related to Ethereum Mainnet cWUSDC, contact submissions@d-bis.org. For security concerns, use the DBIS security page and responsible-disclosure route at https://d-bis.org/security.
|
||||
```
|
||||
|
||||
## Submission Checklist
|
||||
|
||||
- [x] Exact Ethereum Mainnet contract address.
|
||||
- [x] CAIP-19 asset ID.
|
||||
- [x] Name, symbol, decimals.
|
||||
- [x] Chain 138 source-asset relationship.
|
||||
- [x] Non-Circle disclosure.
|
||||
- [x] Logo URL.
|
||||
- [x] Etherscan profile packet.
|
||||
- [x] CoinGecko/CMC report endpoints.
|
||||
- [x] Supply proof pointer.
|
||||
- [x] Liquidity caveat.
|
||||
- [ ] External Etherscan profile accepted.
|
||||
- [ ] External CoinGecko listing accepted.
|
||||
- [ ] External CMC listing accepted.
|
||||
- [ ] MetaMask provider-side price visible.
|
||||
- [ ] DexScreener token/pair profile accepted.
|
||||
- [ ] GeckoTerminal profile evidence captured.
|
||||
|
||||
## Follow-Up Evidence
|
||||
|
||||
After each submission, add a dated report under `reports/status/` with:
|
||||
|
||||
- provider name;
|
||||
- submission date;
|
||||
- account or contact used;
|
||||
- ticket, PR, issue, or form confirmation ID;
|
||||
- exact submitted URLs and contract address;
|
||||
- provider response;
|
||||
- public profile URL or screenshot when accepted;
|
||||
- rejection reason or blocker when blocked;
|
||||
- next action and owner.
|
||||
|
||||
## Canonical References
|
||||
|
||||
- [GRU_PROVIDER_POSITIONING_PACKET.md](GRU_PROVIDER_POSITIONING_PACKET.md)
|
||||
- [GRU_RISK_AND_DISCLOSURE_LANGUAGE.md](GRU_RISK_AND_DISCLOSURE_LANGUAGE.md)
|
||||
- [GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md](GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md)
|
||||
- [etherscan/CWUSDC_EVIDENCE_BUNDLE_INDEX.md](etherscan/CWUSDC_EVIDENCE_BUNDLE_INDEX.md)
|
||||
@@ -10,7 +10,7 @@
|
||||
Create a repeatable path where:
|
||||
|
||||
1. Devin lands code in Gitea.
|
||||
2. Gitea Actions validates the repo on the site-wide `act_runner`.
|
||||
2. Gitea Actions validates the repo on **`act_runner`** (**`ubuntu-latest-heavy`** → CT **5700** `dev-vm`; lighter repos may use **`ubuntu-latest`** on CT **5701**).
|
||||
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.
|
||||
@@ -63,7 +63,7 @@ The deploy and PR workflows both fetch `origin/main` and `origin/master` before
|
||||
```text
|
||||
Devin
|
||||
-> push to Gitea
|
||||
-> Gitea Actions on act_runner (5700)
|
||||
-> Gitea Actions on act_runner (heavy pool: 5700; standard pool: 5701)
|
||||
-> bash scripts/verify/run-all-validation.sh --skip-genesis
|
||||
-> validates deploy-targets.json structure
|
||||
-> POST /api/deploy to phoenix-deploy-api
|
||||
|
||||
@@ -117,13 +117,22 @@ bash scripts/create-dev-vm-5700.sh
|
||||
|
||||
From your workstation (where `/home/intlc/projects` exists):
|
||||
|
||||
```bash
|
||||
# Recommended: preserves .git, excludes heavy artifacts (see script header).
|
||||
cd ~/projects/proxmox
|
||||
./scripts/deployment/sync-local-projects-to-dev-vm.sh --dry-run
|
||||
./scripts/deployment/sync-local-projects-to-dev-vm.sh
|
||||
```
|
||||
|
||||
Full cutover steps (Cursor Remote-SSH, secrets, checklist): [DEV_VM_WORKSTATION_MIGRATION_RUNBOOK.md](DEV_VM_WORKSTATION_MIGRATION_RUNBOOK.md).
|
||||
|
||||
Legacy one-liner (drops `.git` — only for disposable trees):
|
||||
|
||||
```bash
|
||||
rsync -avz --exclude='.git' --exclude='node_modules' \
|
||||
/home/intlc/projects/ dev1@192.168.11.59:/srv/projects/
|
||||
```
|
||||
|
||||
Then on the dev VM, for each project: `git init` (if not already), add Gitea remote, push.
|
||||
|
||||
---
|
||||
|
||||
## 9. Security and Access
|
||||
|
||||
183
docs/04-configuration/DEV_VM_WORKSTATION_MIGRATION_RUNBOOK.md
Normal file
183
docs/04-configuration/DEV_VM_WORKSTATION_MIGRATION_RUNBOOK.md
Normal file
@@ -0,0 +1,183 @@
|
||||
# Workstation → Dev VM migration (shared SSH development)
|
||||
|
||||
**Purpose:** Move canonical day-to-day development from **`~/projects` on a laptop/WSL box** to **LXC 5700 (Dev VM, `192.168.11.59`)** under **`/srv/projects`**, so all contributors and tooling use the **same tree** over **SSH** (including Cursor Remote-SSH).
|
||||
|
||||
**Canonical references:** [DEV_VM_GITOPS_PLAN.md](DEV_VM_GITOPS_PLAN.md), [DEV_VM_SSH_REMOTE_ACCESS.md](DEV_VM_SSH_REMOTE_ACCESS.md), `scripts/create-dev-vm-5700.sh`, `scripts/setup-dev-vm-users-and-gitea.sh`.
|
||||
|
||||
---
|
||||
|
||||
## 1. What moves vs what stays local
|
||||
|
||||
| Item | Where it runs |
|
||||
|------|----------------|
|
||||
| **Source tree, builds, tests, Git** | **Dev VM** `/srv/projects` (after migration) |
|
||||
| **Cursor / IDE UI** | Your laptop — connect with **Remote-SSH** to the Dev VM (code executes on 5700) |
|
||||
| **Proxmox host shell** (`pct`, `qm`) | **SSH to the node** that runs CT 5700 (see `DEV_VM_SSH_REMOTE_ACCESS.md` — 5700 may live on **r630-04**, not r630-01) |
|
||||
|
||||
Pyright/Cursor language services then analyze files **on the Dev VM** when you use Remote-SSH, which also reduces “huge local monorepo” indexing on WSL.
|
||||
|
||||
---
|
||||
|
||||
## 2. Preconditions
|
||||
|
||||
1. **CT 5700** exists, is started, **`sshd` reachable:**
|
||||
`ssh -o ConnectTimeout=5 "${DEV_VM_USER:-dev1}@${IP_DEV_VM:-192.168.11.59}" pwd`
|
||||
2. **`/srv/projects`** exists and is writable by your dev user (group `dev` or ACLs per setup script).
|
||||
3. **SSH key** for that user is loaded (`ssh-add -l`).
|
||||
4. **Network:** Choose one path:
|
||||
- **LAN / VPN:** `192.168.11.59:22` (same as `IP_DEV_VM`).
|
||||
- **Cloudflare Tunnel + Access (FQDN):** **`ssh.dev.d-bis.org`** — does **not** work as plain `ssh user@ssh.dev.d-bis.org` to port 22 through the public proxy; use **`cloudflared access ssh`** (see below and [DEV_VM_SSH_REMOTE_ACCESS.md](DEV_VM_SSH_REMOTE_ACCESS.md)).
|
||||
- **UDM WAN forward:** e.g. **`76.53.10.40:22` → `192.168.11.59:22`** (restrict by allowlist) — then SSH to the **public IP/hostname** on port 22, not the Cloudflare tunnel hostname.
|
||||
|
||||
### 2.1 Probes (copy/paste)
|
||||
|
||||
**LAN (works when this workstation is on VLAN 11 / VPN to `192.168.11.0/24`):**
|
||||
|
||||
```bash
|
||||
ssh -o BatchMode=yes -o ConnectTimeout=8 dev1@192.168.11.59 true && echo OK
|
||||
```
|
||||
|
||||
**FQDN via Cloudflare Access (requires `cloudflared` on PATH + policy / service token):**
|
||||
|
||||
```bash
|
||||
ssh -o BatchMode=yes -o ConnectTimeout=25 \
|
||||
-o ProxyCommand="cloudflared access ssh --hostname %h" \
|
||||
dev1@ssh.dev.d-bis.org true && echo OK
|
||||
```
|
||||
|
||||
**All-in-one script (from repo root):**
|
||||
|
||||
```bash
|
||||
./scripts/deployment/probe-dev-vm-ssh.sh
|
||||
```
|
||||
|
||||
**Note:** A plain `ssh dev1@ssh.dev.d-bis.org` without `ProxyCommand` typically **times out** or errors: the hostname resolves to **Cloudflare anycast**, not a raw open `:22` on the public Internet. That is expected for tunnel-routed SSH.
|
||||
|
||||
### 2.2 Install `cloudflared` on the workstation (for FQDN SSH / rsync)
|
||||
|
||||
```bash
|
||||
mkdir -p ~/bin
|
||||
ARCH=$(uname -m); case "$ARCH" in x86_64) CF_ARCH=amd64;; aarch64|arm64) CF_ARCH=arm64;; *) CF_ARCH=amd64;; esac
|
||||
curl -fsSL "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-${CF_ARCH}" -o ~/bin/cloudflared
|
||||
chmod +x ~/bin/cloudflared
|
||||
export PATH="$HOME/bin:$PATH"
|
||||
```
|
||||
|
||||
Then configure **Cloudflare Access** (browser login or `CF_ACCESS_CLIENT_ID` / `CF_ACCESS_CLIENT_SECRET` per [DEV_VM_SSH_REMOTE_ACCESS.md](DEV_VM_SSH_REMOTE_ACCESS.md)). A **TLS handshake failure** from `cloudflared access ssh` usually means missing or invalid Access credentials.
|
||||
|
||||
---
|
||||
|
||||
## 3. One-time: create or verify the Dev VM
|
||||
|
||||
From repo root (operator machine with SSH to a Proxmox node):
|
||||
|
||||
```bash
|
||||
bash scripts/create-dev-vm-5700.sh --dry-run # optional
|
||||
bash scripts/create-dev-vm-5700.sh
|
||||
```
|
||||
|
||||
Inside **5700** (or via `pct exec 5700 -- …`):
|
||||
|
||||
```bash
|
||||
bash /path/to/proxmox/scripts/setup-dev-vm-users-and-gitea.sh
|
||||
```
|
||||
|
||||
Add **all** developers’ public keys to `dev1`–`dev4` (or your chosen accounts).
|
||||
|
||||
---
|
||||
|
||||
## 4. Sync `~/projects` → `/srv/projects` (first migration)
|
||||
|
||||
**Default** source is **`~/projects`** (matches `~/projects` on WSL when `HOME` is `/home/intlc`).
|
||||
|
||||
Dry-run:
|
||||
|
||||
```bash
|
||||
cd ~/projects/proxmox
|
||||
./scripts/deployment/sync-local-projects-to-dev-vm.sh --dry-run
|
||||
```
|
||||
|
||||
Live sync (**default: no remote deletes** — safe for first migration; remote-only trees like `the_order` are kept):
|
||||
|
||||
```bash
|
||||
./scripts/deployment/sync-local-projects-to-dev-vm.sh
|
||||
```
|
||||
|
||||
**Mirror** the workstation onto the VM (removes remote files not present locally — use only after review):
|
||||
|
||||
```bash
|
||||
./scripts/deployment/sync-local-projects-to-dev-vm.sh --delete-remote
|
||||
```
|
||||
|
||||
**Over Cloudflare Access SSH** (requires `cloudflared` + Access policy / service token; set hostname to the tunnel FQDN):
|
||||
|
||||
```bash
|
||||
export PATH="$HOME/bin:$PATH"
|
||||
export RSYNC_RSH='ssh -o BatchMode=yes -o ConnectTimeout=30 -o ProxyCommand="cloudflared access ssh --hostname ssh.dev.d-bis.org"'
|
||||
export DEV_VM_HOST=ssh.dev.d-bis.org
|
||||
cd ~/projects/proxmox
|
||||
./scripts/deployment/sync-local-projects-to-dev-vm.sh --dry-run
|
||||
```
|
||||
|
||||
Environment overrides:
|
||||
|
||||
```bash
|
||||
SOURCE=/home/intlc/projects DEV_VM_USER=dev1 ./scripts/deployment/sync-local-projects-to-dev-vm.sh
|
||||
```
|
||||
|
||||
**Behavior:**
|
||||
|
||||
- **Preserves `.git`** (full migration with history).
|
||||
- **Excludes** `node_modules`, Python venvs, typical build outputs, and by default **`MEV_Bot`** and **`the-order`** (large trees). Set `SKIP_LARGE_LOCAL_TREES=0` to include them.
|
||||
- **Without `--delete-remote`**, rsync does **not** delete extra files on the Dev VM (recommended first pass).
|
||||
|
||||
**Secrets:** `.env` files may sync; on the Dev VM run `chmod 600 .env` (and siblings). Prefer **Gitea + CI secrets** for long-term; do not commit `.env`.
|
||||
|
||||
---
|
||||
|
||||
## 5. Cursor: use Remote-SSH from now on
|
||||
|
||||
1. Install **Remote - SSH** (built into Cursor).
|
||||
2. **SSH config** (`~/.ssh/config` on the laptop), example:
|
||||
|
||||
```sshconfig
|
||||
Host dev-vm
|
||||
HostName 192.168.11.59
|
||||
User dev1
|
||||
ForwardAgent yes
|
||||
```
|
||||
|
||||
If you use **Cloudflare Access SSH**, follow [DEV_VM_SSH_REMOTE_ACCESS.md](DEV_VM_SSH_REMOTE_ACCESS.md) for `ProxyCommand` / `cloudflared`.
|
||||
|
||||
3. **Connect:** `Cursor` → **Remote-SSH** → **dev-vm** → open folder **`/srv/projects/proxmox`** (or the monorepo root you need).
|
||||
|
||||
4. **Terminal inside Cursor** will be **on 5700** — that is the intended “single place” for `git`, `pnpm`, `forge`, and operator scripts that need LAN RPC.
|
||||
|
||||
---
|
||||
|
||||
## 6. Git coordination (recommended)
|
||||
|
||||
After the first sync:
|
||||
|
||||
1. Ensure **Gitea** on the Dev VM (or cluster) holds the **authoritative** remotes ([DEV_VM_GITOPS_PLAN.md](DEV_VM_GITOPS_PLAN.md) §6).
|
||||
2. On the Dev VM: `git remote -v` in each repo; push **`main`** (or default branch) to Gitea.
|
||||
3. **Stop** using the old WSL tree for shared work, or treat it as **read-only archive** after cutover to avoid drift.
|
||||
|
||||
---
|
||||
|
||||
## 7. Cutover checklist
|
||||
|
||||
- [ ] 5700 running; `ssh dev1@192.168.11.59` works.
|
||||
- [ ] `/srv/projects` ready and backed up if it already had content.
|
||||
- [ ] `sync-local-projects-to-dev-vm.sh --dry-run` reviewed.
|
||||
- [ ] Full sync completed; large dirs (`SKIP_LARGE_LOCAL_TREES`) decided.
|
||||
- [ ] Remote `.env` permissions fixed; no secrets committed.
|
||||
- [ ] Cursor Remote-SSH opens `/srv/projects/proxmox` successfully.
|
||||
- [ ] `pnpm install` / `forge` smoke test on Dev VM for critical packages.
|
||||
- [ ] Team notified: **canonical path = Dev VM `/srv/projects`**.
|
||||
|
||||
---
|
||||
|
||||
## 8. Rollback
|
||||
|
||||
Keep the original **`~/projects`** tree until the team confirms the Dev VM workflow. Rollback = continue editing locally; no automatic deletion of the workstation copy is performed by the sync script.
|
||||
@@ -62,11 +62,17 @@
|
||||
|
||||
To verify a contract from the explorer when automated verification is unavailable or returns 502:
|
||||
|
||||
1. Open **https://explorer.d-bis.org/address/<CONTRACT_ADDRESS>**
|
||||
1. Open **https://explorer.d-bis.org/addresses/<CONTRACT_ADDRESS>**
|
||||
2. Go to the **Contract** tab → **Verify & Publish**
|
||||
3. Choose method: **Via Standard JSON Input** (recommended), **Via Sourcify**, or **Via Multi-file**
|
||||
4. Upload source (or paste) and provide constructor arguments if needed; submit.
|
||||
|
||||
**If you see no “Verify & Publish” (or no contract-verification controls) on the address page:** the hostname may be serving the **custom explorer SPA** only, which does not embed every Blockscout screen. Use one of these instead:
|
||||
|
||||
- **Forge (recommended):** `source scripts/lib/load-project-env.sh` then `./scripts/verify/run-contract-verification-with-proxy.sh` (submits to Blockscout via the local proxy; no explorer form required).
|
||||
- **Native Blockscout (LAN):** open **`http://192.168.11.140:4000`** (VM Blockscout) and use the instance’s **contract verification** entry (in many Blockscout versions: **Other → Verify contract**, or the **Code / contract** area on the address page — labels vary by release).
|
||||
- **Cronos:** manual UI is always at **`https://explorer.cronos.org/verifyContract`** (separate stack).
|
||||
|
||||
See [08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md) for Forge/proxy batch verification and troubleshooting (502, HTML response).
|
||||
|
||||
### 3.3 Recommendations
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
**Purpose:** All compliant (c*) tokens listed on [https://explorer.d-bis.org/tokens](https://explorer.d-bis.org/tokens) must be part of the GRU (Global Reserve Unit) — i.e. registered in `UniversalAssetRegistry` as `AssetType.GRU`.
|
||||
|
||||
Provider-facing language for explaining GRU, Chain 138, c*, and cW* assets lives in [GRU_PROVIDER_POSITIONING_PACKET.md](GRU_PROVIDER_POSITIONING_PACKET.md), with reserve-layer details in [GRU_RESERVE_LAYER_EXPLAINER.md](GRU_RESERVE_LAYER_EXPLAINER.md) and disclosure language in [GRU_RISK_AND_DISCLOSURE_LANGUAGE.md](GRU_RISK_AND_DISCLOSURE_LANGUAGE.md).
|
||||
|
||||
## Policy
|
||||
|
||||
1. **Token lists**
|
||||
|
||||
17
docs/04-configuration/EXTERNAL_SUBMISSION_PACKET_INDEX.md
Normal file
17
docs/04-configuration/EXTERNAL_SUBMISSION_PACKET_INDEX.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# External Submission Packet Index
|
||||
|
||||
- Generated: `2026-05-11T22:35:29.997089+00:00`
|
||||
- All artifacts present: `True`
|
||||
|
||||
| Provider | Status | Primary packet | Supporting artifacts | Next repo action |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Etherscan | repo_ready_external_acceptance_pending | `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` (True) | `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md` (True)<br>`docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_VALUE_EXECUTION_PLAN.md` (True)<br>`reports/status/cwusdc-etherscan-value-dossier-latest.json` (True) | Refresh dossier and capture post-submit response evidence. |
|
||||
| CoinGecko | repo_ready_external_price_entry_missing | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` (True) | `docs/04-configuration/coingecko/CWUSDC_MAINNET_EXTERNAL_SUBMISSION_CHECKLIST.md` (True)<br>`docs/04-configuration/coingecko/submissions/cwusdc-coingecko-listing-request-20260509.json` (True)<br>`reports/status/cwusdc-external-trackers-live-latest.json` (True) | Keep token-price API blocker visible and attach current supply/liquidity caveats. |
|
||||
| CoinMarketCap | dex_page_visible_full_value_acceptance_pending | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` (True) | `reports/status/token-aggregation-cmc-report-chain1-latest.json` (True)<br>`reports/status/cmc-provider-report-sanity-latest.json` (True)<br>`reports/status/cmc-top10-ecosystem-coverage-latest.json` (True) | Use CMC sanity report to avoid overclaiming liquidity or quote-asset identity. |
|
||||
| DexScreener | api_not_indexing_pairs | `docs/04-configuration/dexscreener/CWUSDC_DEXSCREENER_INDEXING_AND_PROFILE_PACKET_20260509.md` (True) | `reports/status/cwusdc-external-trackers-live-latest.json` (True)<br>`reports/status/cwusdc-provider-handoff-latest.md` (True) | Keep pair/profile request evidence updated after fresh public swap/liquidity events. |
|
||||
| GeckoTerminal | pool_api_visible_low_reserve | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` (True) | `reports/status/cwusdc-external-trackers-live-latest.json` (True)<br>`reports/status/cmc-provider-report-sanity-latest.json` (True) | Track reserve USD and 24h volume separately from listing acceptance. |
|
||||
| MetaMask | metadata_path_ready_price_provider_external | `docs/04-configuration/metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md` (True) | `docs/04-configuration/metamask/METAMASK_EIP747_CONTRACT_METADATA_REFERENCE_PACKET.md` (True)<br>`docs/04-configuration/metamask/METAMASK_CWUSDC_API_FEED_SPIDER_WEB_RESEARCH.md` (True)<br>`reports/status/cwusdc-provider-readiness-ci-latest.json` (True) | Keep CAIP-19, EIP-747, logo URL, and external price-provider blockers aligned. |
|
||||
|
||||
## Boundary
|
||||
|
||||
This index tracks repo-side evidence availability only. Provider submission, review, acceptance, and price propagation remain external states.
|
||||
@@ -1,102 +1,133 @@
|
||||
# Gitea act_runner Setup
|
||||
|
||||
**Last Updated:** 2026-03-27 (bootstrap script + `ubuntu-latest` labels)
|
||||
**Last Updated:** 2026-05-11
|
||||
**Gitea:** https://gitea.d-bis.org
|
||||
**Runner host:** dev-vm (VMID 5700) at 192.168.11.59 (Gitea HTTP on that host: port 3000)
|
||||
|
||||
**Which Proxmox node?** VMID 5700 is not fixed to one server—confirm before `pct exec`:
|
||||
## Runner layout (two pools)
|
||||
|
||||
| CT (VMID) | Hostname | Labels | Use |
|
||||
|-----------|----------|--------|-----|
|
||||
| **5700** | `dev-vm` | **`ubuntu-latest-heavy`** | Heavy monorepo CI (`pnpm`, `run-all-validation`) — **proxmox** workflows use `runs-on: ubuntu-latest-heavy`. |
|
||||
| **5701** | `gitea-runner-1` | **`ubuntu-latest`**, **`ubuntu-22.04`**, **`ubuntu-20.04`** | Default pool for other repos / lighter workflows that keep `runs-on: ubuntu-latest`. |
|
||||
|
||||
Both CTs live on **r630-04** (`192.168.11.14`) as of live inventory; confirm before `pct exec`:
|
||||
|
||||
```bash
|
||||
ssh root@192.168.11.10 'pct list | grep 5700'
|
||||
ssh root@192.168.11.11 'pct list | grep 5700'
|
||||
ssh root@192.168.11.12 'pct list | grep 5700'
|
||||
ssh root@192.168.11.14 'pct list | grep -E "5700|5701"'
|
||||
```
|
||||
|
||||
Use the node where 5700 is **running** (often r630-02 / 192.168.11.12).
|
||||
**Gitea HTTP** on dev-vm: **`192.168.11.59:3000`** (from CT **5700**, same host as Gitea when Actions hit the LAN URL).
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
## Config templates (repo)
|
||||
|
||||
1. **Registration token** — Get from Gitea Admin → Actions → Runners:
|
||||
- https://gitea.d-bis.org/-/admin/actions/runners
|
||||
- Or org-level: https://gitea.d-bis.org/d-bis/settings/actions/runners
|
||||
Canonical **`act_runner`** YAML (Docker limits, `fetch_interval`, labels):
|
||||
|
||||
2. **Docker** (optional but recommended) — For running jobs in isolated containers. Install on dev-vm if not present.
|
||||
- `config/gitea-act-runner/config-5700-heavy.yaml`
|
||||
- `config/gitea-act-runner/config-5701-standard.yaml`
|
||||
|
||||
Deploy to both CTs and restart daemons (LAN, repo root):
|
||||
|
||||
```bash
|
||||
bash scripts/dev-vm/apply-act-runner-config.sh
|
||||
```
|
||||
|
||||
Job containers use **bridge** networking and **`privileged: false`** on both runners; resource caps differ by design (**5700**: 4 CPU / 10 GiB RAM; **5701**: 2 CPU / 4 GiB RAM).
|
||||
|
||||
---
|
||||
|
||||
## Install act_runner
|
||||
## Register or re-register runners
|
||||
|
||||
### Site-wide (admin API token, recommended)
|
||||
Requires **`GITEA_TOKEN`** (admin) in **repo root** `.env**.
|
||||
|
||||
From the **proxmox** repo root, with **`GITEA_TOKEN`** (admin) in root `.env`:
|
||||
### Heavy pool (5700)
|
||||
|
||||
Default labels: **`ubuntu-latest-heavy:docker://docker.gitea.com/runner-images:ubuntu-latest`**
|
||||
|
||||
```bash
|
||||
bash scripts/dev-vm/bootstrap-gitea-act-runner-site-wide.sh
|
||||
```
|
||||
|
||||
This calls `GET /api/v1/admin/runners/registration-token`, registers **act_runner** on CT **5700** with label **`ubuntu-latest`** (daemon shows `ubuntu-latest:host`, which matches workflow `runs-on: ubuntu-latest`), installs **systemd**, and starts the service. To re-register (e.g. change labels), run with `RUNNER_FORCE_REREGISTER=1`.
|
||||
|
||||
### Manual registration token
|
||||
To pick up new labels after changing Docker image tokens in Gitea:
|
||||
|
||||
```bash
|
||||
# From repo root; replace <proxmox> with the node that hosts 5700 (e.g. 192.168.11.12):
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN=<token> ssh root@<proxmox> "pct exec 5700 -- bash -s" < scripts/dev-vm/setup-act-runner.sh
|
||||
RUNNER_FORCE_REREGISTER=1 bash scripts/dev-vm/bootstrap-gitea-act-runner-site-wide.sh
|
||||
```
|
||||
|
||||
Or SSH into dev-vm (192.168.11.59) and run manually:
|
||||
### Standard pool (5701)
|
||||
|
||||
Registers **`ubuntu-latest`** + **`ubuntu-22.04`** + **`ubuntu-20.04`** against `http://IP_DEV_VM:3000`:
|
||||
|
||||
```bash
|
||||
cd /opt/act_runner
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN=<token> bash /path/to/setup-act-runner.sh
|
||||
bash scripts/dev-vm/bootstrap-gitea-act-runner-secondary-lan.sh
|
||||
```
|
||||
|
||||
**Instance URL for `register`:** From inside dev-vm, Gitea is usually reachable as `http://127.0.0.1:3000` (same host). The setup script defaults to `http://192.168.11.59:3000`; override if needed:
|
||||
Re-register:
|
||||
|
||||
```bash
|
||||
INSTANCE=http://127.0.0.1:3000 GITEA_RUNNER_REGISTRATION_TOKEN=<token> bash setup-act-runner.sh
|
||||
RUNNER_FORCE_REREGISTER=1 bash scripts/dev-vm/bootstrap-gitea-act-runner-secondary-lan.sh
|
||||
```
|
||||
|
||||
Low-level script (custom VMID / labels / instance URL):
|
||||
|
||||
```bash
|
||||
export DEV_VM_VMID=5701
|
||||
export GITEA_RUNNER_INSTANCE='http://192.168.11.59:3000'
|
||||
export RUNNER_LABELS='ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest'
|
||||
bash scripts/dev-vm/bootstrap-gitea-act-runner.sh
|
||||
```
|
||||
|
||||
After **`RUNNER_FORCE_REREGISTER=1`**, Gitea may show an **old offline runner** — remove the stale entry under **Admin → Actions → Runners** if desired.
|
||||
|
||||
---
|
||||
|
||||
## Systemd unit
|
||||
|
||||
The unit passes **`act_runner daemon -c /etc/act_runner/config.yaml`**. Install or refresh:
|
||||
|
||||
```bash
|
||||
ssh root@192.168.11.14 "pct exec 5700 -- env GITEA_ACTION_URL=http://127.0.0.1:3000 bash -s" < scripts/dev-vm/install-act-runner-systemd.sh
|
||||
ssh root@192.168.11.14 "pct exec 5701 -- env GITEA_ACTION_URL=http://192.168.11.59:3000 bash -s" < scripts/dev-vm/install-act-runner-systemd.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Run as systemd service
|
||||
## Workflows in **d-bis/proxmox**
|
||||
|
||||
Prefer the install script (writes the unit, enables and starts the service):
|
||||
Canonical validation/deploy workflows use **`runs-on: ubuntu-latest-heavy`** so jobs land on **5700**. Submodule copies under this repo (explorer-monorepo, cross-chain-pmm-lps, OMNIS) keep **`ubuntu-latest`** so they prefer the **5701** pool.
|
||||
|
||||
---
|
||||
|
||||
## Cache
|
||||
|
||||
Both runners keep **built-in Actions cache** enabled. Optional next step: point **`cache.external_server`** at a shared cache URL in both YAML files so npm/docker layers dedupe across runners (requires a reachable cache service).
|
||||
|
||||
---
|
||||
|
||||
## Monitoring (per-runner CPU)
|
||||
|
||||
Host **`loadavg` inside LXCs** tracks the **Proxmox node**, not the CT — do not use it to compare **5700** vs **5701**. While jobs run, prefer **`docker stats`** on the runner CT:
|
||||
|
||||
```bash
|
||||
ssh root@<proxmox> "pct exec 5700 -- bash -s" < scripts/dev-vm/install-act-runner-systemd.sh
|
||||
bash scripts/dev-vm/act-runner-resource-snapshot.sh
|
||||
```
|
||||
|
||||
Optional: if Gitea is not on localhost from the runner’s view, set `GITEA_ACTION_URL` (must match a URL the runner can reach):
|
||||
|
||||
```bash
|
||||
ssh root@<proxmox> "pct exec 5700 -- env GITEA_ACTION_URL=http://192.168.11.59:3000 bash -s" < scripts/dev-vm/install-act-runner-systemd.sh
|
||||
```
|
||||
|
||||
Manual unit (equivalent): `/etc/systemd/system/act-runner.service` with `Environment=GITEA_ACTION_URL=http://127.0.0.1:3000`, then `systemctl daemon-reload && systemctl enable --now act-runner`.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Symptom | Check |
|
||||
|--------|--------|
|
||||
| Jobs queued, never start | Gitea **Admin → Actions → Runners**: at least one runner **online**. Repo **Settings → Enable Repository Actions**. |
|
||||
| “No matching runner” / label errors | Workflow `runs-on:` must match runner labels (e.g. `ubuntu-latest`). In Gitea, open the runner details and compare labels. |
|
||||
| Runner exits / register errors | Ensure `INSTANCE` URL is reachable from the container (`curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3000/`). Re-register with a **new** token if the old one was rotated (remove `.runner` first, then run `setup-act-runner.sh` again). |
|
||||
| Docker steps fail | Install Docker on dev-vm and ensure the `act_runner` user (or root) can run `docker`. |
|
||||
| Binary but no service | If `/opt/act_runner/act_runner` exists but there is **no** `/opt/act_runner/.runner`, registration never completed—run `setup-act-runner.sh` with a token. If `.runner` exists but no unit, run `install-act-runner-systemd.sh`. |
|
||||
|
||||
---
|
||||
|
||||
## Enable Actions per repository
|
||||
|
||||
Repositories must enable Actions: Repository → Settings → Enable Repository Actions
|
||||
| Jobs queued, never start | **Admin → Actions → Runners**: at least one runner **online** with a label matching **`runs-on`**. Repo **Settings → Actions** enabled. |
|
||||
| “No matching runner” | Workflow **`runs-on`** must match a label on an online runner (`ubuntu-latest-heavy` vs `ubuntu-latest`). |
|
||||
| Old **offline** duplicate runners after re-register | Delete via Admin API or: **`bash scripts/dev-vm/delete-offline-gitea-actions-runners.sh --dry-run`** then **`--apply`** (needs **`GITEA_TOKEN`**). Not removable by SSH alone — Gitea stores runner rows in its DB. |
|
||||
| Runner exits / register errors | **`curl`** from the CT to **`GITEA_RUNNER_INSTANCE`**. Re-register with a fresh admin token after **`RUNNER_FORCE_REREGISTER=1`**. |
|
||||
| Docker steps fail | Docker installed on the CT; **`act_runner`** runs as **root** in the default unit. |
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- [Gitea Actions Quick Start](https://docs.gitea.com/usage/actions/quickstart)
|
||||
- [act_runner](https://gitea.com/gitea/act_runner)
|
||||
- [Gitea Actions Quick Start](https://docs.gitea.com/usage/actions/quickstart)
|
||||
- [act_runner](https://gitea.com/gitea/act_runner)
|
||||
|
||||
@@ -70,7 +70,11 @@ Request Let's Encrypt certificates in NPMplus UI for each domain, or use a wildc
|
||||
|
||||
- **502 Bad Gateway:** Ensure LXC 7804 is running and portals are built:
|
||||
`pct exec 7804 -- systemctl status gov-portal-DBIS gov-portal-ICCC gov-portal-OMNL gov-portal-XOM`
|
||||
- **Rebuild a portal:**
|
||||
`pct exec 7804 -- bash -c 'cd /srv/gov-portals/DBIS && pnpm run build && systemctl restart gov-portal-DBIS'`
|
||||
- **Rebuild a portal (after code change):** Prefer the repo script (git fetch + rsync + build on CT **7804** on r630-04):
|
||||
`bash scripts/deployment/sync-gov-portals-ct-7804-from-git.sh`
|
||||
Requires `GITEA_TOKEN` in project `.env` (or `export GITEA_TOKEN=…`). Use `--skip-fetch` to rebuild from an already-updated local `GOV_PORTALS_SOURCE` tree.
|
||||
Manual one-liner on the **Proxmox node that runs CT 7804** (default `root@192.168.11.14`):
|
||||
`pct exec 7804 -- bash -c 'cd /srv/gov-portals/DBIS && git pull origin main && pnpm install && pnpm run build && systemctl restart gov-portal-DBIS'`
|
||||
(Only works if `/srv/gov-portals/DBIS` is a git checkout; tarball deploys omit `.git` — use the script above.)
|
||||
- **Update from Gitea:**
|
||||
`pct exec 7804 -- bash -c 'cd /srv/gov-portals && git pull && git submodule update --remote && pnpm install'`
|
||||
|
||||
55
docs/04-configuration/GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md
Normal file
55
docs/04-configuration/GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# GRU / Chain 138 Not-Crypto FAQ
|
||||
|
||||
Status: canonical defensive FAQ for provider submissions, institutional reviews, and support responses.
|
||||
|
||||
## Is GRU a cryptocurrency?
|
||||
|
||||
No. GRU is a monetary-policy and collateral framework for reserve-backed institutional settlement instruments. Chain 138 is the settlement and verification layer that records and reconciles state for the GRU ecosystem.
|
||||
|
||||
## Is Chain 138 a speculative asset network?
|
||||
|
||||
No. Chain 138 is used as programmable settlement, synchronization, and verification infrastructure. It is EVM-compatible so it can use mature tooling, wallets, explorers, and smart-contract interfaces, but its purpose is institutional settlement and auditability rather than speculative token mechanics.
|
||||
|
||||
## Is GRU an algorithmic stablecoin?
|
||||
|
||||
No. GRU should not be described as an algorithmic stablecoin. The framework uses reserve layers, collateral evidence, utilization constraints, and settlement gates. It does not rely on reflexive token incentives as the source of value support.
|
||||
|
||||
## Are c* assets official third-party issuer tokens?
|
||||
|
||||
No, unless a separate issuer agreement explicitly says so. For example, Chain 138 `cUSDC` and Ethereum Mainnet `cWUSDC` should not be represented as official Circle-issued USDC. They are DBIS/GRU compliant representations and wrapped transport assets tied to the Chain 138 source-asset model.
|
||||
|
||||
## Why do cW* assets exist on public chains?
|
||||
|
||||
cW* assets provide public-network transport, proof, and interoperability surfaces for canonical Chain 138 c* assets. They help external wallets, explorers, DEX terminals, and providers index public-chain activity while preserving a clear source-asset relationship back to Chain 138.
|
||||
|
||||
## Why does MetaMask show a token balance but no fiat value?
|
||||
|
||||
Wallet token balances, token metadata, and fiat price data are separate paths. A wallet can show a balance after token detection or EIP-747 import while still missing a provider-accepted price. MetaMask fiat values require upstream provider acceptance and cannot be forced by this repo.
|
||||
|
||||
## Does Chain 138 replace custodians or official records?
|
||||
|
||||
No. Chain 138 synchronizes and records proof-linked settlement and reserve state. Underlying off-chain evidence may remain with UCC filings, Euroclear records, exchanges, regulated custodians, banks, trustees, or qualified counterparties.
|
||||
|
||||
## How should providers classify GRU assets?
|
||||
|
||||
Use infrastructure and settlement language:
|
||||
|
||||
- reserve-backed monetary instrument;
|
||||
- compliant wrapped transport representation;
|
||||
- settlement and verification layer;
|
||||
- collateral validation and reserve reconciliation;
|
||||
- auditable system-of-record.
|
||||
|
||||
Avoid speculative or promotional language:
|
||||
|
||||
- cryptocurrency;
|
||||
- algorithmic stablecoin;
|
||||
- yield product;
|
||||
- unbacked token;
|
||||
- official third-party issuer token unless explicitly approved.
|
||||
|
||||
## Canonical References
|
||||
|
||||
- [GRU_PROVIDER_POSITIONING_PACKET.md](GRU_PROVIDER_POSITIONING_PACKET.md)
|
||||
- [GRU_RISK_AND_DISCLOSURE_LANGUAGE.md](GRU_RISK_AND_DISCLOSURE_LANGUAGE.md)
|
||||
- [CWUSDC_PROVIDER_SUBMISSION_PACKET.md](CWUSDC_PROVIDER_SUBMISSION_PACKET.md)
|
||||
71
docs/04-configuration/GRU_PROVIDER_POSITIONING_PACKET.md
Normal file
71
docs/04-configuration/GRU_PROVIDER_POSITIONING_PACKET.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# GRU / Chain 138 Provider Positioning Packet
|
||||
|
||||
Status: canonical provider-facing narrative for GRU, Chain 138, c* assets, and cW* wrapped transport assets.
|
||||
|
||||
Use this packet when preparing Etherscan, CoinGecko, CMC, MetaMask, Chainlist, wallet, explorer, DEX-terminal, institutional-counterparty, and support-ticket submissions. Keep provider submissions factual, narrow, and evidence-linked.
|
||||
|
||||
## Core Positioning
|
||||
|
||||
GRU is a reserve-backed monetary-policy and collateral framework. Chain 138 is the programmable settlement, synchronization, and verification layer that records, reconciles, and validates reserve positions, transactional states, and institutional settlement activity.
|
||||
|
||||
The ecosystem should be presented as reserve-backed institutional settlement and verification infrastructure, not as a cryptocurrency, speculative digital asset, algorithmic stablecoin, or yield product.
|
||||
|
||||
Recommended short description:
|
||||
|
||||
```text
|
||||
GRU defines a reserve-backed monetary-policy framework for compliant monetary instruments and institutional collateral workflows. Chain 138 is the EVM-compatible settlement and verification layer used to synchronize reserve positions, transactional states, and proof records across the GRU asset family.
|
||||
```
|
||||
|
||||
Recommended cW* description:
|
||||
|
||||
```text
|
||||
cW* assets are public-network compliant wrapped transport representations of canonical Chain 138 c* assets. They are used for mirrored settlement, proof, interoperability, and provider-indexed visibility. They should not be represented as official third-party issuer assets unless a separate issuer agreement explicitly supports that claim.
|
||||
```
|
||||
|
||||
Recommended Chain 138 description:
|
||||
|
||||
```text
|
||||
Chain 138 is an EVM-compatible settlement, synchronization, and verification network for GRU reserve-backed instruments, institutional collateral reconciliation, and compliant asset transport.
|
||||
```
|
||||
|
||||
## Language Rules
|
||||
|
||||
| Use | Avoid |
|
||||
|---|---|
|
||||
| Reserve-backed settlement infrastructure | Cryptocurrency project |
|
||||
| Monetary-policy and collateral framework | Speculative token model |
|
||||
| Compliant wrapped transport representation | Official issuer token unless issuer-approved |
|
||||
| Auditable reserve and settlement synchronization | Algorithmic stablecoin |
|
||||
| System-of-record and proof layer | Yield, APY, or return-generating product |
|
||||
| Institutional reconciliation and verification | Unbacked token economy |
|
||||
|
||||
## Audience Calibration
|
||||
|
||||
| Audience | Emphasize |
|
||||
|---|---|
|
||||
| Retail wallet users | Token identity, contract address, logo, decimals, network, and non-affiliation disclaimers. |
|
||||
| Commercial enterprises | Settlement reliability, API reconciliation, auditability, and asset transport boundaries. |
|
||||
| Banks and EMIs | Reserve evidence, compliance controls, transaction monitoring, custody boundaries, and settlement finality. |
|
||||
| Sovereign institutions | Monetary-policy framework, reserve eligibility, governance controls, and independent evidence sources. |
|
||||
| Macroeconomic reviewers | M00/M0/M1 reserve model, utilization constraints, operational buffer, and tranche controls. |
|
||||
| External data providers | Exact CAIP identifiers, contract addresses, supply proof, market caveats, logo URLs, and explorer links. |
|
||||
|
||||
## Provider Submission Rules
|
||||
|
||||
1. Submit exact chain and contract identifiers, not symbol-only references.
|
||||
2. Keep Chain 138 source assets separate from public-chain cW* wrappers.
|
||||
3. Treat wallet metadata, explorer profile metadata, and fiat price metadata as separate acceptance paths.
|
||||
4. Include explicit non-affiliation language for any asset that references a third-party denomination or ticker.
|
||||
5. Provide supply proof and reserve evidence as evidence inputs, not as a request for providers to infer facts.
|
||||
6. Avoid market-depth claims unless public liquidity is indexed, sustained, and linked.
|
||||
7. Track external submission status as `repo_ready`, `submitted`, `accepted`, or `blocked`.
|
||||
|
||||
## Canonical References
|
||||
|
||||
- [GRU_RESERVE_LAYER_EXPLAINER.md](GRU_RESERVE_LAYER_EXPLAINER.md)
|
||||
- [CHAIN138_SYSTEM_OF_RECORD_MODEL.md](CHAIN138_SYSTEM_OF_RECORD_MODEL.md)
|
||||
- [GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md](GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md)
|
||||
- [GRU_RISK_AND_DISCLOSURE_LANGUAGE.md](GRU_RISK_AND_DISCLOSURE_LANGUAGE.md)
|
||||
- [RESERVE_VERIFICATION_EVIDENCE_INDEX.md](RESERVE_VERIFICATION_EVIDENCE_INDEX.md)
|
||||
- [CWUSDC_PROVIDER_SUBMISSION_PACKET.md](CWUSDC_PROVIDER_SUBMISSION_PACKET.md)
|
||||
- [metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md) — includes **MetaMask Money / mUSD ↔ GRU hub and `cW*` transport** (subsection “MetaMask Money rail and mUSD — internal GRU alignment”).
|
||||
80
docs/04-configuration/GRU_RESERVE_LAYER_EXPLAINER.md
Normal file
80
docs/04-configuration/GRU_RESERVE_LAYER_EXPLAINER.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# GRU Reserve Layer Explainer
|
||||
|
||||
Status: canonical plain-language explainer for the GRU M00, M0, and M1 reserve and settlement layers.
|
||||
|
||||
## Summary
|
||||
|
||||
The GRU monetary structure operates across three integrated layers: `M00`, `M0`, and `M1`.
|
||||
|
||||
`M00` is the physical and commodity reserve index layer. `M0` is the cash, cash-equivalent, sovereign, and institutional paper layer. `M1` is the transactional settlement layer that bridges and rebalances M00 and M0 under strict utilization constraints.
|
||||
|
||||
## Layer Model
|
||||
|
||||
| Layer | Role | Provider-safe explanation |
|
||||
|---|---|---|
|
||||
| `M00` GRU | Physical and commodity reserve layer | Exposure is maintained across XAU, Precious Metals, Battery Materials, Base Metals, and Building Materials. Each class starts at `1.2` indexed units before collateral adjustment. |
|
||||
| `M0` GRU | Cash and institutional financial instrument layer | Includes M0 and M1 monetary cash reserves and equivalents, sovereign and central bank-issued instruments, bonds, promissory notes, MTNs, and LTNs that satisfy internal reserve-grade standards. |
|
||||
| `M1` GRU | Transactional settlement and rebalancing layer | Supports settlement activity while respecting reserve-capacity limits against available M00 and M0 reserves. |
|
||||
|
||||
## M00 Collateral Adjustment
|
||||
|
||||
For each `1 M00 GRU` allocation, the framework maintains exposure across five asset-class indices:
|
||||
|
||||
- XAU
|
||||
- Precious Metals
|
||||
- Battery Materials
|
||||
- Base Metals
|
||||
- Building Materials
|
||||
|
||||
Each asset class carries an indexed allocation of `1.2` units before collateral adjustment. Physical assets apply the collateral adjustment factor:
|
||||
|
||||
```text
|
||||
(0.9475^4) = approximately 0.80596628
|
||||
```
|
||||
|
||||
After this adjustment, each `1.2` indexed allocation corresponds to approximately `1.489` SKR-adjusted physical units.
|
||||
|
||||
Provider-language rule: describe this as a collateral-adjusted physical reserve methodology, not as leverage or speculative token appreciation.
|
||||
|
||||
## M0 Reserve Coverage
|
||||
|
||||
The M0 GRU basket is composed of cash reserves, cash equivalents, and qualifying sovereign, central-bank, and top-tier institutional instruments.
|
||||
|
||||
No LTV adjustment is applied inside the M0 accounting framework because the associated instruments are supported by underlying cash reserves maintained at a `5:1` reserve coverage ratio.
|
||||
|
||||
Eligibility should be described conservatively:
|
||||
|
||||
- seasoned AAA-rated paper;
|
||||
- top-tier institutional paper;
|
||||
- qualifying emerging-market sovereign and quasi-sovereign issuances;
|
||||
- instruments satisfying internal credit, liquidity, and reserve-grade standards.
|
||||
|
||||
## M1 Utilization Constraints
|
||||
|
||||
M1 GRU settlement activity dynamically bridges and rebalances the M00 and M0 reserve layers. It must remain within both reserve-capacity limits:
|
||||
|
||||
| Constraint | Maximum utilization |
|
||||
|---|---:|
|
||||
| M1 relative to available M00 GRU reserves | `25:1` |
|
||||
| M1 relative to available M0 GRU reserves | `5:1` |
|
||||
|
||||
When transactional activity approaches reserve utilization thresholds, execution must be segmented into sequential tranches so settlement remains collateralized within available M00 and M0 reserve capacity.
|
||||
|
||||
Provider-language rule: describe the ratios as utilization constraints and reserve gates, not as promotional multipliers.
|
||||
|
||||
## Operational Buffer
|
||||
|
||||
The system target is to maintain and exceed the internal `20%` operational buffer requirement above required collateralization. Rolling reserve checks are expected at 6-second intervals through API-driven validation, reconciliation, rebasing, and audit processes.
|
||||
|
||||
## Recommended Short Text
|
||||
|
||||
```text
|
||||
GRU operates across M00 physical and commodity reserves, M0 cash and institutional reserve instruments, and M1 transactional settlement capacity. Chain 138 records and verifies reserve-linked settlement state while enforcing utilization constraints and tranche controls designed to keep settlement activity within available collateral capacity.
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
- [GRU_PROVIDER_POSITIONING_PACKET.md](GRU_PROVIDER_POSITIONING_PACKET.md)
|
||||
- [CHAIN138_SYSTEM_OF_RECORD_MODEL.md](CHAIN138_SYSTEM_OF_RECORD_MODEL.md)
|
||||
- [RESERVE_VERIFICATION_EVIDENCE_INDEX.md](RESERVE_VERIFICATION_EVIDENCE_INDEX.md)
|
||||
- [GRU_M00_DIAMOND_INSTITUTIONAL_SPEC.md](GRU_M00_DIAMOND_INSTITUTIONAL_SPEC.md)
|
||||
64
docs/04-configuration/GRU_RISK_AND_DISCLOSURE_LANGUAGE.md
Normal file
64
docs/04-configuration/GRU_RISK_AND_DISCLOSURE_LANGUAGE.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# GRU / Chain 138 Risk and Disclosure Language
|
||||
|
||||
Status: canonical disclosure language for external provider packets and public-facing submission support.
|
||||
|
||||
## Standard Non-Affiliation Disclosure
|
||||
|
||||
Use this whenever an asset references a third-party currency, ticker, issuer, or public-chain denomination:
|
||||
|
||||
```text
|
||||
This asset is a DBIS/GRU compliant representation or wrapped transport asset and should not be presented as an official third-party issuer token unless a separate issuer agreement explicitly supports that claim.
|
||||
```
|
||||
|
||||
For cWUSDC specifically:
|
||||
|
||||
```text
|
||||
cWUSDC is the Ethereum Mainnet compliant wrapped transport representation of Chain 138 cUSDC in the DBIS GRU asset family. cWUSDC is not Circle-issued USDC and should not be represented as an official Circle asset.
|
||||
```
|
||||
|
||||
## Standard Price Disclosure
|
||||
|
||||
```text
|
||||
Wallet and explorer fiat values depend on external provider acceptance. Repo-controlled metadata, token lists, report APIs, and EIP-747 wallet prompts can provide correct asset facts and logos, but they do not force MetaMask, Etherscan, CoinGecko, CMC, or other providers to display a fiat price.
|
||||
```
|
||||
|
||||
## Standard Liquidity Disclosure
|
||||
|
||||
```text
|
||||
Public DEX liquidity and volume should be described only from indexed, visible, and current pool evidence. Candidate pool URLs, internal accounting pegs, or sparse liquidity should not be presented as listing-quality price discovery.
|
||||
```
|
||||
|
||||
## Standard Reserve Evidence Disclosure
|
||||
|
||||
```text
|
||||
Reserve evidence may include Chain 138 records, token-aggregation reports, supply proofs, custodian or counterparty records, UCC filings, Euroclear records, exchange reporting, and other qualified institutional sources. Chain 138 records proof-linked state and settlement activity; it does not replace the legal authority of the underlying off-chain evidence source.
|
||||
```
|
||||
|
||||
## Standard Utilization Disclosure
|
||||
|
||||
```text
|
||||
M1 GRU settlement utilization is constrained by available reserve capacity and reserve gates. The M00 and M0 ratios are maximum utilization constraints, not promotional leverage, return, or yield claims.
|
||||
```
|
||||
|
||||
## Provider Status Disclosure
|
||||
|
||||
```text
|
||||
External provider acceptance is provider-controlled. A repo status of repo_ready means the submission package, endpoints, metadata, and evidence are ready for submission; it does not imply that the provider has accepted or displayed the asset.
|
||||
```
|
||||
|
||||
## Avoided Claims
|
||||
|
||||
Do not claim:
|
||||
|
||||
- guaranteed fiat price display in wallets;
|
||||
- official issuer status without explicit authorization;
|
||||
- CoinGecko, CMC, Etherscan, DexScreener, GeckoTerminal, or MetaMask acceptance before public evidence exists;
|
||||
- listing-quality liquidity from unindexed or quote-starved pools;
|
||||
- investor returns, yield, appreciation, or speculative upside;
|
||||
- legal custody of off-chain assets solely because Chain 138 records proof-linked state.
|
||||
|
||||
## References
|
||||
|
||||
- [GRU_PROVIDER_POSITIONING_PACKET.md](GRU_PROVIDER_POSITIONING_PACKET.md)
|
||||
- [GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md](GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md)
|
||||
- [CHAIN138_SYSTEM_OF_RECORD_MODEL.md](CHAIN138_SYSTEM_OF_RECORD_MODEL.md)
|
||||
@@ -4,6 +4,8 @@
|
||||
**Document Version:** 1.0
|
||||
**Status:** Active Documentation
|
||||
|
||||
**Related execution plan:** [NPMPLUS_MISSION_CRITICAL_DISTRIBUTION_AND_HA_PLAN.md](NPMPLUS_MISSION_CRITICAL_DISTRIBUTION_AND_HA_PLAN.md) (node distribution, sizing, verification checklist).
|
||||
|
||||
---
|
||||
|
||||
**Date**: 2026-01-20
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
# NPMplus mission-critical distribution and HA plan
|
||||
|
||||
**Status:** Active execution plan
|
||||
**Last updated:** 2026-05-10
|
||||
**Audience:** Operators with Proxmox SSH, LAN access, and edge (UDM / Cloudflare) access.
|
||||
|
||||
This document **completes** the roadmap for **high availability**, **node diversity**, and **measurable uptime** for NPMplus instances **192.168.11.167–.170** (VMIDs **10233–10236**). It is **not** a guarantee of five-nines by itself; pair it with **external synthetics**, **edge failover**, and **error-budget discipline**.
|
||||
|
||||
**Related:** [NPMPLUS_HA_SETUP_GUIDE.md](NPMPLUS_HA_SETUP_GUIDE.md), [ALL_VMIDS_ENDPOINTS.md](ALL_VMIDS_ENDPOINTS.md), [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md), [config/ip-addresses.conf](../../config/ip-addresses.conf).
|
||||
|
||||
---
|
||||
|
||||
## 1. Target architecture (summary)
|
||||
|
||||
| Goal | Action |
|
||||
|------|--------|
|
||||
| **No correlated NPM failure on one hypervisor** | Move **10235** and **10236** off **r630-01** to **distinct** nodes (see §4). |
|
||||
| **Primary + secondary HA** | **Keepalived VIP** (or equivalent) + **replicated/shared NPM state** between **10233** and **10234** per HA guide. |
|
||||
| **Right-sized CTs** | **10233**: ≥ **2 vCPU**, ≥ **2048 MiB** RAM; **10234**: **verify/correct** memory in UI (config once showed ~24 GiB — align with primary). **10235/10236**: remain **2 vCPU / 2048 MiB** unless metrics dictate otherwise. |
|
||||
| **Edge** | Cloudflare (or similar): **health checks**, **secondary origin** (**76.53.10.37** for secondary NPM public IP per template), **documented** UDM forwards. |
|
||||
| **Proof** | **Regional synthetics**, **quarterly game-day** failover, **SLO** tracking (see §8). |
|
||||
|
||||
---
|
||||
|
||||
## 2. Inventory and roles (canonical)
|
||||
|
||||
| LAN IP | VMID | Role | Public IP (template) | Preferred failover |
|
||||
|--------|------|------|----------------------|--------------------|
|
||||
| **.167** | **10233** | Primary NPM (main ingress) | **76.53.10.36** | Pair with **10234** via VIP |
|
||||
| **.168** | **10234** | Secondary NPM (HA standby) | **76.53.10.37** | Same VIP / sync |
|
||||
| **.169** | **10235** | Alltra/HYBX / rpc-core-2 NPM | **76.53.10.38** (+ **.42** alt) | Isolate on **non–r630-01** node |
|
||||
| **.170** | **10236** | Fourth NPM (dev, tunnel, Gitea) | **76.53.10.40** | Isolate on **non–r630-01** node |
|
||||
|
||||
**Live placement note:** Reconcile with cluster before change:
|
||||
`bash scripts/maintenance/npmplus-cluster-placement-status.sh`
|
||||
|
||||
---
|
||||
|
||||
## 3. Phase A — Normalize sizing (maintenance window)
|
||||
|
||||
**10233 (primary)** — on node hosting it (e.g. `r630-01`):
|
||||
|
||||
```bash
|
||||
# Example: 2 vCPU, 2048 MiB RAM (adjust if policy differs)
|
||||
pct shutdown 10233 # or schedule maintenance; minimize downtime
|
||||
pct set 10233 -cores 2 -memory 2048
|
||||
pct start 10233
|
||||
# Verify: curl -sI --max-time 10 http://192.168.11.167:81/ | head -3
|
||||
```
|
||||
|
||||
**10234 (secondary)** — on **r630-02**:
|
||||
|
||||
1. Open **Proxmox UI → CT 10234 → Resources** and confirm **memory** and **swap** are intentional (target **match primary** after resize, e.g. **2048 MiB** RAM, modest swap — **not** multi-TiB values).
|
||||
2. If CLI shows corrupted limits, fix in UI and **Apply**.
|
||||
3. `pct reboot 10234` only if needed after correction.
|
||||
|
||||
**10235 / 10236:** No change unless monitoring shows pressure.
|
||||
|
||||
---
|
||||
|
||||
## 4. Phase B — Redistribute CTs across nodes
|
||||
|
||||
**Objective:** Only **one** of **10233 / 10235 / 10236** on **r630-01** after migration (typically keep **10233** primary on **r630-01**, move **10235** to **r630-03**, **10236** to **r630-04** — adjust names to your capacity).
|
||||
|
||||
**Prerequisites:**
|
||||
|
||||
- **Shared storage** or **migration-compatible storage** between source and target (Proxmox migrate prerequisites).
|
||||
- **Maintenance window** for each move (brief disconnect).
|
||||
- Confirm target node: `pvesh get /nodes/<target>/status` or UI.
|
||||
|
||||
**Example migrations (run from any cluster shell with privileges):**
|
||||
|
||||
```bash
|
||||
# Offline migration pattern (replace TARGET_NODE with r630-03, r630-04, etc.)
|
||||
pct shutdown 10235
|
||||
pct migrate 10235 TARGET_NODE
|
||||
pct start 10235
|
||||
# Verify IP .169 still pings and :81 responds
|
||||
|
||||
pct shutdown 10236
|
||||
pct migrate 10236 OTHER_NODE
|
||||
pct start 10236
|
||||
# Verify .170
|
||||
```
|
||||
|
||||
**Online migration** if your storage supports it (Proxmox version–dependent):
|
||||
|
||||
```bash
|
||||
pct migrate 10235 TARGET_NODE --restart
|
||||
```
|
||||
|
||||
Document **actual** target nodes in **ALL_VMIDS_ENDPOINTS.md** after completion.
|
||||
|
||||
---
|
||||
|
||||
## 5. Phase C — NPM application HA (primary + secondary)
|
||||
|
||||
Execute **end-to-end** steps in [NPMPLUS_HA_SETUP_GUIDE.md](NPMPLUS_HA_SETUP_GUIDE.md):
|
||||
|
||||
1. **VIP** (e.g. **192.168.11.166** or documented VIP) with **Keepalived** between **10233** and **10234**.
|
||||
2. **Shared or replicated** NPM database and certificate paths (NFS / replicated volume / controlled rsync + procedures).
|
||||
3. **UDM / DNS:** Ensure **primary forward** still matches production; **secondary public IP** ready for **manual or automated** failover per runbook.
|
||||
4. Point **operator scripts** at **VIP URL** once stable: `NPM_URL=https://<VIP>:81` (or hostname).
|
||||
|
||||
---
|
||||
|
||||
## 6. Phase D — Edge and DNS
|
||||
|
||||
| Step | Detail |
|
||||
|------|--------|
|
||||
| **Cloudflare** | Load balancer / health checks to **two origins** where possible (**76.53.10.36**, **76.53.10.37**). |
|
||||
| **UDM** | Document **all** forwards; align **76.53.10.37** with **secondary** NPM when HA goes live. |
|
||||
| **TLS** | Admin **:81** restricted by IP/VPN where possible. |
|
||||
|
||||
See [DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md](DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md) for **.170** / **76.53.10.40** specifics.
|
||||
|
||||
---
|
||||
|
||||
## 7. Phase E — Verification scripts (repo)
|
||||
|
||||
| Script | Purpose |
|
||||
|--------|---------|
|
||||
| `scripts/maintenance/npmplus-cluster-placement-status.sh` | Shows which node runs **10233–10236**. |
|
||||
| `scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` | After NPM stable; use **`NPM_URL`** pointing at VIP when ready. |
|
||||
| `scripts/verify/verify-end-to-end-routing.sh --profile=public` | Public path regression check. |
|
||||
| `scripts/maintenance/verify-pve-cluster-health.sh` | Cluster quorum sanity. |
|
||||
|
||||
---
|
||||
|
||||
## 8. Phase F — SLOs, game day, error budget
|
||||
|
||||
1. **Define SLO** (example): **99.95%** monthly for **HTTPS availability** of critical FQDNs from **two external probe regions** before claiming **99.999%**.
|
||||
2. **Synthetic checks:** External uptime monitor on **sankofa.nexus**, **explorer.d-bis.org**, **rpc.public-0138.defi-oracle.io**, etc.
|
||||
3. **Game day (quarterly):** Stop **10233** Docker/nginx safely; confirm **VIP** and/or **Cloudflare** shifts traffic; **RTO** recorded.
|
||||
4. **Error budget:** Pause optional releases when probes burn budget.
|
||||
|
||||
---
|
||||
|
||||
## 9. Completion checklist
|
||||
|
||||
Use this as the **definition of done** for “plan completed”:
|
||||
|
||||
- [ ] **10233** resized to ≥ **2 vCPU / 2048 MiB** (or documented alternative).
|
||||
- [ ] **10234** memory/swap **verified sane** and matches failover intent.
|
||||
- [ ] **10235** migrated off **r630-01** (or documented exception).
|
||||
- [ ] **10236** migrated off **r630-01** (or documented exception).
|
||||
- [ ] **HA**: VIP + **shared/replicated state** **or** documented interim with **secondary origin** in Cloudflare.
|
||||
- [ ] **Docs updated:** **ALL_VMIDS_ENDPOINTS.md** placement rows; **this file** dated notes.
|
||||
- [ ] **External probes** green for **30 days** post-change (or agreed burn-in).
|
||||
|
||||
---
|
||||
|
||||
## 10. Rollback
|
||||
|
||||
- **Migration rollback:** `pct migrate <vmid> r630-01` (if that was original node) during a window.
|
||||
- **Sizing rollback:** reduce **cores/memory** with shutdown if instability appears (capture metrics first).
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- NPM HA options: [NPMPLUS_HA_SETUP_GUIDE.md](NPMPLUS_HA_SETUP_GUIDE.md)
|
||||
- Inventory: [ALL_VMIDS_ENDPOINTS.md](ALL_VMIDS_ENDPOINTS.md)
|
||||
- Edge / RPC: [RPC_ENDPOINTS_MASTER.md](RPC_ENDPOINTS_MASTER.md), [NETWORK_CONFIGURATION_MASTER.md](../11-references/NETWORK_CONFIGURATION_MASTER.md)
|
||||
@@ -137,13 +137,13 @@ cd /home/intlc/projects/proxmox/smom-dbis-138
|
||||
- **Address:** `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22`
|
||||
- **Decimals:** 6
|
||||
- **Peg:** USD (1:1)
|
||||
- **Explorer:** https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22
|
||||
- **Explorer:** https://explorer.d-bis.org/addresses/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22
|
||||
|
||||
#### cUSDC (Compliant USD Coin)
|
||||
- **Address:** `0xf22258f57794CC8E06237084b353Ab30fFfa640b`
|
||||
- **Decimals:** 6
|
||||
- **Peg:** USD (1:1)
|
||||
- **Explorer:** https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b
|
||||
- **Explorer:** https://explorer.d-bis.org/addresses/0xf22258f57794CC8E06237084b353Ab30fFfa640b
|
||||
|
||||
### Submission Status
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
**Important:** MetaMask does **not** query on-chain oracle contracts for USD display. Even with a working ETH/USD oracle on Chain 138 (`0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6`), MetaMask will not show native USD until Chain 138 and tokens are listed on CoinGecko (or MetaMask’s provider adds support).
|
||||
|
||||
Provider-facing positioning and disclosure language now lives in [GRU_PROVIDER_POSITIONING_PACKET.md](GRU_PROVIDER_POSITIONING_PACKET.md), [GRU_RISK_AND_DISCLOSURE_LANGUAGE.md](GRU_RISK_AND_DISCLOSURE_LANGUAGE.md), and [metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md). Use those packets before submitting Chain 138 or cW* assets to price providers.
|
||||
|
||||
---
|
||||
|
||||
## 2. Paths to Add Price Feeds
|
||||
|
||||
@@ -119,15 +119,13 @@ DefiLlama adapters return TVL (total value locked), not token lists. Each protoc
|
||||
|
||||
### Chain 138 support
|
||||
|
||||
- DefiLlama uses chain keys: `ethereum`, `bsc`, `polygon`, `arbitrum`, etc.
|
||||
- Chain 138 is likely **not** a built-in chain key. Check `DefiLlama-Adapters/helper/chains.js` or similar.
|
||||
- If adding DODO on Chain 138, you must:
|
||||
1. Confirm DefiLlama supports chain 138 (may need PR to add chain first)
|
||||
2. Add config entry and tvl logic for the chain key they use (e.g. `chain138` or `defi-oracle-meta`)
|
||||
- `@defillama/sdk` exposes **`dfio_meta_main`** with chain id **138** (RPC in SDK providers).
|
||||
- DefiLlama-Adapters uses string keys in `projects/helper/chains.json`; **`dfio_meta_main`** must appear there.
|
||||
- DODO on Chain 138: add **`dfio_meta_main`** in `projects/dodo/index.js` (DVM factory + `fromBlock`) and stablecoin rows in `projects/helper/tokenMapping.js` where needed.
|
||||
|
||||
### No PR-ready file
|
||||
### PR status
|
||||
|
||||
We do not have a DefiLlama adapter file. Create one only after confirming chain support.
|
||||
Upstream contribution is prepared as a PR from the org fork — see [`defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md`](defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md) and [`config/defillama-chain138-touchpoints.json`](../../config/defillama-chain138-touchpoints.json).
|
||||
|
||||
---
|
||||
|
||||
@@ -138,7 +136,7 @@ We do not have a DefiLlama adapter file. Create one only after confirming chain
|
||||
| **Token list** | dbis-138.tokenlist.json | ✅ WETH10 address fixed to checksum per CHAIN138_TOKEN_ADDRESSES |
|
||||
| **Chainlist** | eip155-138.json | ✅ networkId→138; icon removed (avoids needing _data/icons file) |
|
||||
| **Trust Wallet** | trust-wallet-registry-chain138.json | ✅ sampleTx and sampleAccount added (real tx from explorer) |
|
||||
| **DefiLlama** | N/A | No PR until chain 138 is supported; adapter structure differs |
|
||||
| **DefiLlama** | `DefiLlama-Adapters` (`dfio_meta_main` + DODO) | PR from fork when ready; see `defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md` |
|
||||
|
||||
---
|
||||
|
||||
|
||||
84
docs/04-configuration/RESERVE_VERIFICATION_EVIDENCE_INDEX.md
Normal file
84
docs/04-configuration/RESERVE_VERIFICATION_EVIDENCE_INDEX.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# Reserve Verification Evidence Index
|
||||
|
||||
Status: canonical evidence map for reserve, supply, collateral, and settlement verification packets.
|
||||
|
||||
## Purpose
|
||||
|
||||
This index defines the evidence categories to attach to GRU, Chain 138, c*, and cW* provider submissions. It is intentionally evidence-first: providers should receive exact documents, URLs, APIs, hashes, and timestamps rather than broad reserve claims.
|
||||
|
||||
## Evidence Chain
|
||||
|
||||
Use this evidence chain for every asset family:
|
||||
|
||||
```text
|
||||
asset
|
||||
-> reserve source
|
||||
-> custodian / filing / exchange / counterparty evidence
|
||||
-> Chain 138 representation
|
||||
-> public-chain wrapped representation where applicable
|
||||
-> supply proof
|
||||
-> provider packet
|
||||
-> external acceptance evidence
|
||||
```
|
||||
|
||||
## Evidence Categories
|
||||
|
||||
| Category | Evidence examples | Repo or operator artifact |
|
||||
|---|---|---|
|
||||
| Chain state | Contract address, token metadata, balances, supply, mappings, explorer API responses. | Chain 138 explorer, Etherscan, `token-lists/`, `config/token-mapping-multichain.json`. |
|
||||
| Supply proof | Total supply, circulating supply method, non-circulating exclusions, signed balance inventory. | `reports/status/mainnet-cwusdc-supply-proof-20260508.json`, generated supply attestations. |
|
||||
| Reserve records | Reserve inventory, reserve-grade eligibility, coverage ratio, operational buffer status. | Reserve catalog, operator attestations, linked external evidence. |
|
||||
| Legal / filing evidence | UCC filings, Euroclear records, trustee/custodian statements, exchange reports. | External documents or references attached by operator. |
|
||||
| Counterparty evidence | Bank, custodian, exchange, or institutional counterparty reports. | External reports, authenticated API exports, signed statements. |
|
||||
| Settlement evidence | Transaction hashes, bridge proofs, settlement batch IDs, RTGS/sidecar reconciliation records. | Explorer links, `reports/status/`, RTGS runbooks, sidecar logs. |
|
||||
| Market evidence | Indexed LP URLs, volume, reserves, depth, pool health, DEX terminal pages. | GeckoTerminal, DexScreener, CMC DEX, token-aggregation reports. |
|
||||
| Provider acceptance | Ticket IDs, PRs, screenshots, public token pages, API responses. | `reports/status/*`, submission checklist docs. |
|
||||
|
||||
## Asset Evidence Template
|
||||
|
||||
```text
|
||||
Asset:
|
||||
Network / CAIP-2:
|
||||
Contract / CAIP-19:
|
||||
Canonical source asset:
|
||||
Wrapped representation:
|
||||
Decimals:
|
||||
Logo URL:
|
||||
Explorer URL:
|
||||
Supply proof:
|
||||
Reserve evidence:
|
||||
Custodian / filing / exchange references:
|
||||
Market evidence:
|
||||
Provider packet:
|
||||
Submission status:
|
||||
Last verified:
|
||||
Known caveats:
|
||||
```
|
||||
|
||||
## cWUSDC Current Evidence Pointers
|
||||
|
||||
| Evidence | Location |
|
||||
|---|---|
|
||||
| Consolidated provider packet | [CWUSDC_PROVIDER_SUBMISSION_PACKET.md](CWUSDC_PROVIDER_SUBMISSION_PACKET.md) |
|
||||
| Etherscan profile packet | [etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md](etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md) |
|
||||
| Etherscan E2E recommendations | [etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md](etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md) |
|
||||
| Tracker submission packet | [coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md](coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md) |
|
||||
| Mainnet supply proof | [../../reports/status/mainnet-cwusdc-supply-proof-20260508.json](../../reports/status/mainnet-cwusdc-supply-proof-20260508.json) |
|
||||
| Technical completion proof | [../../reports/status/mainnet-cwusdc-technical-completion-20260508.json](../../reports/status/mainnet-cwusdc-technical-completion-20260508.json) |
|
||||
| Token aggregation readiness | [../../reports/status/token-aggregation-adoption-readiness-live-20260509.json](../../reports/status/token-aggregation-adoption-readiness-live-20260509.json) |
|
||||
| MetaMask / provider matrix | [metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md) |
|
||||
|
||||
## Acceptance Status Rules
|
||||
|
||||
| Status | Meaning |
|
||||
|---|---|
|
||||
| `repo_ready` | Repo-controlled endpoint, packet, metadata, proof, or report is prepared. |
|
||||
| `submitted` | Operator submitted through a form, ticket, PR, or support channel. |
|
||||
| `accepted` | Provider publicly displays or confirms the asset, metadata, price, supply, chain, or profile. |
|
||||
| `blocked` | Provider requires missing evidence, liquidity, chain support, profile verification, or manual review. |
|
||||
|
||||
## References
|
||||
|
||||
- [GRU_PROVIDER_POSITIONING_PACKET.md](GRU_PROVIDER_POSITIONING_PACKET.md)
|
||||
- [GRU_RESERVE_LAYER_EXPLAINER.md](GRU_RESERVE_LAYER_EXPLAINER.md)
|
||||
- [CHAIN138_SYSTEM_OF_RECORD_MODEL.md](CHAIN138_SYSTEM_OF_RECORD_MODEL.md)
|
||||
@@ -169,13 +169,12 @@ Object.keys(config).forEach(chain => {
|
||||
### PR process
|
||||
1. Add adapter under `projects/{protocol-name}/`
|
||||
2. Export `tvl` (and optionally `staking`, `borrowed`) per chain
|
||||
3. Chain 138 would need DefiLlama to add `chain138` as a supported chain key first (see docs.llama.fi)
|
||||
4. Open PR to https://github.com/DefiLlama/DefiLlama-Adapters
|
||||
3. Chain 138 uses SDK chain key **`dfio_meta_main`** (not `chain138`); add it to `projects/helper/chains.json` and wire the protocol config (see [How to add a new blockchain](https://docs.llama.fi/list-your-project/how-to-add-a-new-blockchain))
|
||||
4. Open PR to https://github.com/DefiLlama/DefiLlama-Adapters (org fork: [Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters](https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters))
|
||||
|
||||
### Chain 138 action
|
||||
- DefiLlama may not have `chain138` as a chain key yet
|
||||
- Check `helper/chains.js` or similar for supported chains
|
||||
- If adding DODO/other protocol on Chain 138, add config entry + tvl logic
|
||||
- **`dfio_meta_main`** is the key aligned with `@defillama/sdk` providers for chain id 138
|
||||
- DODO: `projects/dodo/index.js` + `tokenMapping.js` — status and optional metrics: [`defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md`](defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
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.
|
||||
Per the current machine-readable deployment graph and generated audit summaries, the public `cW*` surface is active on **nine** chain IDs `1, 10, 56, 100, 137, 8453, 42161, 42220, 43114` (Cronos `25` excluded from the promoted count), while `1111` remains deferred.
|
||||
|
||||
# Official Links
|
||||
|
||||
@@ -35,19 +35,19 @@ These are the canonical GRU v2 `c*` assets on Chain 138 with direct explorer lin
|
||||
|
||||
| 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` |
|
||||
| `cUSDT` | Tether USD (Compliant) | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | `https://explorer.d-bis.org/addresses/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` |
|
||||
| `cUSDC` | USD Coin (Compliant) | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | `https://explorer.d-bis.org/addresses/0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
|
||||
| `cEURC` | Euro Coin (Compliant) | `0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | `https://explorer.d-bis.org/addresses/0x8085961F9cF02b4d800A3c6d386D31da4B34266a` |
|
||||
| `cEURT` | Tether EUR (Compliant) | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | `https://explorer.d-bis.org/addresses/0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` |
|
||||
| `cGBPC` | Pound Sterling (Compliant) | `0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | `https://explorer.d-bis.org/addresses/0x003960f16D9d34F2e98d62723B6721Fb92074aD2` |
|
||||
| `cGBPT` | Tether GBP (Compliant) | `0x350f54e4D23795f86A9c03988c7135357CCaD97c` | `https://explorer.d-bis.org/addresses/0x350f54e4D23795f86A9c03988c7135357CCaD97c` |
|
||||
| `cAUDC` | Australian Dollar (Compliant) | `0xD51482e567c03899eecE3CAe8a058161FD56069D` | `https://explorer.d-bis.org/addresses/0xD51482e567c03899eecE3CAe8a058161FD56069D` |
|
||||
| `cJPYC` | Japanese Yen (Compliant) | `0xEe269e1226a334182aace90056EE4ee5Cc8A6770` | `https://explorer.d-bis.org/addresses/0xEe269e1226a334182aace90056EE4ee5Cc8A6770` |
|
||||
| `cCHFC` | Swiss Franc (Compliant) | `0x873990849DDa5117d7C644f0aF24370797C03885` | `https://explorer.d-bis.org/addresses/0x873990849DDa5117d7C644f0aF24370797C03885` |
|
||||
| `cCADC` | Canadian Dollar (Compliant) | `0x54dBd40cF05e15906A2C21f600937e96787f5679` | `https://explorer.d-bis.org/addresses/0x54dBd40cF05e15906A2C21f600937e96787f5679` |
|
||||
| `cXAUC` | Gold (Compliant) | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | `https://explorer.d-bis.org/addresses/0x290E52a8819A4fbD0714E517225429aA2B70EC6b` |
|
||||
| `cXAUT` | Tether XAU (Compliant) | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | `https://explorer.d-bis.org/addresses/0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` |
|
||||
| `cAUSDT` | Alltra USD Token (Compliant) | `0x5fdDF65733e3d590463F68f93Cf16E8c04081271` | `https://explorer.d-bis.org/addresses/0x5fdDF65733e3d590463F68f93Cf16E8c04081271` |
|
||||
|
||||
# Bridged Wrapped Assets
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
| **Chain ID** | `138` |
|
||||
| **Chain Name** | `DeFi Oracle Meta Mainnet` |
|
||||
| **Decimals** | `6` |
|
||||
| **Explorer Link** | `https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
|
||||
| **Explorer Link** | `https://explorer.d-bis.org/addresses/0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
|
||||
|
||||
## Public References
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
| **Chain ID** | `138` |
|
||||
| **Chain Name** | `DeFi Oracle Meta Mainnet` |
|
||||
| **Decimals** | `6` |
|
||||
| **Explorer Link** | `https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` |
|
||||
| **Explorer Link** | `https://explorer.d-bis.org/addresses/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` |
|
||||
|
||||
## Public References
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# cWUSDC External Tracker Blocker Remediation
|
||||
|
||||
Generated: `2026-05-09`
|
||||
|
||||
## Current Evidence
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
pnpm cwusdc:external-trackers
|
||||
pnpm cw:full-readiness
|
||||
```
|
||||
|
||||
Evidence files:
|
||||
|
||||
- `reports/status/cwusdc-external-trackers-live-latest.json`
|
||||
- `reports/status/cwusdc-external-trackers-live-latest.md`
|
||||
- `reports/status/cw-full-operational-readiness-latest.json`
|
||||
- `reports/status/cw-full-operational-readiness-latest.md`
|
||||
|
||||
Latest status:
|
||||
|
||||
| Surface | Status |
|
||||
|---|---|
|
||||
| Etherscan token page | Reachable |
|
||||
| CoinMarketCap DEX token page | Reachable |
|
||||
| GeckoTerminal V3 pool | Reachable |
|
||||
| GeckoTerminal V2 pool | Reachable |
|
||||
| CoinGecko token price API | Not listed yet |
|
||||
| DexScreener V3 pair API | Pair payload not returned |
|
||||
| DexScreener V2 pair API | Pair payload not returned |
|
||||
|
||||
## Required Fix
|
||||
|
||||
1. Submit or update the CoinGecko listing packet for Ethereum Mainnet `cWUSDC`.
|
||||
2. Submit/update DexScreener token and pair metadata for:
|
||||
- `0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3`
|
||||
- `0xc28706f899266b36bc43cc072b3a921bdf2c48d9`
|
||||
3. Keep GeckoTerminal pool URLs in the submission packet because both GeckoTerminal API probes are live.
|
||||
4. Re-run `pnpm cwusdc:external-trackers`.
|
||||
5. Re-run `pnpm cw:full-readiness`.
|
||||
|
||||
## Evidence URLs
|
||||
|
||||
- Etherscan: `https://etherscan.io/token/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a`
|
||||
- CoinMarketCap DEX: `https://dex.coinmarketcap.com/token/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a/`
|
||||
- GeckoTerminal V3 pool: `https://www.geckoterminal.com/eth/pools/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3`
|
||||
- GeckoTerminal V2 pool: `https://www.geckoterminal.com/eth/pools/0xc28706f899266b36bc43cc072b3a921bdf2c48d9`
|
||||
- DexScreener V3 pool: `https://dexscreener.com/ethereum/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3`
|
||||
- DexScreener V2 pool: `https://dexscreener.com/ethereum/0xc28706f899266b36bc43cc072b3a921bdf2c48d9`
|
||||
|
||||
## Submission Packet
|
||||
|
||||
Use:
|
||||
|
||||
- `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md`
|
||||
- `docs/04-configuration/coingecko/CWUSDC_MAINNET_EXTERNAL_SUBMISSION_CHECKLIST.md`
|
||||
- `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md`
|
||||
@@ -0,0 +1,87 @@
|
||||
# cWUSDC Mainnet External Submission Checklist
|
||||
|
||||
Status: ready for account holders / external reviewers. This file contains the remaining tasks that cannot be completed by repo-only automation.
|
||||
|
||||
## Copy-Paste Asset Fields
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Asset name | `Wrapped cUSDC` |
|
||||
| Symbol | `cWUSDC` |
|
||||
| Network | Ethereum Mainnet |
|
||||
| Chain ID | `1` |
|
||||
| Contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Decimals | `6` |
|
||||
| Contact email | `submissions@d-bis.org` |
|
||||
| Support email | `support@d-bis.org` |
|
||||
| Social/profile email | `social.media@d-bis.org` |
|
||||
| Token type | Compliant wrapped public-network transport mirror of Chain 138 `cUSDC` |
|
||||
| Total supply | `10,451,316,981.309788 cWUSDC` |
|
||||
| Supply proof | `reports/status/mainnet-cwusdc-supply-proof-20260508.json` |
|
||||
| Logo URI | `https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cUSDC.svg` |
|
||||
| Etherscan 32x32 SVG logo | `https://d-bis.org/tokens/cwusdc.svg` |
|
||||
| Etherscan 32x32 SVG source | `docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg` |
|
||||
| Internal token-list entry | `docs/04-configuration/coingecko/exports/token-list-all.json` |
|
||||
| Tracker packet | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` |
|
||||
| Etherscan profile packet | `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` |
|
||||
| Branding system analysis | `docs/04-configuration/etherscan/CW_TOKEN_BRANDING_SYSTEM_ANALYSIS.md` |
|
||||
| E2E recommendations | `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md` |
|
||||
|
||||
## Public Tracker Evidence
|
||||
|
||||
| Tracker | URL | Status |
|
||||
|---|---|---|
|
||||
| Etherscan | `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | Contract source verified |
|
||||
| DexScreener token API | `https://api.dexscreener.com/token-pairs/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a` | Not indexed yet; returns an empty pair list |
|
||||
| DexScreener V3 candidate | `https://dexscreener.com/ethereum/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3` | Candidate pool URL; public API does not yet return the pair |
|
||||
| DexScreener V2 candidate | `https://dexscreener.com/ethereum/0xc28706f899266b36bc43cc072b3a921bdf2c48d9` | Candidate pool URL; public API does not yet return the pair |
|
||||
| GeckoTerminal V3 | `https://www.geckoterminal.com/eth/pools/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3` | Indexed |
|
||||
| GeckoTerminal V2 | `https://www.geckoterminal.com/eth/pools/0xc28706f899266b36bc43cc072b3a921bdf2c48d9` | Indexed |
|
||||
| CoinMarketCap DEX | `https://dex.coinmarketcap.com/token/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a/` | Token page reachable |
|
||||
|
||||
## Remaining External Tasks
|
||||
|
||||
| Task | Owner | Completion evidence |
|
||||
|---|---|---|
|
||||
| Submit CoinGecko listing/update | External account holder | CoinGecko contract page/API resolves the token instead of returning `404` |
|
||||
| Submit full CoinMarketCap listing/update | External account holder | CMC token page exists outside DEX-only discoverability and accepts supply/profile data |
|
||||
| Submit Etherscan profile/logo/social update | Verified contract owner/account | Etherscan token profile shows approved logo/profile metadata |
|
||||
| Trigger DexScreener auto-indexing | Operator + treasury | `token-pairs/v1/ethereum/<cWUSDC>` returns at least one pair; requires pool liquidity and at least one transaction |
|
||||
| Submit DexScreener Enhanced Token Info/profile | External account holder | DexScreener `orders/v1/ethereum/<cWUSDC>` shows approved profile order, or token page shows profile metadata |
|
||||
| Submit GeckoTerminal profile/logo/social update, if available | External account holder | GeckoTerminal token/pool pages show approved profile metadata |
|
||||
| Provide tracker circulating-supply attestations | Treasury/operator signer | Tracker accepts the circulating-supply value or requested exclusions |
|
||||
| Fund official Mainnet USDC for listing-quality LP | Treasury/operator | Fresh repeg plan shows policy-floor quote shortfall covered |
|
||||
| Execute public LP repair after funding | Operator | On-chain swap/add-liquidity txs plus updated preflight/repeg reports |
|
||||
|
||||
## Liquidity Caveat To Include In Submissions
|
||||
|
||||
Current public LP evidence proves GeckoTerminal and CMC DEX discoverability, not listing-quality depth and not DexScreener API indexing. DexScreener documents that automatic listing requires a token to be in a liquidity pool with at least one transaction, and the current API probes still return no cWUSDC pairs. The V2 pair is quote-starved and the V3 pool has no durable listing-quality liquidity. Use the latest repeg plan before making any depth claim:
|
||||
|
||||
```bash
|
||||
bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh
|
||||
bash scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh
|
||||
```
|
||||
|
||||
Latest known capital gaps from the 2026-05-09 remediation pass:
|
||||
|
||||
| Need | Amount |
|
||||
|---|---:|
|
||||
| Public V2 quote-side policy-floor top-up | `2,497.832239 USDC` |
|
||||
| DODO defended reserve-parity top-up | `290,995.072514 USDC` |
|
||||
| Operator wallet official Mainnet USDC | `0.343655 USDC` |
|
||||
| Public V2 quote-side shortfall after wallet balance | `2,497.488584 USDC` |
|
||||
| DODO defended parity shortfall after wallet balance | `290,994.728859 USDC` |
|
||||
| Smallest current UniV2 repair canary requirement | `1,657.650239 USDC` |
|
||||
| Smallest current UniV2 repair canary shortfall | `1,657.306584 USDC` |
|
||||
|
||||
## Suggested Submission Note
|
||||
|
||||
`cWUSDC is the Ethereum Mainnet compliant wrapped transport representation of canonical Chain 138 cUSDC. The contract is verified on Etherscan and Sourcify, has 6 decimals, and is discoverable on GeckoTerminal and CoinMarketCap DEX. DexScreener public API indexing is still pending; current cWUSDC/USDC public LPs are shallow/quote-starved and require official-USDC funding before making listing-quality liquidity claims.`
|
||||
|
||||
## Etherscan-Specific Pre-Submit Checks
|
||||
|
||||
- Use `submissions@d-bis.org`, matching the `https://d-bis.org/` website domain.
|
||||
- Use the hosted 32x32 SVG at `https://d-bis.org/tokens/cwusdc.svg`; local source mirror is `docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg`.
|
||||
- Confirm `https://d-bis.org/leadership` presents team/founder entries with supporting professional links, such as LinkedIn or equivalent.
|
||||
- Confirm `https://d-bis.org/gru/tokens` visibly explains the GRU token family and the cWUSDC/cUSDC relationship.
|
||||
- Avoid language that implies cWUSDC is official Circle-issued USDC.
|
||||
@@ -0,0 +1,124 @@
|
||||
# cWUSDC Ethereum Mainnet Tracker Submission Packet
|
||||
|
||||
Status: internal package ready; external tracker acceptance pending.
|
||||
|
||||
External handoff checklist: `docs/04-configuration/coingecko/CWUSDC_MAINNET_EXTERNAL_SUBMISSION_CHECKLIST.md`.
|
||||
|
||||
Consolidated provider packet: `docs/04-configuration/CWUSDC_PROVIDER_SUBMISSION_PACKET.md`.
|
||||
|
||||
## Asset
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Network | Ethereum Mainnet |
|
||||
| Chain ID | `1` |
|
||||
| Contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Token name | `Wrapped cUSDC` |
|
||||
| Symbol | `cWUSDC` |
|
||||
| Decimals | `6` |
|
||||
| Asset class | Compliant wrapped public-network transport mirror |
|
||||
| Canonical source asset | Chain 138 `cUSDC` |
|
||||
| Internal registry symbol/name | `USD Coin (Compliant Wrapped ISO-4217 M1)` |
|
||||
|
||||
## Verification Links
|
||||
|
||||
- Etherscan token page: `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`
|
||||
- Sourcify status: full match for Ethereum Mainnet contract `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`
|
||||
- Token source contract: `smom-dbis-138/contracts/tokens/CompliantWrappedToken.sol`
|
||||
- Canonical metadata registry: `smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts`
|
||||
- Chain 138 to Mainnet mapping: `config/token-mapping-multichain.json`
|
||||
- Compact cWUSDC price/supply evidence API: `https://explorer.d-bis.org/token-aggregation/api/v1/report/token-price/cWUSDC?chainId=1`
|
||||
- Chain 138 source cUSDC price/supply evidence API: `https://explorer.d-bis.org/token-aggregation/api/v1/report/token-price/cUSDC?chainId=138`
|
||||
- CoinGecko-format report API: `https://explorer.d-bis.org/token-aggregation/api/v1/report/coingecko?chainId=1`
|
||||
- CMC-format report API: `https://explorer.d-bis.org/token-aggregation/api/v1/report/cmc?chainId=1`
|
||||
|
||||
## Supply
|
||||
|
||||
Machine-readable proof: `reports/status/mainnet-cwusdc-supply-proof-20260508.json`.
|
||||
|
||||
| Field | Value |
|
||||
|---|---:|
|
||||
| Total supply raw | `10451316981309788` |
|
||||
| Total supply units | `10,451,316,981.309788 cWUSDC` |
|
||||
| Proposed public circulating-supply method | `circulatingSupply = totalSupply - protocolControlledNonCirculatingBalances` |
|
||||
| Current conservative reportable supply before tracker-specific exclusions | `10,451,316,981.309788 cWUSDC` |
|
||||
|
||||
If CoinGecko, CMC, Etherscan, or another tracker requests treasury exclusions, provide a signed balance inventory for operator, bridge, treasury, and protocol-owned addresses at the requested block.
|
||||
|
||||
## Market / LP Evidence
|
||||
|
||||
| Venue | Pair | Address | Tracker URL | Status |
|
||||
|---|---|---|---|---|
|
||||
| Uniswap V3 | `cWUSDC/USDC` | `0x1Cf2e685682C7F7beF508F0Af15Dfb5CDda01ee3` | `https://dexscreener.com/ethereum/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3` | Candidate DexScreener URL; current DexScreener public API does not return the pair |
|
||||
| Uniswap V3 | `cWUSDC/USDC` | `0x1Cf2e685682C7F7beF508F0Af15Dfb5CDda01ee3` | `https://www.geckoterminal.com/eth/pools/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3` | Indexed; GeckoTerminal reserve about `$179.1416`; 24h volume about `$90.67` |
|
||||
| Uniswap V2 | `cWUSDC/USDC` | `0xC28706F899266b36BC43cc072b3a921BDf2C48D9` | `https://dexscreener.com/ethereum/0xc28706f899266b36bc43cc072b3a921bdf2c48d9` | Candidate DexScreener URL; current DexScreener public API does not return the pair |
|
||||
| Uniswap V2 | `cWUSDC/USDC` | `0xC28706F899266b36BC43cc072b3a921BDf2C48D9` | `https://www.geckoterminal.com/eth/pools/0xc28706f899266b36bc43cc072b3a921bdf2c48d9` | Indexed; GeckoTerminal reserve about `$4.3241`; 24h volume about `$114,770.23` |
|
||||
|
||||
Current DexScreener API probes:
|
||||
|
||||
- `https://api.dexscreener.com/token-pairs/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a` returns an empty array.
|
||||
- `https://api.dexscreener.com/tokens/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a` returns an empty array.
|
||||
- `https://api.dexscreener.com/orders/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a` returns no approved profile order.
|
||||
|
||||
CoinMarketCap DEX token page:
|
||||
|
||||
- `https://dex.coinmarketcap.com/token/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a/`
|
||||
|
||||
This confirms CMC DEX discoverability only. It does not mean the asset has been accepted as a full CoinMarketCap token listing with circulating supply, market cap, verified profile, and ranking.
|
||||
|
||||
Latest internal readiness evidence:
|
||||
|
||||
- `reports/status/mainnet-cwusdc-tracker-readiness-20260508.md`
|
||||
- `reports/status/engine-x-public-indexed-readiness-latest.json`
|
||||
- `reports/status/mainnet-cwusdc-usdc-preflight-latest.json`
|
||||
- `reports/status/mainnet-cwusdc-usdc-repeg-plan-latest.json`
|
||||
|
||||
## Valuation / Oracle Position
|
||||
|
||||
No direct third-party cWUSDC oracle feed is live. Until a direct feed is approved, use this precedence for internal reporting:
|
||||
|
||||
1. Accounting peg policy for cWUSDC as a compliant wrapped USD transport asset.
|
||||
2. Public DEX evidence only when official Mainnet USDC quote-side depth is sufficient.
|
||||
3. DexScreener, GeckoTerminal, and CMC DEX public LP/token pages as market evidence, with liquidity warnings when quote-starved.
|
||||
4. Internal token-aggregation canonical metadata and export reports.
|
||||
|
||||
Do not present the current V2 or V3 pools as listing-quality price discovery. The public V2 pair is heavily quote-starved, and the V3 pool has no active liquidity.
|
||||
|
||||
## Required Disclosure Language
|
||||
|
||||
Use the canonical disclosure language in `docs/04-configuration/GRU_RISK_AND_DISCLOSURE_LANGUAGE.md`.
|
||||
|
||||
Minimum tracker disclosure:
|
||||
|
||||
```text
|
||||
cWUSDC is the Ethereum Mainnet compliant wrapped transport representation of Chain 138 cUSDC in the DBIS GRU asset family. cWUSDC is not Circle-issued USDC and should not be represented as an official Circle asset. Public DEX liquidity should be interpreted only from current indexed pool evidence and should not be treated as listing-quality price discovery until depth is sufficient and sustained.
|
||||
```
|
||||
|
||||
## Submission Checklist
|
||||
|
||||
- [x] Verified contract link.
|
||||
- [x] Token name, symbol, decimals, and supply.
|
||||
- [x] Internal metadata registry path.
|
||||
- [x] Supply proof JSON.
|
||||
- [x] DexScreener candidate LP URLs.
|
||||
- [x] GeckoTerminal indexed LP URLs.
|
||||
- [x] CoinMarketCap DEX token URL.
|
||||
- [x] Public liquidity caveats.
|
||||
- [x] CoinGecko/CMC-style internal export path.
|
||||
- [x] External submission checklist prepared.
|
||||
- [ ] External CoinGecko listing accepted.
|
||||
- [ ] Full external CMC listing accepted.
|
||||
- [ ] External Etherscan token profile/logo update accepted.
|
||||
- [ ] DexScreener API indexing accepted.
|
||||
- [ ] External DexScreener token profile/social/logo update accepted.
|
||||
- [ ] Public circulating supply accepted by tracker.
|
||||
- [ ] Listing-quality official-USDC liquidity funded and sustained.
|
||||
|
||||
## External Submission Tasks
|
||||
|
||||
1. Submit or update CoinGecko using the contract, supply proof, metadata, LP URLs, and public docs in this packet.
|
||||
2. Submit or update CoinMarketCap with the same packet and the CMC-specific form fields; reference the existing CMC DEX token URL as discoverability evidence.
|
||||
3. Submit Etherscan token profile/logo/social updates from an account authorized for the token contract.
|
||||
4. Fund official Mainnet USDC, rerun `bash scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh`, then execute public LP repair only after quotes and min-outs are reviewed.
|
||||
5. Submit DexScreener Enhanced Token Info/profile updates after the token is accepted by the public API or through the marketplace flow.
|
||||
6. Provide any tracker-requested circulating-supply exclusion attestations.
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"requestType": "New Coin/Token Listing",
|
||||
"listingMode": "Active Listing",
|
||||
"asset": {
|
||||
"name": "Wrapped cUSDC",
|
||||
"symbol": "cWUSDC",
|
||||
"network": "Ethereum Mainnet",
|
||||
"chainId": 1,
|
||||
"contractAddress": "0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a",
|
||||
"decimals": 6,
|
||||
"assetClass": "Compliant wrapped public-network transport mirror",
|
||||
"canonicalSourceAsset": "Chain 138 cUSDC",
|
||||
"canonicalSourceAssetAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
|
||||
"canonicalSourceAssetExplorer": "https://explorer.d-bis.org/token/0xf22258f57794CC8E06237084b353Ab30fFfa640b",
|
||||
"description": "cWUSDC is the Ethereum Mainnet compliant wrapped transport representation of canonical Chain 138 cUSDC. It is a wrapped settlement and interoperability asset for the DBIS GRU/cW token mesh. It is not Circle-issued USDC."
|
||||
},
|
||||
"officialLinks": {
|
||||
"website": "https://d-bis.org/",
|
||||
"contactEmail": "submissions@d-bis.org",
|
||||
"supportEmail": "support@d-bis.org",
|
||||
"socialMediaEmail": "social.media@d-bis.org",
|
||||
"tokenInformation": "https://d-bis.org/gru/tokens",
|
||||
"logo32x32Svg": "https://d-bis.org/tokens/cwusdc.svg",
|
||||
"explorerToken": "https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a",
|
||||
"sourceVerification": "https://repo.sourcify.dev/contracts/full_match/1/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a/"
|
||||
},
|
||||
"apiFeedEvidence": {
|
||||
"chain138CusdcBlockscoutTokenApi": "https://explorer.d-bis.org/api/v2/tokens/0xf22258f57794CC8E06237084b353Ab30fFfa640b",
|
||||
"chain138CusdcBlockscoutTransfersApi": "https://explorer.d-bis.org/api/v2/tokens/0xf22258f57794CC8E06237084b353Ab30fFfa640b/transfers",
|
||||
"mainnetCwusdcEtherscanApi": "https://api.etherscan.io/v2/api?chainid=1&module=account&action=tokentx&contractaddress=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a",
|
||||
"staticAuditNote": "docs/04-configuration/etherscan/CUSDC_CWUSDC_ETHERSCAN_FEED_AUDIT.md",
|
||||
"latestInternalAuditJson": "reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.json",
|
||||
"latestInternalAuditMarkdown": "reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.md",
|
||||
"submissionNote": "Etherscan should display Ethereum Mainnet cWUSDC transfers and supply for the token page. Chain 138 cUSDC traffic is supporting source-asset evidence for the wrapped-token relationship, not traffic that should be merged into Etherscan's Ethereum token transfer totals."
|
||||
},
|
||||
"supply": {
|
||||
"totalSupplyUnits": "10451316981.309788",
|
||||
"totalSupplyRaw": "10451316981309788",
|
||||
"circulatingSupplyMethod": "circulatingSupply = totalSupply - protocolControlledNonCirculatingBalances",
|
||||
"supplyProof": "reports/status/mainnet-cwusdc-supply-proof-20260508.json"
|
||||
},
|
||||
"markets": {
|
||||
"geckoTerminalPools": [
|
||||
"https://www.geckoterminal.com/eth/pools/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3",
|
||||
"https://www.geckoterminal.com/eth/pools/0xc28706f899266b36bc43cc072b3a921bdf2c48d9"
|
||||
],
|
||||
"coinMarketCapDexToken": "https://dex.coinmarketcap.com/token/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a/",
|
||||
"candidateDexScreenerPools": [
|
||||
"https://dexscreener.com/ethereum/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3",
|
||||
"https://dexscreener.com/ethereum/0xc28706f899266b36bc43cc072b3a921bdf2c48d9"
|
||||
],
|
||||
"liquidityCaveat": "Current public LP evidence is shallow and quote-starved. Do not treat current pools as listing-quality depth until official Mainnet USDC funding and public LP repair are complete."
|
||||
},
|
||||
"attachments": [
|
||||
"docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md",
|
||||
"docs/04-configuration/coingecko/CWUSDC_MAINNET_EXTERNAL_SUBMISSION_CHECKLIST.md",
|
||||
"docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md",
|
||||
"https://d-bis.org/tokens/cwusdc.svg",
|
||||
"docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg",
|
||||
"docs/04-configuration/etherscan/CUSDC_CWUSDC_ETHERSCAN_FEED_AUDIT.md",
|
||||
"reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.json",
|
||||
"reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.md",
|
||||
"reports/status/cwusdc-external-trackers-live-latest.json",
|
||||
"reports/status/mainnet-cwusdc-supply-proof-20260508.json",
|
||||
"reports/status/mainnet-cwusdc-usdc-repeg-plan-latest.json"
|
||||
],
|
||||
"submissionNote": "The contract is verified on Etherscan and Sourcify and has 6 decimals. GeckoTerminal and CoinMarketCap DEX discoverability are live. CoinGecko simple token price API currently returns an empty object for the contract address, so this request is needed before Etherscan USD value and CoinGecko token-price integrations can resolve cWUSDC."
|
||||
}
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
**Fork for upstream PRs:** [Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters](https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters) → PR target [DefiLlama/DefiLlama-Adapters](https://github.com/DefiLlama/DefiLlama-Adapters).
|
||||
|
||||
**Open upstream adapters PR (DODO + `dfio_meta_main`):** [DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) — merge status and CI logs are authoritative for when production TVL reflects Chain 138. **Still `OPEN` on GitHub as of 2026-05-10.**
|
||||
|
||||
**Machine-readable touchpoints:** [`config/defillama-chain138-touchpoints.json`](../../../config/defillama-chain138-touchpoints.json).
|
||||
|
||||
**Public chain profile (X):** [Defi Oracle Meta](https://x.com/DefiOracleMeta) (`@DefiOracleMeta`) — use for **network / operator** messaging. Per-protocol listings (e.g. DODO on DefiLlama) may still reference that protocol’s own social accounts where upstream metadata requires it.
|
||||
@@ -16,13 +18,15 @@
|
||||
|
||||
DefiLlama defines TVL as **value locked in protocol contracts**, valued largely via **CoinGecko** where possible, with **on-chain** methods when needed ([methodology overview](https://docs.llama.fi/)). That is **instrument-agnostic**: compliant stablecoins and PMM pools are still ERC-20 balances in contracts. The **regulatory** story (EMI, issuer, reserve attestations) lives in **your** disclosures and listings; DefiLlama remains a **neutral TVL/volume/yields** surface — complementary to CoinGecko/CMC/Etherscan paths in [`METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md`](../metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md).
|
||||
|
||||
**DODO protocol breakdown:** if the per-chain table shows **`dfio_meta_main` as `0.00`** while other chains look normal, that is usually an **adapter pricing path** issue, not “no liquidity” on chain 138 — see [`../../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md`](../../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md).
|
||||
|
||||
---
|
||||
|
||||
## Metrics ↔ repositories (from docs.llama.fi “All Metrics We Track”)
|
||||
|
||||
| Metric | Repository (upstream) | Chain 138 relevance |
|
||||
|--------|-------------------------|---------------------|
|
||||
| TVL | [DefiLlama-Adapters](https://github.com/DefiLlama/DefiLlama-Adapters) | **Prepared for upstream PR:** DODO V2 DVM on `dfio_meta_main` (factory + `fromBlock`); companion **`defillama-server`** chain metadata + DODO listing rows committed locally — see [`DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md`](DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md) and [`config/defillama-chain138-touchpoints.json`](../../../config/defillama-chain138-touchpoints.json). Merge on upstream completes the public UI slice. |
|
||||
| TVL | [DefiLlama-Adapters](https://github.com/DefiLlama/DefiLlama-Adapters) | **Open:** [PR #19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) (DODO V2 DVM on `dfio_meta_main`, `chains.json`, hub stable **`fixBalancesTokens`**). Companion **`defillama-server`** chain metadata + DODO listing rows remain optional — see [`DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md`](DEFILLAMA_CHAIN138_SUBMISSION_CHECKLIST.md) and [`config/defillama-chain138-touchpoints.json`](../../../config/defillama-chain138-touchpoints.json). **Merge #19198** completes the adapters slice for public TVL attribution to `dfio_meta_main`. |
|
||||
| Fees / revenue / DEX volume / options / aggregators | [dimension-adapters](https://github.com/DefiLlama/dimension-adapters) | **Optional later** when you want volume/fees series on supported venues. |
|
||||
| Yields | [yield-server](https://github.com/DefiLlama/yield-server) | Optional if you expose yield-bearing pools with standard adapter patterns. |
|
||||
| Stablecoins (peg/supply) | [peggedassets-server](https://github.com/DefiLlama/peggedassets-server) | Optional if you want pegged-asset tracking for compliant stables. |
|
||||
@@ -85,7 +89,7 @@ DefiLlama defines TVL as **value locked in protocol contracts**, valued largely
|
||||
|
||||
Covers **exports patterns** (e.g. empty core TVL + staking), **`sumTokensExport`** from `./helper/unwrapLPs` for known owners/tokens (`owners`, `tokens`, `tokensAndOwners`, **`resolveLP`** for LP unwrap), **Solana** helpers, **unwrap** flows (`sumTokens2` + `resolveLP`), and **`getBlock`** from `../helper/http` when block height is missing for lesser-known EVM chains.
|
||||
|
||||
**Chain 138:** The current **DODO** contribution uses **factory event logs + `sumTokens`** (same family as upstream `projects/dodo`). For future adapters that TVL **fixed treasury wallets**, **vault contracts**, or **Uni V2/V3-style LP** balances on `dfio_meta_main`, prefer these helpers instead of reinventing balance aggregation.
|
||||
**Chain 138:** Upstream **`projects/dodo`** gains **`dfio_meta_main`** via [PR #19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) (factory logs + balance aggregation consistent with that PR’s final diff). For **fixed treasury wallets**, **vault contracts**, or **Uni V2/V3-style LP** TVL on `dfio_meta_main`, prefer the documented helpers instead of reinventing balance aggregation.
|
||||
|
||||
---
|
||||
|
||||
@@ -94,7 +98,7 @@ Covers **exports patterns** (e.g. empty core TVL + staking), **`sumTokensExport`
|
||||
| Item | Status | Notes |
|
||||
|------|--------|--------|
|
||||
| `@defillama/sdk` chain RPC + id | **Already present** | `dfio_meta_main` → 138 in SDK providers (no fork of SDK required for RPC). |
|
||||
| `chains.json` + `tokenMapping.js` + DODO `dfio_meta_main` | **PR to DefiLlama-Adapters** | Canonical cUSDT/cUSDC mapping for USD valuation; DVM factory `0xc93870594C7f83A0aE076c2e30b494Efc526b68E`, `fromBlock` factory deploy. |
|
||||
| `chains.json` + `tokenMapping.js` + DODO `dfio_meta_main` | **[PR #19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198)** (open) | Canonical cUSDT/cUSDC mapping for USD valuation; DVM factory `0xc93870594C7f83A0aE076c2e30b494Efc526b68E`, `fromBlock` factory deploy. |
|
||||
| Protocol card / listing text on defillama.com | **Optional separate PR** | Often [`defillama-server` protocol data](https://github.com/DefiLlama/defillama-server) — only if maintainers want a **new** or updated listing slug. |
|
||||
| Gitea mirror of fork | **Optional** | Use [`scripts/deployment/mirror-github-fork-to-gitea.sh`](../../../scripts/deployment/mirror-github-fork-to-gitea.sh) with tokens set. |
|
||||
| dimension-adapters / yield-server / … | **Optional** | Add when you have clear subgraph/RPC sources and reviewer-ready methodology. |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Chain 138 — DefiLlama gaps checklist (server, dimensions, forms)
|
||||
|
||||
Use this after the **DefiLlama-Adapters** TVL PR ([`dfio_meta_main` + DODO](../CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md)). Touchpoints JSON: [`config/defillama-chain138-touchpoints.json`](../../../config/defillama-chain138-touchpoints.json).
|
||||
Use this after the **DefiLlama-Adapters** TVL PR for **`dfio_meta_main` + DODO** — track merge status at **[DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198)** ([ecosystem map](../CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md), [TVL breakdown note](../../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md)). Touchpoints JSON: [`config/defillama-chain138-touchpoints.json`](../../../config/defillama-chain138-touchpoints.json).
|
||||
|
||||
**Chain vs protocol socials:** Official **Chain 138 / network** profile on X is [**@DefiOracleMeta**](https://x.com/DefiOracleMeta). A **DODO** adapter or listing PR may still cite **DODO’s** upstream Twitter where that matches DefiLlama’s existing **DODO AMM** row — do not conflate the two in copy.
|
||||
|
||||
@@ -17,7 +17,7 @@ Use this after the **DefiLlama-Adapters** TVL PR ([`dfio_meta_main` + DODO](../C
|
||||
| `defi/src/utils/normalizeChain.ts` | `chainCoingeckoIds["Defi Oracle Meta Mainnet"]` with `chainId: 138`; `chainLabelMap.dfio_meta_main` → display name |
|
||||
| `defi/src/protocols/data1.ts` | **DODO AMM** `chains` includes **Defi Oracle Meta Mainnet**; `oraclesBreakdown[0].proof` populated from audit docs |
|
||||
|
||||
**PR notes:** explain chain extension + listing alignment with merged TVL adapter; enable **Allow edits by maintainers**.
|
||||
**PR notes:** explain chain extension + listing alignment **after** DefiLlama-Adapters **PR #19198** (TVL on `dfio_meta_main`) **merges**; enable **Allow edits by maintainers**.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
# cWUSDC DexScreener Indexing and Profile Packet - 2026-05-09
|
||||
|
||||
## Asset
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Token | `Wrapped cUSDC` |
|
||||
| Symbol | `cWUSDC` |
|
||||
| Chain | Ethereum Mainnet |
|
||||
| Contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Decimals | `6` |
|
||||
| Website | `https://d-bis.org/` |
|
||||
| Contact email | `submissions@d-bis.org` |
|
||||
| Support email | `support@d-bis.org` |
|
||||
| Social/profile email | `social.media@d-bis.org` |
|
||||
| Token page | `https://d-bis.org/gru/tokens` |
|
||||
| Logo | `https://d-bis.org/tokens/cwusdc.svg` |
|
||||
| Logo source | `docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg` |
|
||||
|
||||
## Current DexScreener Status
|
||||
|
||||
The public DexScreener API does not yet index cWUSDC:
|
||||
|
||||
- `GET https://api.dexscreener.com/token-pairs/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a` returns `[]`.
|
||||
- `GET https://api.dexscreener.com/tokens/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a` returns `[]`.
|
||||
- `GET https://api.dexscreener.com/orders/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a` returns no approved token profile order.
|
||||
|
||||
Candidate pool URLs:
|
||||
|
||||
- `https://dexscreener.com/ethereum/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3`
|
||||
- `https://dexscreener.com/ethereum/0xc28706f899266b36bc43cc072b3a921bdf2c48d9`
|
||||
|
||||
## Indexing Prerequisites
|
||||
|
||||
DexScreener documents automatic token listing after the token is added to a liquidity pool and has at least one transaction. Current cWUSDC pools are not passing DexScreener API discovery, and the smallest current UniV2 repair canary is blocked by official Mainnet USDC funding.
|
||||
|
||||
Current funding facts:
|
||||
|
||||
| Item | Amount |
|
||||
|---|---:|
|
||||
| Wallet USDC | `0.343655 USDC` |
|
||||
| Smallest UniV2 repair canary requirement | `1,657.650239 USDC` |
|
||||
| Smallest UniV2 repair canary shortfall | `1,657.306584 USDC` |
|
||||
| Policy-floor public quote-side requirement | `2,497.832239 USDC` |
|
||||
| DODO defended parity requirement | `290,995.072514 USDC` |
|
||||
|
||||
## Actions
|
||||
|
||||
1. Fund at least `1,657.306584 USDC` for the smallest public UniV2 repair canary, or `2,497.488584 USDC` for the policy-floor public quote-side repair based on the current wallet balance.
|
||||
2. Rerun:
|
||||
|
||||
```bash
|
||||
bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh
|
||||
bash scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh
|
||||
EXECUTE=0 bash scripts/deployment/repair-mainnet-cwusdc-usdc-univ2-canary.sh
|
||||
```
|
||||
|
||||
3. Broadcast only after reviewing the quote and min-out values.
|
||||
4. Recheck:
|
||||
|
||||
```bash
|
||||
pnpm cwusdc:external-trackers
|
||||
```
|
||||
|
||||
5. If the token remains unindexed after on-chain repair, submit Enhanced Token Info/profile through DexScreener's marketplace flow using the fields in this packet.
|
||||
@@ -0,0 +1,63 @@
|
||||
# cUSDC / cWUSDC Etherscan Feed Audit
|
||||
|
||||
Status: repeatable API audit added. Run:
|
||||
|
||||
```bash
|
||||
set -a
|
||||
source .env
|
||||
set +a
|
||||
scripts/verify/audit-cusdc-cwusdc-etherscan-feeds.py
|
||||
```
|
||||
|
||||
Latest generated local outputs:
|
||||
|
||||
- `reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.md`
|
||||
- `reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.json`
|
||||
|
||||
## Relationship
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Canonical source asset | Chain 138 `cUSDC` |
|
||||
| Chain 138 cUSDC address | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
|
||||
| Wrapped public-network asset | Ethereum Mainnet `cWUSDC` |
|
||||
| Ethereum cWUSDC address | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Mapping source | `config/token-mapping-multichain.json` |
|
||||
| Metadata registry | `smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts` |
|
||||
|
||||
## Feed Interpretation
|
||||
|
||||
Etherscan should display Ethereum Mainnet `cWUSDC` transfer activity and supply for the Ethereum token page.
|
||||
|
||||
Chain 138 `cUSDC` traffic should be provided as supporting canonical source-asset evidence. It should not be represented as Ethereum Mainnet `cWUSDC` transfer activity, because Etherscan indexes Ethereum Mainnet for the submitted token contract.
|
||||
|
||||
Use this language when replying to Etherscan or tracker follow-up:
|
||||
|
||||
```text
|
||||
cWUSDC is the Ethereum Mainnet wrapped transport representation of canonical Chain 138 cUSDC. Please use the Ethereum Mainnet cWUSDC contract for Etherscan token-page transfers and supply, and use the Chain 138 cUSDC explorer/API feed as supporting evidence for the canonical source asset relationship.
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
| Feed | Endpoint |
|
||||
|---|---|
|
||||
| Chain 138 cUSDC metadata | `https://explorer.d-bis.org/api/v2/tokens/0xf22258f57794CC8E06237084b353Ab30fFfa640b` |
|
||||
| Chain 138 cUSDC transfers | `https://explorer.d-bis.org/api/v2/tokens/0xf22258f57794CC8E06237084b353Ab30fFfa640b/transfers` |
|
||||
| Ethereum cWUSDC transfers | `https://api.etherscan.io/v2/api?chainid=1&module=account&action=tokentx&contractaddress=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Ethereum cWUSDC supply | `https://api.etherscan.io/v2/api?chainid=1&module=stats&action=tokensupply&contractaddress=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
|
||||
## Latest Sample Summary
|
||||
|
||||
The latest local run generated:
|
||||
|
||||
| Feed | Supply | Recent sample transfers | Recent sample volume | Unique addresses in sample |
|
||||
|---|---:|---:|---:|---:|
|
||||
| Chain 138 cUSDC Blockscout | `38,601,011,267` | `150` | `75,129,540,009.210138` | `33` |
|
||||
| Ethereum cWUSDC Etherscan | `10,451,316,981.309788` | `150` | `1,001,693.375967` | `152` |
|
||||
|
||||
Latest observed sample hashes:
|
||||
|
||||
- Chain 138 cUSDC: `0xa3a9b9a6c21a90adacf88f06baddd2c10c8bcf8302b5b04c791dcbab81c734b1`
|
||||
- Ethereum cWUSDC: `0xc973c614014adc6d3678f184f8051147e615c0c8d4d809db51bc9d46f3af9488`
|
||||
|
||||
Common addresses in the recent API samples are a supporting signal only. The canonical linkage is established by the token mapping, metadata registry, and bridge/listing documentation.
|
||||
@@ -0,0 +1,160 @@
|
||||
# cWUSDC Etherscan Bridge and Cross-Chain Layer Map
|
||||
|
||||
Status: focused research packet for making Etherscan show USD value for Ethereum Mainnet `cWUSDC`.
|
||||
|
||||
## Goal
|
||||
|
||||
Target asset:
|
||||
|
||||
```text
|
||||
Network: Ethereum Mainnet
|
||||
Chain ID: 1
|
||||
Contract: 0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
Name: Wrapped cUSDC
|
||||
Symbol: cWUSDC
|
||||
Decimals: 6
|
||||
CAIP-19: eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
```
|
||||
|
||||
The objective is not merely to prove that cUSDC exists elsewhere. The objective is to make Etherscan display nonzero USD value for this exact Mainnet contract.
|
||||
|
||||
## Official Etherscan Surfaces
|
||||
|
||||
| Layer | Etherscan surface | What it can prove | Effect on USD Value |
|
||||
|---|---|---|---|
|
||||
| Contract | Verified source, ABI, creator, transactions; Foundry verification via `forge verify-contract` | The Mainnet contract identity and implementation | Required trust baseline; not a price source |
|
||||
| Token page | Logo, name, profile, links, token details | Etherscan-recognized token identity | Important prerequisite; not enough alone |
|
||||
| Token info API | `module=token&action=tokeninfo&chainid=1&contractaddress=...` | Etherscan-side metadata plus `tokenPriceUSD` if populated | Direct monitor surface for profile and price propagation |
|
||||
| Token holdings | Holder pages and token inventory rows | Whether Etherscan is applying a USD mark to balances | Final user-visible outcome |
|
||||
| Market cap fields | Onchain Market Cap and Circulating Supply Market Cap | Whether Etherscan has accepted a price and supply basis | Final token-page outcome |
|
||||
| V2 multichain API | Same API key and base URL, different `chainid` | Data for Etherscan-supported EVM chains | Useful for related wrapped deployments, but each chain remains separate |
|
||||
| V2 chainlist | `https://api.etherscan.io/v2/chainlist` | Which chains are first-class Etherscan V2 API surfaces | Defines what can be called Etherscan-family evidence |
|
||||
| L2 deposit/withdrawal APIs | `module=account&action=getdeposittxs` and related endpoints | Native Etherscan-indexed bridge movement for supported L2s | Evidence only unless tied to exact Mainnet price acceptance |
|
||||
| Nametags/labels | Address names and labels | Bridge, operator, treasury, exchange, or protocol context | Trust/provenance support only |
|
||||
| External links | Website/socials/whitepaper/official endpoints | Project legitimacy and support paths | Supports profile approval |
|
||||
| Blockscan family | Etherscan-family explorers for other EVM networks | Other chain deployments and activity | Separate listings; do not merge into Ethereum supply |
|
||||
|
||||
## Bridge and Cross-Chain Interpretation
|
||||
|
||||
Bridge evidence can help explain why `cWUSDC` exists on Ethereum and how it relates to base `cUSDC`, but it does not replace the USD price feed Etherscan needs for the Mainnet token page.
|
||||
|
||||
The Etherscan V2 `chainlist` endpoint is the boundary for Etherscan-family chain claims. If a chain ID is absent from `https://api.etherscan.io/v2/chainlist`, treat that chain's evidence as external provenance rather than native Etherscan V2 evidence. As of the latest local check, Chain 138 is not present in the Etherscan V2 chainlist.
|
||||
|
||||
Use bridge evidence for:
|
||||
|
||||
- Source asset provenance: base `cUSDC` to wrapped Mainnet `cWUSDC`.
|
||||
- Wrapped-token accounting: mint, burn, lock, release, or bridge-vault evidence.
|
||||
- Cross-chain family context: where related `cUSDC` and `cWUSDC` contracts live.
|
||||
- Supply reconciliation: why global family supply differs from Ethereum Mainnet `cWUSDC` supply.
|
||||
- Submission support: CoinGecko, CMC, Etherscan profile, and exchange/indexer packets.
|
||||
|
||||
Do not use bridge evidence for:
|
||||
|
||||
- Replacing Ethereum Mainnet `totalSupply()`.
|
||||
- Combining all cUSDC and cWUSDC supplies into the Ethereum token page supply.
|
||||
- Claiming Etherscan Value without a provider-accepted USD price for the exact Mainnet contract.
|
||||
- Treating Chain 138 balances as Mainnet circulating supply.
|
||||
|
||||
## Action Matrix
|
||||
|
||||
| Action | Repo-controlled | External approval needed | Priority |
|
||||
|---|---:|---:|---:|
|
||||
| Ethereum Mainnet supply/circulating attestation | yes | tracker acceptance | P0 |
|
||||
| Etherscan token profile packet | yes | Etherscan acceptance | P0 |
|
||||
| Etherscan `tokeninfo` monitor | yes | Etherscan propagation | P0 |
|
||||
| CoinGecko contract listing/update | packet yes | CoinGecko acceptance | P0 |
|
||||
| CMC listing/update | packet yes | CMC acceptance | P0 |
|
||||
| Global cUSDC/cWUSDC family proof | yes | optional reviewer acceptance | P1 |
|
||||
| Bridge provenance packet | yes | optional reviewer acceptance | P1 |
|
||||
| Multichain Etherscan-family checks | yes for supported chains | none for reads | P1 |
|
||||
| L2 deposit/withdrawal API checks | yes for supported chains | none for reads | P2 |
|
||||
| Chain 138 MetaMask logo/prices | partially | wallet/provider acceptance | Out of Etherscan Value critical path |
|
||||
|
||||
## Required Evidence Packet
|
||||
|
||||
For Etherscan and market-data submissions, attach or reference:
|
||||
|
||||
| Evidence | Location |
|
||||
|---|---|
|
||||
| Mainnet supply/circulating proof | `reports/status/cwusdc-supply-circulating-attestation-latest.json` and `.md` |
|
||||
| Global family proof, clearly marked separate | `reports/status/global-cusdc-cwusdc-family-supply-proof-latest.json` and `.md` |
|
||||
| Etherscan value monitor | `reports/status/cwusdc-etherscan-value-propagation-latest.json` and `.md` |
|
||||
| Etherscan profile packet | `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` |
|
||||
| Etherscan E2E recommendations | `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md` |
|
||||
| CoinGecko/CMC tracker packet | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` |
|
||||
| Public report APIs | `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1`, `https://explorer.d-bis.org/api/v1/report/cmc?chainId=1`, `https://explorer.d-bis.org/api/v1/report/all` |
|
||||
|
||||
## Operator Commands
|
||||
|
||||
Generate the exact Mainnet supply proof:
|
||||
|
||||
```bash
|
||||
python3 scripts/verify/generate-cwusdc-supply-circulating-attestation.py
|
||||
```
|
||||
|
||||
Generate the separate global cUSDC/cWUSDC family proof:
|
||||
|
||||
```bash
|
||||
python3 scripts/verify/generate-global-cusdc-cwusdc-family-supply-proof.py
|
||||
```
|
||||
|
||||
Monitor Etherscan page, Etherscan `tokeninfo`, CoinGecko, DexScreener, and GeckoTerminal propagation:
|
||||
|
||||
```bash
|
||||
python3 scripts/verify/monitor-cwusdc-etherscan-value-propagation.py
|
||||
```
|
||||
|
||||
Direct Etherscan `tokeninfo` probe:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://api.etherscan.io/v2/api?chainid=1&module=token&action=tokeninfo&contractaddress=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a&apikey=YourApiKeyToken' | jq .
|
||||
```
|
||||
|
||||
Direct Etherscan V2 chainlist probe:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://api.etherscan.io/v2/chainlist' | jq '{totalcount, chainids:[.result[].chainid]}'
|
||||
```
|
||||
|
||||
Direct Etherscan source-verification probe:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://api.etherscan.io/v2/api?chainid=1&module=contract&action=getsourcecode&address=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a&apikey=YourApiKeyToken' | jq '.result[0] | {ContractName, CompilerVersion, OptimizationUsed, Proxy, Implementation, LicenseType}'
|
||||
```
|
||||
|
||||
Foundry verification pattern for a deployed contract:
|
||||
|
||||
```bash
|
||||
forge verify-contract --watch --chain mainnet 0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a path/to/Contract.sol:ContractName --verifier etherscan --etherscan-api-key "$ETHERSCAN_API_KEY"
|
||||
```
|
||||
|
||||
Direct L2 deposit probe for the deployer/operator wallet:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://api.etherscan.io/v2/api?chainid=42161&module=account&action=getdeposittxs&address=0x4A666F96fC8764181194447A7dFdb7d471b301C8&page=1&offset=10&sort=desc&apikey=YourApiKeyToken' | jq .
|
||||
```
|
||||
|
||||
For this endpoint, `value` is native value in raw wei, while `tokenValue` is raw units for the reported `tokenAddress`. For example, `value=1195403000000000` is `0.001195403 ETH`; `tokenValue=598200000000000` with `tokenAddress=ETH` is `0.0005982 ETH`.
|
||||
|
||||
## Current Blocking Model
|
||||
|
||||
Etherscan Value should be treated as blocked until all of these are true:
|
||||
|
||||
1. Etherscan token profile is accepted and visible.
|
||||
2. Etherscan `tokeninfo` returns correct metadata for `cWUSDC`.
|
||||
3. Etherscan `tokeninfo.tokenPriceUSD` or token-page market cap fields become positive/nonblank.
|
||||
4. CoinGecko or CMC accepts a USD price for the exact Ethereum Mainnet contract.
|
||||
5. The Mainnet supply proof is submitted as the Ethereum token supply basis.
|
||||
|
||||
The global cUSDC/cWUSDC family proof is useful context, but it is intentionally not the supply basis for the Ethereum token page.
|
||||
|
||||
## References
|
||||
|
||||
- Etherscan V2 introduction: `https://docs.etherscan.io/etherscan-v2`
|
||||
- Etherscan V2 chainlist: `https://docs.etherscan.io/api-reference/endpoint/chainlist`
|
||||
- Etherscan L2 deposit transactions by address: `https://docs.etherscan.io/api-reference/endpoint/getdeposittxs`
|
||||
- Etherscan Foundry verification: `https://docs.etherscan.io/contract-verification/verify-with-foundry`
|
||||
- Etherscan supported chains: `https://docs.etherscan.io/supported-chains`
|
||||
- Etherscan token info API: `https://docs.etherscan.io/api-reference/endpoint/tokeninfo`
|
||||
- Etherscan token update guide: `https://info.etherscan.com/how-to-update-token-information-on-token-page/`
|
||||
- Etherscan token page guide: `https://info.etherscan.com/understanding-token-page/`
|
||||
@@ -0,0 +1,145 @@
|
||||
# cWUSDC Etherscan E2E Recommendations
|
||||
|
||||
Status: end-to-end submission and follow-up checklist for the Ethereum Mainnet cWUSDC Etherscan token profile.
|
||||
|
||||
## Goal
|
||||
|
||||
Complete the Etherscan token-profile submission with a coherent public identity, validated profile assets, domain-matched contact information, and clean post-submission follow-up evidence.
|
||||
|
||||
## Recommended Sequence
|
||||
|
||||
1. Confirm public website readiness.
|
||||
2. Confirm leadership/team professional-profile links.
|
||||
3. Submit the Etherscan token profile with the canonical fields.
|
||||
4. Monitor Etherscan approval and profile rendering.
|
||||
5. Reuse the same approved profile facts across CoinGecko, CMC, DexScreener, GeckoTerminal, wallets, and token-list submissions.
|
||||
|
||||
Canonical submission matrix: [../metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](../metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md). Use it to track repo-ready metadata, EIP-747 wallet payloads, Etherscan, CoinGecko, CMC, Chainlist, token-list, and DEX-terminal submissions without implying that MetaMask fiat prices can be forced from this repo alone.
|
||||
|
||||
Consolidated cWUSDC provider packet: [../CWUSDC_PROVIDER_SUBMISSION_PACKET.md](../CWUSDC_PROVIDER_SUBMISSION_PACKET.md). Use this as the shared narrative and evidence source, then use this Etherscan document for the Etherscan-specific sequence and post-submit checks.
|
||||
|
||||
Latest live page review: [../../../reports/status/cwusdc-etherscan-token-page-review-20260511.md](../../../reports/status/cwusdc-etherscan-token-page-review-20260511.md). As of the review, Etherscan resolves the Ethereum Mainnet wrapped `cWUSDC` contract and verified source, but the visible token surface still shows generic `ERC20 ***`, token reputation is `Unknown`, and both market-cap fields are blank. Treat Chain 138 Explorer `cUSDC` as source-asset/system-of-record evidence only; Etherscan submissions must remain scoped to Mainnet `cWUSDC`.
|
||||
|
||||
Decimal normalization fix: [../../../reports/status/cusdc-chain138-explorer-decimal-normalization-fix-20260511.md](../../../reports/status/cusdc-chain138-explorer-decimal-normalization-fix-20260511.md). The Chain 138 Explorer visible-liquidity issue was a 6-decimal raw-unit display problem: `5,180,095,723,066,127` raw units should render as `5,180,095,723.066127` for 6-decimal `cUSDC`/`cWUSDC` assets.
|
||||
|
||||
## Pre-Submit Checks
|
||||
|
||||
| Check | Recommendation |
|
||||
|---|---|
|
||||
| Website | Use `https://d-bis.org/` as the official website. |
|
||||
| Email | Use `submissions@d-bis.org`. |
|
||||
| Support email | Use `support@d-bis.org` only where a form asks for user support. |
|
||||
| Social/profile email | Use `social.media@d-bis.org` only where a form asks for social-media/profile ownership. |
|
||||
| Token contract | Submit exactly `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`. |
|
||||
| Logo | Use `https://d-bis.org/tokens/cwusdc.svg`; source mirror is `docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg`. |
|
||||
| Token name | Use `Wrapped cUSDC`. |
|
||||
| Symbol | Use `cWUSDC`. |
|
||||
| Description | Use the description in `CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md`. |
|
||||
| Team/profiles | Confirm `https://d-bis.org/leadership` has public team entries and professional profile links. |
|
||||
| Token explainer | Confirm `https://d-bis.org/gru/tokens` explains cUSDC / cWUSDC clearly. |
|
||||
| Contact page | Confirm `https://d-bis.org/contact` is live and does not contain placeholders. |
|
||||
|
||||
## Public Link Checks
|
||||
|
||||
Run before submission:
|
||||
|
||||
```bash
|
||||
for url in \
|
||||
https://d-bis.org/ \
|
||||
https://d-bis.org/contact \
|
||||
https://d-bis.org/leadership \
|
||||
https://d-bis.org/gru/tokens \
|
||||
https://d-bis.org/security \
|
||||
https://d-bis.org/.well-known/trust.json
|
||||
do
|
||||
curl -L --max-time 12 -o /dev/null -s -w "$url %{http_code} %{content_type}\n" "$url"
|
||||
done
|
||||
```
|
||||
|
||||
**Automate (repo):** from the workspace root, `bash scripts/verify/check-cwusdc-etherscan-prereq-urls.sh` (same URLs; exits non-zero if any response is not HTTP `200`).
|
||||
|
||||
Expected result: every URL returns HTTP `200`.
|
||||
|
||||
## Submission Language
|
||||
|
||||
Use neutral infrastructure wording:
|
||||
|
||||
`cWUSDC is the Ethereum Mainnet compliant wrapped transport representation of Chain 138 cUSDC in the DBIS GRU asset family. The token uses 6 decimals, is source-verified on Etherscan and Sourcify, and is intended for public-network mirrored settlement and proof workflows. cWUSDC is a DBIS transport asset and should not be presented as an official Circle-issued USDC token.`
|
||||
|
||||
Avoid:
|
||||
|
||||
- claiming cWUSDC is Circle-issued USDC;
|
||||
- claiming listing-quality public liquidity before USDC funding/repair is complete;
|
||||
- claiming CoinGecko or full CMC approval before external acceptance;
|
||||
- using personal email addresses or non-`d-bis.org` contact domains.
|
||||
|
||||
## Brand Consistency
|
||||
|
||||
| Surface | Recommendation |
|
||||
|---|---|
|
||||
| Etherscan | Use the 32x32 SVG and short institutional description. |
|
||||
| Wallets | Use the same cW* icon grammar; no chain badges inside token artwork. |
|
||||
| CoinGecko / CMC | Use the 512x512 PNG and the same token description, with liquidity caveats. |
|
||||
| DexScreener / GeckoTerminal | Use matching logo/social/profile links; include indexed LP URLs. |
|
||||
| Docs / whitepapers | Reference the semantic stack in `CW_TOKEN_BRANDING_SYSTEM_ANALYSIS.md`. |
|
||||
|
||||
## Post-Submit Checks
|
||||
|
||||
After Etherscan approval:
|
||||
|
||||
1. Capture the approved token page URL and screenshot.
|
||||
2. Confirm the logo renders clearly at token-list size and in the token page header.
|
||||
3. Confirm website, email, and social/profile fields are correct.
|
||||
4. Update `docs/04-configuration/coingecko/CWUSDC_MAINNET_EXTERNAL_SUBMISSION_CHECKLIST.md` from pending to accepted.
|
||||
5. Add the approval evidence to a status report under `reports/status/`.
|
||||
|
||||
## Follow-On Work
|
||||
|
||||
| Work item | Why it matters |
|
||||
|---|---|
|
||||
| CoinGecko profile submission | Needed for tracker lookup, public supply acceptance, and Etherscan USD value path. |
|
||||
| Full CMC token submission | Complements the CMC DEX page with full token metadata and supply profile. |
|
||||
| DexScreener / GeckoTerminal profile updates | Keeps LP surfaces visually consistent with Etherscan. |
|
||||
| Wallet token-list submissions | Improves token recognition in user wallets. |
|
||||
| Official-USDC liquidity repair | Required before making listing-quality market-depth claims. |
|
||||
| Bridge route validation | Required before claiming full two-way bridge production readiness. |
|
||||
|
||||
## MetaMask EIP-747 Path
|
||||
|
||||
Use the explorer wallet page as the primary practical MetaMask path:
|
||||
|
||||
`https://explorer.d-bis.org/wallet`
|
||||
|
||||
The page now reads the live Chain 138 MetaMask payload:
|
||||
|
||||
`https://explorer.d-bis.org/api/v1/config/metamask?chainId=138`
|
||||
|
||||
Operator/user sequence:
|
||||
|
||||
1. Add Chain 138 with `wallet_addEthereumChain`.
|
||||
2. Add featured tokens or all Chain 138 tokens with EIP-747 `wallet_watchAsset`.
|
||||
3. Approve each MetaMask prompt; EIP-747 intentionally requires user confirmation per token.
|
||||
4. Use the API report endpoints for prices and supply proof. MetaMask built-in fiat prices still depend on MetaMask/Consensys upstream asset and price providers, so this path provides wallet logos/token metadata but does not force native MetaMask price rendering.
|
||||
|
||||
Live metadata checks:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://explorer.d-bis.org/api/v1/config/metamask?chainId=138' \
|
||||
| jq '.addEthereumChain.chainName, (.watchAssets | length), .watchAssets[0]'
|
||||
|
||||
curl -fsS 'https://explorer.d-bis.org/api/v1/report/token-list?chainId=138' \
|
||||
| jq '.logoURI, (.tokens[] | select(.symbol=="cUSDC") | .logoURI)'
|
||||
```
|
||||
|
||||
## Canonical References
|
||||
|
||||
- Etherscan packet: `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md`
|
||||
- Consolidated cWUSDC provider packet: `docs/04-configuration/CWUSDC_PROVIDER_SUBMISSION_PACKET.md`
|
||||
- GRU provider positioning packet: `docs/04-configuration/GRU_PROVIDER_POSITIONING_PACKET.md`
|
||||
- Branding analysis: `docs/04-configuration/etherscan/CW_TOKEN_BRANDING_SYSTEM_ANALYSIS.md`
|
||||
- Brand assets page: `https://d-bis.org/brand-assets`
|
||||
- 32x32 SVG: `https://d-bis.org/tokens/cwusdc.svg`
|
||||
- 32x32 SVG source mirror: `docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg`
|
||||
- External tracker checklist: `docs/04-configuration/coingecko/CWUSDC_MAINNET_EXTERNAL_SUBMISSION_CHECKLIST.md`
|
||||
- Technical completion proof: `reports/status/mainnet-cwusdc-technical-completion-20260508.json`
|
||||
- Supply proof: `reports/status/mainnet-cwusdc-supply-proof-20260508.json`
|
||||
@@ -0,0 +1,185 @@
|
||||
# cWUSDC Etherscan Value Execution Plan
|
||||
|
||||
Status: single-goal execution plan for making Etherscan show USD value for Ethereum Mainnet `cWUSDC`.
|
||||
|
||||
## Goal
|
||||
|
||||
Make Etherscan show a nonzero USD value for:
|
||||
|
||||
```text
|
||||
0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
```
|
||||
|
||||
This is the only immediate objective for the current workstream. Chain 138 wallet UX, MetaMask local logos, Chainlink feeds, and third-party API probes are supporting work only when they help this Etherscan Value goal.
|
||||
|
||||
## Bottom Line
|
||||
|
||||
Etherscan Value is an off-chain indexer output. It is not controlled by the cWUSDC contract, by Chain 138 accounting, by token-list JSON, or by MetaMask EIP-747.
|
||||
|
||||
The likely Etherscan Value path is:
|
||||
|
||||
```text
|
||||
Etherscan token profile accepted
|
||||
+ trusted market-data provider accepts Mainnet cWUSDC
|
||||
+ provider has usable USD price / market data for this exact contract
|
||||
+ Etherscan refreshes its external price feed
|
||||
= Etherscan holder/token Value can become nonzero
|
||||
```
|
||||
|
||||
## Exact Asset Identity
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Network | Ethereum Mainnet |
|
||||
| Chain ID | `1` |
|
||||
| CAIP-19 | `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Name | `Wrapped cUSDC` |
|
||||
| Symbol | `cWUSDC` |
|
||||
| Decimals | `6` |
|
||||
| Etherscan page | `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Logo for Etherscan | `https://d-bis.org/tokens/cwusdc.svg` |
|
||||
| DBIS report logo | `https://explorer.d-bis.org/api/v1/report/logo/cUSDC` |
|
||||
|
||||
## Critical Path
|
||||
|
||||
| Priority | Action | Why it matters for Etherscan Value | Evidence of completion |
|
||||
|---:|---|---|---|
|
||||
| 1 | Submit/update Etherscan token profile/logo/socials | Etherscan must trust the token identity before downstream value display is credible | Etherscan page shows approved logo/profile |
|
||||
| 2 | Submit Mainnet cWUSDC to CoinGecko | CoinGecko is a likely Etherscan USD price source for ERC-20s | CoinGecko contract lookup returns cWUSDC with price |
|
||||
| 3 | Submit Mainnet cWUSDC to CoinMarketCap | CMC reinforces market-data coverage and DexScan presence | CMC token page/quotes exist beyond DexScan-only page |
|
||||
| 4 | Keep public cWUSDC/USDC DEX evidence current | Trackers may require market pair evidence before price acceptance | GeckoTerminal/CMC DEX/DexScreener pages show pair data |
|
||||
| 5 | Provide supply/circulating-supply proof | Market cap and price feeds often require supply provenance | Tracker accepts total/circulating supply |
|
||||
| 6 | Monitor Etherscan propagation | Etherscan may lag after provider acceptance | Etherscan holder/token rows show nonzero USD value |
|
||||
|
||||
## Repo-Ready Evidence
|
||||
|
||||
| Evidence | Status | Location |
|
||||
|---|---|---|
|
||||
| Etherscan bridge/cross-chain layer map | Ready | `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_BRIDGE_CROSSCHAIN_LAYER_MAP.md` |
|
||||
| Etherscan Value dossier | Ready | `reports/status/cwusdc-etherscan-value-dossier-latest.json` and `.md` |
|
||||
| Etherscan profile packet | Ready | `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` |
|
||||
| Etherscan E2E recommendations | Ready | `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md` |
|
||||
| External tracker checklist | Ready | `docs/04-configuration/coingecko/CWUSDC_MAINNET_EXTERNAL_SUBMISSION_CHECKLIST.md` |
|
||||
| Tracker submission packet | Ready | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` |
|
||||
| Supply proof | Ready | `reports/status/mainnet-cwusdc-supply-proof-20260508.json` |
|
||||
| Fresh supply/circulating attestation | Ready | `reports/status/cwusdc-supply-circulating-attestation-latest.json` and `.md` |
|
||||
| Global cUSDC/cWUSDC family supply proof | Separate reference only | `reports/status/global-cusdc-cwusdc-family-supply-proof-latest.json` and `.md`; do not use for Ethereum Etherscan Value |
|
||||
| Etherscan value propagation monitor | Ready | `reports/status/cwusdc-etherscan-value-propagation-latest.json` and `.md` |
|
||||
| CoinGecko-shaped API | Ready | `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1` |
|
||||
| CMC-shaped API | Ready | `https://explorer.d-bis.org/api/v1/report/cmc?chainId=1` |
|
||||
| Token-list API | Ready | `https://explorer.d-bis.org/api/v1/report/token-list?chainId=1` |
|
||||
| cWUSDC logo endpoint | Ready | `https://explorer.d-bis.org/api/v1/report/logo/cUSDC` |
|
||||
| GeckoTerminal V3 pool | Indexed | `https://www.geckoterminal.com/eth/pools/0x1cf2e685682c7f7bef508f0af15dfb5cdda01ee3` |
|
||||
| GeckoTerminal V2 pool | Indexed | `https://www.geckoterminal.com/eth/pools/0xc28706f899266b36bc43cc072b3a921bdf2c48d9` |
|
||||
| CMC DEX token page | Reachable | `https://dex.coinmarketcap.com/token/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a/` |
|
||||
|
||||
## Immediate Operator Tasks
|
||||
|
||||
1. Submit Etherscan token profile update.
|
||||
- Use `submissions@d-bis.org`.
|
||||
- Use `https://d-bis.org/tokens/cwusdc.svg`.
|
||||
- Use `Wrapped cUSDC` / `cWUSDC`.
|
||||
- Use the neutral description from `CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md`.
|
||||
|
||||
2. Submit CoinGecko Mainnet cWUSDC listing/update.
|
||||
- Submit the Ethereum Mainnet contract, not Chain 138 cUSDC.
|
||||
- Include supply proof and tracker caveats.
|
||||
- Include GeckoTerminal and CMC DEX evidence.
|
||||
|
||||
3. Submit CMC listing/update.
|
||||
- Reference the existing CMC DEX token page.
|
||||
- Attach CMC report endpoint and supply proof.
|
||||
|
||||
4. Record all external confirmations.
|
||||
- Ticket ID, account/email used, submitted URLs, screenshots, and response.
|
||||
- Write status evidence under `reports/status/`.
|
||||
|
||||
5. Monitor for propagation.
|
||||
- Etherscan token page.
|
||||
- Etherscan holder pages.
|
||||
- CoinGecko contract lookup.
|
||||
- CMC token/quotes page.
|
||||
|
||||
## API Checks
|
||||
|
||||
Generate the current supply/circulating-supply attestation:
|
||||
|
||||
```bash
|
||||
python3 scripts/verify/generate-cwusdc-supply-circulating-attestation.py
|
||||
```
|
||||
|
||||
Generate the separate global cUSDC/cWUSDC family proof:
|
||||
|
||||
```bash
|
||||
python3 scripts/verify/generate-global-cusdc-cwusdc-family-supply-proof.py
|
||||
```
|
||||
|
||||
Monitor Etherscan value propagation and upstream blockers:
|
||||
|
||||
```bash
|
||||
python3 scripts/verify/monitor-cwusdc-etherscan-value-propagation.py
|
||||
```
|
||||
|
||||
Build the full Etherscan Value dossier:
|
||||
|
||||
```bash
|
||||
pnpm cwusdc:etherscan-dossier
|
||||
```
|
||||
|
||||
Repo-controlled readiness:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1' \
|
||||
| jq '.tokens[] | select(.symbol=="cWUSDC") | {symbol,contract_address,logo_uri,total_supply,circulating_supply,market_cap:(.market_data.market_cap // .marketCapUsd // null),tracker_caveats}'
|
||||
```
|
||||
|
||||
Etherscan public page:
|
||||
|
||||
```bash
|
||||
curl -L --max-time 15 -s -o /dev/null -w '%{http_code} %{url_effective}\n' \
|
||||
'https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a'
|
||||
```
|
||||
|
||||
CoinGecko after acceptance:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://api.coingecko.com/api/v3/simple/token_price/ethereum?contract_addresses=0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a&vs_currencies=usd&include_market_cap=true&include_24hr_vol=true&include_last_updated_at=true'
|
||||
```
|
||||
|
||||
DexScreener indexing check:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://api.dexscreener.com/token-pairs/v1/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a'
|
||||
```
|
||||
|
||||
## Out of Scope Unless It Supports Etherscan Value
|
||||
|
||||
| Work | Status for this goal |
|
||||
|---|---|
|
||||
| Chain 138 logo in MetaMask | Helpful for UX; not an Etherscan Value blocker |
|
||||
| MetaMask EIP-747 refresh | Helpful for local wallet metadata; not an Etherscan Value blocker |
|
||||
| MetaMask Snap allowlist | Not required for Etherscan Value |
|
||||
| Chainlink cWUSDC/USD feed | Future institutional oracle target; not immediate Etherscan Value path |
|
||||
| Alchemy/Moralis/thirdweb API probes | Useful diagnostics; not primary until Etherscan/CoinGecko/CMC submissions are done |
|
||||
| Additional cW* pools | Useful market evidence only if they produce trusted public price data |
|
||||
|
||||
## Blocking Reality
|
||||
|
||||
Etherscan Value cannot be forced from this repo alone. The repo can provide a clean evidence package, public APIs, logos, supply proof, and DEX evidence. The value flips only after Etherscan or its trusted upstream price providers accept a USD mark for the exact Ethereum Mainnet cWUSDC contract.
|
||||
|
||||
## Current Latest Monitor Result
|
||||
|
||||
As of the latest local run, the supply/circulating-supply attestation is generated and ready for submission. The propagation monitor still reports:
|
||||
|
||||
- Etherscan Onchain Market Cap is blank.
|
||||
- Etherscan Circulating Supply Market Cap is blank.
|
||||
- CoinGecko contract price API does not return a positive USD price.
|
||||
|
||||
This means the two focused tasks are split as follows:
|
||||
|
||||
| Task | Current state | Next action |
|
||||
|---|---|---|
|
||||
| Provide supply/circulating-supply proof | Complete repo-side; latest attestation generated | Attach `cwusdc-supply-circulating-attestation-latest.*` to Etherscan/CoinGecko/CMC submissions |
|
||||
| Provide global family supply proof | Complete repo-side; separate proof generated | Use only as family/context evidence; do not use as Ethereum Mainnet cWUSDC supply |
|
||||
| Monitor Etherscan propagation | Complete repo-side; monitor generated | Re-run monitor after every external submission/approval until Etherscan market cap/value fields become nonblank |
|
||||
@@ -0,0 +1,81 @@
|
||||
# cWUSDC Evidence Bundle Index
|
||||
|
||||
Status: institutional submission index for Ethereum Mainnet `cWUSDC`.
|
||||
|
||||
## Scope
|
||||
|
||||
This bundle is for:
|
||||
|
||||
```text
|
||||
Network: Ethereum Mainnet
|
||||
Contract: 0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
CAIP-19: eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
Name: Wrapped cUSDC
|
||||
Symbol: cWUSDC
|
||||
Decimals: 6
|
||||
```
|
||||
|
||||
Chain 138 `cUSDC` and global cUSDC/cWUSDC family evidence are context only. They are not the Ethereum Mainnet cWUSDC token-page supply basis.
|
||||
|
||||
## Primary Evidence
|
||||
|
||||
| Artifact | Path / URL | Purpose | Status |
|
||||
|---|---|---|---|
|
||||
| Etherscan token page | `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | Public Mainnet token surface | Live; market cap blank |
|
||||
| Etherscan Value dossier | `reports/status/cwusdc-etherscan-value-dossier-latest.md` | Single current readiness packet | Repo-ready |
|
||||
| Institutional readiness review | `reports/status/cwusdc-institutional-readiness-review-20260511.md` | Scored gap and recommendation report | Current |
|
||||
| Supply/circulating attestation | `reports/status/cwusdc-supply-circulating-attestation-latest.md` | Mainnet supply basis | Current |
|
||||
| Global family supply proof | `reports/status/global-cusdc-cwusdc-family-supply-proof-latest.md` | Cross-chain context only | Current |
|
||||
| cUSDC/cWUSDC feed audit | `reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.md` | Source/wrapped relationship evidence | Current |
|
||||
| Etherscan token-page review | `reports/status/cwusdc-etherscan-token-page-review-20260511.md` | Manual/live page-state review | Current |
|
||||
| Mainnet role audit | `reports/status/cwusdc-mainnet-role-audit-latest.md` | Known-candidate admin/minter/burner role snapshot | Current |
|
||||
| Role deployment appendix | `reports/status/cwusdc-role-deployment-appendix-latest.md` | Role-event to repo-record reconciliation appendix | Current |
|
||||
| Institutional doc link check | `reports/status/cwusdc-institutional-doc-link-check-latest.md` | Narrow link-check for this packet | Current |
|
||||
| Provider submission prefill | `reports/status/cwusdc-provider-submission-prefill-latest.md` | Prefilled fields and screenshot capture checklist | Current |
|
||||
| Provider monitor snapshot | `reports/status/cwusdc-provider-monitoring-snapshot-latest.md` | Scheduled-monitor output surface | Current |
|
||||
| Provider handoff | `reports/status/cwusdc-provider-handoff-latest.md` | Public provider readiness state | Current |
|
||||
| External tracker probes | `reports/status/cwusdc-external-trackers-live-latest.md` | CoinGecko/CMC/DexScreener/GeckoTerminal checks | Current |
|
||||
|
||||
## Submission Documents
|
||||
|
||||
| Document | Purpose |
|
||||
|---|---|
|
||||
| `docs/04-configuration/CWUSDC_PROVIDER_SUBMISSION_PACKET.md` | Shared cross-provider narrative and facts |
|
||||
| `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` | Etherscan profile copy/paste packet |
|
||||
| `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md` | Etherscan submission and follow-up checklist |
|
||||
| `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_VALUE_EXECUTION_PLAN.md` | Etherscan USD Value execution path |
|
||||
| `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_BRIDGE_CROSSCHAIN_LAYER_MAP.md` | Bridge/cross-chain evidence boundaries |
|
||||
| `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` | CoinGecko/CMC tracker packet |
|
||||
| `docs/04-configuration/dexscreener/CWUSDC_DEXSCREENER_INDEXING_AND_PROFILE_PACKET_20260509.md` | DexScreener indexing/profile packet |
|
||||
| `docs/04-configuration/metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md` | Wallet/provider matrix |
|
||||
|
||||
## Institutional Control Documents
|
||||
|
||||
| Document | Purpose |
|
||||
|---|---|
|
||||
| `docs/04-configuration/etherscan/CWUSDC_SUPPLY_AND_CIRCULATING_METHODOLOGY.md` | Mainnet supply/circulating methodology |
|
||||
| `docs/04-configuration/etherscan/CWUSDC_SECURITY_AND_AUDIT_DISCLOSURE.md` | Audit posture and controls disclosure |
|
||||
| `docs/04-configuration/etherscan/CWUSDC_PROVIDER_RESPONSE_TRACKER.md` | External ticket/status tracker |
|
||||
| `docs/04-configuration/etherscan/CWUSDC_LIQUIDITY_READINESS_NO_BROADCAST_PLAN.md` | No-broadcast liquidity readiness plan |
|
||||
|
||||
## Refresh Commands
|
||||
|
||||
```bash
|
||||
pnpm cwusdc:etherscan-dossier
|
||||
pnpm cwusdc:role-audit
|
||||
pnpm cwusdc:role-appendix
|
||||
pnpm cwusdc:doc-links
|
||||
pnpm cwusdc:submission-prefill
|
||||
pnpm cwusdc:provider-checks
|
||||
pnpm cwusdc:provider-ci
|
||||
pnpm cwusdc:provider-monitor
|
||||
pnpm cwusdc:evidence-bundle
|
||||
```
|
||||
|
||||
## Evidence Rules
|
||||
|
||||
- Use only Ethereum Mainnet cWUSDC supply for Etherscan Value submissions.
|
||||
- Use Chain 138 cUSDC as source-asset provenance only.
|
||||
- Use global family supply only as context and disclose double-counting risk.
|
||||
- Do not claim accepted CoinGecko, CMC, DexScreener, MetaMask, or Etherscan Value status until the public provider page/API confirms it.
|
||||
- Do not claim 1:1 peg or institutional liquidity depth while official Mainnet USDC quote-side liquidity remains thin.
|
||||
@@ -0,0 +1,65 @@
|
||||
# cWUSDC Liquidity Readiness No-Broadcast Plan
|
||||
|
||||
Status: planning document only. This file does not authorize transactions.
|
||||
|
||||
## Purpose
|
||||
|
||||
Prepare the repo-side plan for improving public cWUSDC/USDC liquidity evidence without broadcasting transactions or moving funds from this document.
|
||||
|
||||
## Current Boundary
|
||||
|
||||
The current provider work is submission-ready, but liquidity is not institutionally deep. Etherscan/token trackers can index public facts, but a robust value claim requires accepted external price feeds and visible, non-dust official quote-side liquidity.
|
||||
|
||||
## No-Broadcast Rules
|
||||
|
||||
- Do not approve, swap, add liquidity, remove liquidity, bridge, or mint from this plan.
|
||||
- Do not claim 1:1 peg quality until official Mainnet USDC quote-side depth supports it.
|
||||
- Do not use Chain 138 cUSDC activity as Ethereum Mainnet cWUSDC trading volume.
|
||||
- Do not use internal netting as public DEX activity.
|
||||
|
||||
## Readiness Inputs
|
||||
|
||||
| Input | Required before live action |
|
||||
|---|---|
|
||||
| Official Mainnet USDC available | Amount, source, wallet, tx proof |
|
||||
| ETH gas reserve | Enough for approval, add-liquidity, swap proof, and monitoring |
|
||||
| Target pool | Uniswap v3/v2/DODO address and expected quote behavior |
|
||||
| Slippage policy | Max slippage, minOut, deadline |
|
||||
| Event policy | Required swaps/liquidity events for tracker freshness |
|
||||
| Rollback policy | What to do if pool price moves outside tolerance |
|
||||
|
||||
## Current Public Surfaces
|
||||
|
||||
| Surface | Role | Current interpretation |
|
||||
|---|---|---|
|
||||
| Uniswap v3 cWUSDC/USDC | Primary indexed evidence surface | Visible on GeckoTerminal; liquidity thin |
|
||||
| Uniswap v2 cWUSDC/USDC | Legacy indexed evidence surface | Visible on GeckoTerminal; liquidity very thin |
|
||||
| DexScreener token APIs | Tracker discoverability | Currently empty for cWUSDC |
|
||||
| CMC DEX | DEX discoverability | Public probe passes |
|
||||
|
||||
## If USDC Becomes Available
|
||||
|
||||
1. Re-run:
|
||||
|
||||
```bash
|
||||
pnpm cwusdc:etherscan-dossier
|
||||
pnpm cwusdc:provider-checks
|
||||
```
|
||||
|
||||
2. Snapshot balances and pool state.
|
||||
3. Simulate target liquidity action with no broadcast.
|
||||
4. Confirm expected reserve and price impact.
|
||||
5. Execute only with explicit operator approval.
|
||||
6. Re-run provider checks after confirmations.
|
||||
7. Capture pair URLs, tx hashes, and reserve changes.
|
||||
|
||||
## Institutional Claim Gate
|
||||
|
||||
Do not make the following claims until evidence supports them:
|
||||
|
||||
| Claim | Required evidence |
|
||||
|---|---|
|
||||
| cWUSDC has Etherscan USD Value | Etherscan holder/token page shows nonblank USD value/market cap |
|
||||
| cWUSDC has accepted public market price | CoinGecko or CMC returns exact-contract positive USD price |
|
||||
| cWUSDC/USDC is 1:1 supported | Official USDC quote-side liquidity and real public swaps support the claim |
|
||||
| cWUSDC has DEX discoverability | DexScreener/GeckoTerminal/CMC DEX return visible pair data |
|
||||
@@ -0,0 +1,95 @@
|
||||
# cWUSDC Mainnet Etherscan Profile Packet
|
||||
|
||||
Status: ready for Etherscan token profile submission, using `submissions@d-bis.org` as the official contact email. The submitter still must confirm the public team/profile links on the live website.
|
||||
|
||||
## Copy-Paste Fields
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Token contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Network | Ethereum Mainnet |
|
||||
| Token name | `Wrapped cUSDC` |
|
||||
| Symbol | `cWUSDC` |
|
||||
| Decimals | `6` |
|
||||
| Official website | `https://d-bis.org/` |
|
||||
| Contact email | `submissions@d-bis.org` |
|
||||
| Support email | `support@d-bis.org` |
|
||||
| Social/profile email | `social.media@d-bis.org` |
|
||||
| 32x32 SVG logo | `https://d-bis.org/tokens/cwusdc.svg` |
|
||||
| 32x32 SVG source | `docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg` |
|
||||
| Larger PNG logo | `docs/04-configuration/coingecko/logos/cUSDC-512x512.png` |
|
||||
| Token SVG source logo | `smom-dbis-138/services/token-aggregation/public/token-logos/gru/cUSDC.svg` |
|
||||
| Etherscan token page | `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Source contract | `smom-dbis-138/contracts/tokens/CompliantWrappedToken.sol` |
|
||||
| Tracker packet | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` |
|
||||
| Supply proof | `reports/status/mainnet-cwusdc-supply-proof-20260508.json` |
|
||||
| cUSDC/cWUSDC API feed proof | `docs/04-configuration/etherscan/CUSDC_CWUSDC_ETHERSCAN_FEED_AUDIT.md`; latest generated local outputs are `reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.md` and `reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.json` |
|
||||
| Technical completion proof | `reports/status/mainnet-cwusdc-technical-completion-20260508.json` |
|
||||
| Branding system analysis | `docs/04-configuration/etherscan/CW_TOKEN_BRANDING_SYSTEM_ANALYSIS.md` |
|
||||
| E2E recommendations | `docs/04-configuration/etherscan/CWUSDC_ETHERSCAN_E2E_RECOMMENDATIONS.md` |
|
||||
|
||||
## Etherscan Notice Matrix
|
||||
|
||||
| Etherscan requirement | Current evidence | Submitter action |
|
||||
|---|---|---|
|
||||
| Mandatory website, email, and 32x32 SVG logo provided | Website is `https://d-bis.org/`; contact email is `submissions@d-bis.org`; 32x32 SVG asset is hosted at `https://d-bis.org/tokens/cwusdc.svg` and mirrored in this packet. | Use `submissions@d-bis.org` in the Etherscan form. |
|
||||
| Email/contact email matches official website domain | Required domain is `d-bis.org`; selected mailbox is `submissions@d-bis.org`. | Use `submissions@d-bis.org`. |
|
||||
| Support and social contact paths are domain-matched | Support is `support@d-bis.org`; social/profile contact is `social.media@d-bis.org`. | Use these only where a form asks for support or social-media/profile ownership. |
|
||||
| Official website accessible and safe | `curl -L https://d-bis.org/` returned HTTP `200` on 2026-05-09. | Confirm in browser from the Etherscan account session. |
|
||||
| Website links work and placeholders are updated | Live homepage exposes project pages including `/about`, `/leadership`, `/gru/tokens`, `/legal`, `/contact`, `/security`, and `/.well-known/trust.json`; sampled pages returned HTTP `200` on 2026-05-09. | Before submitting, click through the public nav and remove or fix any visible placeholders. |
|
||||
| Website has clear project/token information | `https://d-bis.org/gru/tokens` is the public token directory; `https://d-bis.org/about` and `https://d-bis.org/gru/overview` describe DBIS/GRU context. | Ensure the `cWUSDC` row or token detail is visible and points to the Mainnet contract. |
|
||||
| Contract adheres to ERC-20 specs | Contract is verified and implements the compliant wrapped token ERC-20 surface; local source is `CompliantWrappedToken.sol`. | No extra action unless Etherscan asks for audit or source notes. |
|
||||
| Contract is valid and the right address | Mainnet cWUSDC contract is `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`; supply proof and tracker packet point to the same address. | Paste the exact checksum address. |
|
||||
| Name/symbol/creative properties avoid infringement | Submit as `Wrapped cUSDC` / `cWUSDC`, a DBIS compliant wrapped transport token. | Do not imply official Circle/USDC sponsorship; describe it as a wrapped transport representation of Chain 138 `cUSDC`. |
|
||||
| Not fraudulent or misrepresenting public entities/projects | Website, contract, and packet describe DBIS/GRU and cWUSDC as project-owned infrastructure. | Keep submission language narrow; avoid claiming governmental or third-party issuer status unless separately documented. |
|
||||
| Uses/deployed on Ethereum blockchain | Contract is on Ethereum Mainnet chain ID `1`. | Select Ethereum Mainnet in Etherscan. |
|
||||
| Team/founders clearly presented with professional profile links | `https://d-bis.org/leadership` is live. | Confirm leadership entries include supporting professional links such as LinkedIn or equivalent. If not, add those links to the website before submitting. |
|
||||
|
||||
## Suggested Description
|
||||
|
||||
`cWUSDC is the Ethereum Mainnet compliant wrapped transport representation of Chain 138 cUSDC in the DBIS GRU asset family. The token uses 6 decimals, is source-verified on Etherscan and Sourcify, and is intended for public-network mirrored settlement and proof workflows. cWUSDC is a DBIS transport asset and should not be presented as an official Circle-issued USDC token.`
|
||||
|
||||
## cUSDC / cWUSDC API Feed Position
|
||||
|
||||
Etherscan should index and display Ethereum Mainnet activity for the `cWUSDC` token contract only. Chain 138 `cUSDC` traffic is not expected to be added to the Etherscan token transfer totals, but it should be referenced as the canonical source-asset feed that `cWUSDC` wraps.
|
||||
|
||||
Latest local API audit:
|
||||
|
||||
- Chain 138 source token: `cUSDC` at `0xf22258f57794CC8E06237084b353Ab30fFfa640b`
|
||||
- Ethereum wrapped token: `cWUSDC` at `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`
|
||||
- Mapping source: `config/token-mapping-multichain.json`
|
||||
- Static audit note: `docs/04-configuration/etherscan/CUSDC_CWUSDC_ETHERSCAN_FEED_AUDIT.md`
|
||||
- Evidence packet: `reports/status/cusdc-cwusdc-etherscan-feed-audit-latest.md`
|
||||
|
||||
Submission language:
|
||||
|
||||
`cWUSDC is the Ethereum Mainnet wrapped transport representation of canonical Chain 138 cUSDC. Please use the Ethereum Mainnet cWUSDC contract for Etherscan token-page transfers and supply, and use the Chain 138 cUSDC explorer/API feed only as supporting evidence for the canonical source asset relationship.`
|
||||
|
||||
## Logo Rationale
|
||||
|
||||
The submitted 32x32 mark uses a repeatable cW* symbolic grammar: the outer `C` represents currency-class fiat cash, the inner `c` represents compliant electronic money, the `W` represents a wrapped / bridged transport form, and the `USD` label represents the ISO-4217 denomination. The design is intentionally institutional and settlement-oriented, not a claim of Circle-issued USDC branding.
|
||||
|
||||
## Links To Include
|
||||
|
||||
- Website: `https://d-bis.org/`
|
||||
- Brand assets: `https://d-bis.org/brand-assets`
|
||||
- 32x32 SVG logo: `https://d-bis.org/tokens/cwusdc.svg`
|
||||
- Token directory: `https://d-bis.org/gru/tokens`
|
||||
- Leadership: `https://d-bis.org/leadership`
|
||||
- Contact: `https://d-bis.org/contact`
|
||||
- Security: `https://d-bis.org/security`
|
||||
- Trust anchors: `https://d-bis.org/.well-known/trust.json`
|
||||
- Explorer: `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`
|
||||
- Chain 138 explorer: `https://explorer.d-bis.org/`
|
||||
- Compact cWUSDC price/supply evidence API: `https://explorer.d-bis.org/token-aggregation/api/v1/report/token-price/cWUSDC?chainId=1`
|
||||
- Chain 138 source cUSDC evidence API: `https://explorer.d-bis.org/token-aggregation/api/v1/report/token-price/cUSDC?chainId=138`
|
||||
- CoinGecko-format cWUSDC report API: `https://explorer.d-bis.org/token-aggregation/api/v1/report/coingecko?chainId=1`
|
||||
- CMC-format cWUSDC report API: `https://explorer.d-bis.org/token-aggregation/api/v1/report/cmc?chainId=1`
|
||||
- Docs: `https://docs.d-bis.org/`
|
||||
|
||||
## Submission Guardrails
|
||||
|
||||
- Do not claim listing-quality public liquidity until the official-USDC liquidity gaps in `reports/status/mainnet-cwusdc-usdc-repeg-plan-latest.json` are funded and repaired.
|
||||
- Do not claim CoinGecko or full CoinMarketCap listing acceptance until the external tracker pages are live.
|
||||
- Do not describe cWUSDC as Circle-issued USDC. Use `compliant wrapped transport representation of Chain 138 cUSDC`.
|
||||
- Use `submissions@d-bis.org` and ensure the mailbox can respond to Etherscan verification follow-up.
|
||||
@@ -0,0 +1,53 @@
|
||||
# cWUSDC Provider Response Tracker
|
||||
|
||||
Status: operator-updated tracker for external provider submissions and responses.
|
||||
|
||||
## Submission Tracker
|
||||
|
||||
| Provider | Status | Submitted date | Account/contact | Ticket / PR / form ID | Public URL | Latest response | Next action |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| Etherscan profile | `not_recorded` | TBD | `submissions@d-bis.org` | TBD | `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | Not recorded | Submit/re-submit profile packet. |
|
||||
| CoinGecko | `not_recorded` | TBD | TBD | TBD | TBD | Not recorded | Submit tracker packet for exact Mainnet contract. |
|
||||
| CoinMarketCap | `not_recorded` | TBD | TBD | TBD | CMC DEX page visible | Not recorded | Submit/update full token profile. |
|
||||
| DexScreener | `not_recorded` | TBD | TBD | TBD | TBD | API currently returns no pairs | Refresh pair evidence and request profile/indexing. |
|
||||
| GeckoTerminal | `visible_partial` | TBD | TBD | TBD | V2/V3 pool APIs visible | Pool data visible, but liquidity thin | Keep pool evidence fresh. |
|
||||
| MetaMask provider price | `not_recorded` | TBD | TBD | TBD | N/A | No native price acceptance recorded | Wait on upstream provider acceptance. |
|
||||
|
||||
## Status Values
|
||||
|
||||
Use only these values:
|
||||
|
||||
```text
|
||||
not_recorded
|
||||
drafted
|
||||
submitted
|
||||
provider_question
|
||||
accepted
|
||||
rejected
|
||||
blocked_external
|
||||
visible_partial
|
||||
closed_no_action
|
||||
```
|
||||
|
||||
## Update Rules
|
||||
|
||||
- Record the exact contract and CAIP-19 in every ticket.
|
||||
- Record the account/email used.
|
||||
- Record submission timestamp.
|
||||
- Attach screenshots or API responses under `reports/status/`.
|
||||
- Do not mark `accepted` unless the public provider page/API confirms acceptance.
|
||||
- Keep Etherscan, CoinGecko, CMC, DexScreener, and MetaMask price statuses separate.
|
||||
|
||||
## Standard Submission Identity
|
||||
|
||||
```text
|
||||
Network: Ethereum Mainnet
|
||||
Contract: 0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
CAIP-19: eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
Name: Wrapped cUSDC
|
||||
Symbol: cWUSDC
|
||||
Decimals: 6
|
||||
Website: https://d-bis.org/
|
||||
Logo: https://d-bis.org/tokens/cwusdc.svg
|
||||
Contact: submissions@d-bis.org
|
||||
```
|
||||
@@ -0,0 +1,100 @@
|
||||
# cWUSDC Security and Audit Disclosure
|
||||
|
||||
Status: institutional controls disclosure for provider submissions while formal external audit evidence is not yet recorded in this repo.
|
||||
|
||||
## Current Audit Posture
|
||||
|
||||
No formal third-party audit URL is recorded in the current cWUSDC Etherscan evidence packet.
|
||||
|
||||
Until a formal audit is available and submitted through Etherscan's audit route, provider-facing materials must use this posture:
|
||||
|
||||
```text
|
||||
The cWUSDC Mainnet contract is source-verified and ABI-visible on Etherscan. A formal third-party audit URL has not yet been recorded in the current submission packet. DBIS maintains operational controls, source verification evidence, supply attestations, and monitoring reports; this should not be represented as a completed third-party audit.
|
||||
```
|
||||
|
||||
## Verified Contract Evidence
|
||||
|
||||
Latest dossier evidence reports:
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Verified | `true` |
|
||||
| Contract name | `CompliantWrappedToken` |
|
||||
| Compiler | `v0.8.20+commit.a1b79de6` |
|
||||
| Optimization | enabled, `200` runs |
|
||||
| EVM version | `london` |
|
||||
| Proxy | `0` |
|
||||
| ABI available | `true` |
|
||||
|
||||
Evidence:
|
||||
|
||||
```text
|
||||
reports/status/cwusdc-etherscan-value-dossier-latest.json
|
||||
```
|
||||
|
||||
## Operational Controls
|
||||
|
||||
| Control | Current evidence |
|
||||
|---|---|
|
||||
| Source verification | Etherscan `getsourcecode` check in dossier |
|
||||
| Supply monitoring | `cwusdc-supply-circulating-attestation-latest.*` |
|
||||
| Provider readiness monitoring | `cwusdc-provider-handoff-latest.*` |
|
||||
| Etherscan Value monitoring | `cwusdc-etherscan-value-propagation-latest.*` |
|
||||
| Cross-chain boundary disclosure | `CWUSDC_ETHERSCAN_BRIDGE_CROSSCHAIN_LAYER_MAP.md` |
|
||||
| Mainnet-only supply policy | `CWUSDC_SUPPLY_AND_CIRCULATING_METHODOLOGY.md` |
|
||||
| Role/control snapshot | `reports/status/cwusdc-mainnet-role-audit-latest.md` |
|
||||
|
||||
## Remaining Audit Tasks
|
||||
|
||||
| Priority | Task | Status |
|
||||
|---:|---|---|
|
||||
| P0 | Identify whether a formal audit exists for `CompliantWrappedToken` | Open |
|
||||
| P0 | If audit exists, add URL/hash to this packet and Etherscan submission | Open |
|
||||
| P1 | If no audit exists, publish unaudited status in provider packet | Complete in this disclosure |
|
||||
| P1 | Add admin/owner/mint/burn role review artifact | Complete as read-only known-candidate snapshot; unknown role members still require event/deployment-log review |
|
||||
| P1 | Add incident-response contact and escalation path to public docs | Complete in provider packet |
|
||||
|
||||
## Latest Role Snapshot
|
||||
|
||||
Latest read-only role audit:
|
||||
|
||||
```text
|
||||
reports/status/cwusdc-mainnet-role-audit-latest.json
|
||||
reports/status/cwusdc-mainnet-role-audit-latest.md
|
||||
```
|
||||
|
||||
Current observed candidate role state:
|
||||
|
||||
- `deployer` has `DEFAULT_ADMIN_ROLE`.
|
||||
- `cwBridgeMainnet` (`0x2bF74583206A49Be07E0E8A94197C12987AbD7B5`) has `MINTER_ROLE` and `BURNER_ROLE`.
|
||||
- The checked relay/router/pool/vault candidates do not have `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, or `BURNER_ROLE`.
|
||||
- `MINTER_ROLE` and `BURNER_ROLE` are administered by `DEFAULT_ADMIN_ROLE`.
|
||||
|
||||
The event-log reconstruction currently observes the deployer as the effective admin and the Mainnet cW bridge as the effective minter/burner. Limitation: provider log limits or pruned responses can still require independent deployment-record review before treating this as a formal audit.
|
||||
|
||||
## Incident Response
|
||||
|
||||
| Purpose | Contact / URL |
|
||||
|---|---|
|
||||
| Provider submissions | `submissions@d-bis.org` |
|
||||
| User support | `support@d-bis.org` |
|
||||
| Security / responsible disclosure | `https://d-bis.org/security` |
|
||||
| General contact | `https://d-bis.org/contact` |
|
||||
| Trust metadata | `https://d-bis.org/.well-known/trust.json` |
|
||||
|
||||
## Provider Boundary
|
||||
|
||||
Do not write:
|
||||
|
||||
```text
|
||||
cWUSDC is audited.
|
||||
```
|
||||
|
||||
Unless a formal audit URL is attached and verified.
|
||||
|
||||
Use:
|
||||
|
||||
```text
|
||||
cWUSDC is source-verified on Etherscan; formal third-party audit evidence is not yet recorded in the current submission packet.
|
||||
```
|
||||
@@ -0,0 +1,84 @@
|
||||
# cWUSDC Supply and Circulating Methodology
|
||||
|
||||
Status: institutional methodology for Ethereum Mainnet `cWUSDC` provider submissions.
|
||||
|
||||
## Asset Boundary
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Network | Ethereum Mainnet |
|
||||
| Chain ID | `1` |
|
||||
| Contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| CAIP-19 | `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Name | `Wrapped cUSDC` |
|
||||
| Symbol | `cWUSDC` |
|
||||
| Decimals | `6` |
|
||||
|
||||
## Methodology
|
||||
|
||||
Total supply is read from the Ethereum Mainnet cWUSDC contract through Etherscan/API evidence and normalized by the token's 6-decimal divisor.
|
||||
|
||||
Circulating supply defaults to total supply unless a tracker requests a specific exclusion policy and the excluded balances are explicitly identified, documented, and re-generated with that policy.
|
||||
|
||||
Current formula:
|
||||
|
||||
```text
|
||||
circulatingSupply = totalSupply - explicitlyExcludedProtocolControlledNonCirculatingBalances
|
||||
```
|
||||
|
||||
Current default:
|
||||
|
||||
```text
|
||||
excludedProtocolControlledNonCirculatingBalances = 0
|
||||
```
|
||||
|
||||
## Current Attestation
|
||||
|
||||
Latest generated evidence:
|
||||
|
||||
```text
|
||||
reports/status/cwusdc-supply-circulating-attestation-latest.json
|
||||
reports/status/cwusdc-supply-circulating-attestation-latest.md
|
||||
```
|
||||
|
||||
Latest values:
|
||||
|
||||
```text
|
||||
totalSupply = 10,451,316,981.309788 cWUSDC
|
||||
circulatingSupply = 10,451,316,981.309788 cWUSDC
|
||||
```
|
||||
|
||||
## Exclusion Policy
|
||||
|
||||
No wallet, vault, pool, operator, bridge, or treasury balance is excluded by default.
|
||||
|
||||
If a tracker requests exclusions:
|
||||
|
||||
1. Identify the exact address.
|
||||
2. Identify the legal/control reason for exclusion.
|
||||
3. Capture the on-chain balance at a reference block.
|
||||
4. Re-run the supply attestation with explicit exclusion labels.
|
||||
5. Attach the generated JSON and Markdown to the tracker response.
|
||||
|
||||
## Cross-Chain Boundary
|
||||
|
||||
Chain 138 `cUSDC`, other cUSDC contracts, and other cWUSDC deployments are not part of the Ethereum Mainnet cWUSDC token-page supply.
|
||||
|
||||
Global family supply proof may be attached only as context:
|
||||
|
||||
```text
|
||||
reports/status/global-cusdc-cwusdc-family-supply-proof-latest.json
|
||||
reports/status/global-cusdc-cwusdc-family-supply-proof-latest.md
|
||||
```
|
||||
|
||||
Provider-facing warning:
|
||||
|
||||
```text
|
||||
Global cUSDC/cWUSDC family totals should not be used as Ethereum Mainnet cWUSDC market-cap input. They are cross-chain family inventory and may double-count source and wrapped representations unless a tracker-approved methodology is applied.
|
||||
```
|
||||
|
||||
## Refresh Command
|
||||
|
||||
```bash
|
||||
python3 scripts/verify/generate-cwusdc-supply-circulating-attestation.py
|
||||
```
|
||||
@@ -0,0 +1,97 @@
|
||||
# cW Token Branding System Analysis
|
||||
|
||||
Status: brand-governance reference for cWUSDC and the broader cW* compliant wrapped token family.
|
||||
|
||||
## Purpose
|
||||
|
||||
This note records the branding framework used for Etherscan, wallet, explorer, protocol, and tracker submissions. It treats the cWUSDC mark as part of a repeatable monetary-symbol system, not as a one-off token icon.
|
||||
|
||||
## Semantic Stack
|
||||
|
||||
| Element | Meaning |
|
||||
|---|---|
|
||||
| Outer `C` | Currency-class fiat cash instrument |
|
||||
| Inner `c` | Compliant electronic money |
|
||||
| `W` | Wrapped / bridged representation |
|
||||
| `USD` | ISO-4217 dollar denomination |
|
||||
|
||||
The icon encodes `compliant wrapped USD-denominated fiat currency` in a compact 32x32 asset. This is the preferred explanation when a reviewer asks why the mark uses currency-ring geometry or blue stable-value visual language.
|
||||
|
||||
## Revised Design Evaluation
|
||||
|
||||
| Category | Score |
|
||||
|---|---:|
|
||||
| Originality | `8.6 / 10` |
|
||||
| Brand architecture | `9.2 / 10` |
|
||||
| Symbolic coherence | `9.4 / 10` |
|
||||
| Regulatory / institutional positioning | `9.1 / 10` |
|
||||
| Final professional score | `9.0 / 10` |
|
||||
|
||||
Professional grade: `A`.
|
||||
|
||||
## Ecosystem Fit
|
||||
|
||||
The mark is strongest in regulated financial-infrastructure contexts:
|
||||
|
||||
| Context | Fit | Notes |
|
||||
|---|---|---|
|
||||
| Etherscan token profile | High | Compact, legible, and institutionally conservative. |
|
||||
| Wallet token lists | High | The nested currency grammar survives small icon presentation. |
|
||||
| Explorer token pages | High | White-on-blue reserve-money language reads cleanly in dark and light UI. |
|
||||
| Protocol documentation | High | The glyph stack maps directly to the cW* asset model. |
|
||||
| Institutional decks | High | The visual tone suggests settlement, compliance, and treasury rails. |
|
||||
| Retail meme-token positioning | Low | The mark intentionally avoids speculative or mascot-driven crypto cues. |
|
||||
|
||||
## Currency Scalability
|
||||
|
||||
The model scales across ISO-4217 variants by preserving the outer/inner/wrapped structure and changing only the denomination label and optional currency accent.
|
||||
|
||||
| Variant | Denomination label | Notes |
|
||||
|---|---|---|
|
||||
| `cWUSDC` | `USD` | Current Etherscan profile asset. |
|
||||
| `cWEURC` / `cWEURT` | `EUR` | Use the same structure with euro-denomination label. |
|
||||
| `cWGBPC` / `cWGBPT` | `GBP` | Preserve outer C; avoid pound-sign clutter at 32x32. |
|
||||
| `cWAUDC` / `cWAUDT` | `AUD` | Works directly with the existing label geometry. |
|
||||
| `cWJPYC` / `cWJPYT` | `JPY` | Prefer ISO label over yen symbol for small-size legibility. |
|
||||
| `cWCHFC` / `cWCHFT` | `CHF` | ISO label is clearer than symbol-based treatment. |
|
||||
| `cWCADC` / `cWCADT` | `CAD` | Same structure; optional maple/red accents should be avoided for institutional neutrality. |
|
||||
|
||||
## Network Scalability
|
||||
|
||||
The brand should remain token-first and chain-neutral. Network identity belongs in the surrounding wallet/explorer UI, not inside the 32x32 token mark.
|
||||
|
||||
| Network context | Fit | Recommendation |
|
||||
|---|---|---|
|
||||
| Ethereum Mainnet | High | Use the canonical cW* mark and chain metadata separately. |
|
||||
| Base / Optimism / Arbitrum | High | Do not add L2 badges inside the token icon. |
|
||||
| Polygon / Gnosis / Avalanche / BSC / Celo | High | Keep the token mark stable across networks for recognizability. |
|
||||
| Chain 138 origin context | High | Use c* native marks for canonical assets and cW* marks for public wrapped transport forms. |
|
||||
|
||||
## UX Risks
|
||||
|
||||
| Risk | Mitigation |
|
||||
|---|---|
|
||||
| Visual proximity to existing stablecoin marks | Use the DBIS blue spectrum, interrupted outer C, custom W bridge stroke, and explicit `cW*` naming. |
|
||||
| Bottom denomination compression at 32x32 | Use three-letter ISO labels, moderate tracking, and a small backing shape when needed. |
|
||||
| Overloading the icon with chain/network badges | Keep network identity out of the icon; express it in token-list metadata. |
|
||||
| Confusion with official third-party issuers | State clearly that cWUSDC is a DBIS compliant wrapped transport representation of Chain 138 cUSDC, not Circle-issued USDC. |
|
||||
| Ticker variants becoming visually inconsistent | Preserve the outer C, inner c, W, and ISO-label layout across all cW* assets. |
|
||||
|
||||
## Strategic Recommendations
|
||||
|
||||
- Position cW* as regulated tokenized money infrastructure, not speculative crypto branding.
|
||||
- Use a consistent cW* mark family across all public networks.
|
||||
- Keep the canonical `c*` and wrapped `cW*` families visually related but distinct.
|
||||
- Prefer ISO-4217 labels over currency symbols inside 32x32 icons.
|
||||
- Avoid chain-specific badges in the token artwork; use token-list metadata for network context.
|
||||
- Use the Etherscan 32x32 SVG as the small-size reference and the 512x512 PNG family for tracker/wallet contexts.
|
||||
|
||||
## Current Canonical Assets
|
||||
|
||||
| Asset | Path |
|
||||
|---|---|
|
||||
| cWUSDC 32x32 Etherscan SVG | `docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg` |
|
||||
| cUSDC / cWUSDC 512x512 PNG | `docs/04-configuration/coingecko/logos/cUSDC-512x512.png` |
|
||||
| cUSDC source SVG | `smom-dbis-138/services/token-aggregation/public/token-logos/gru/cUSDC.svg` |
|
||||
| Etherscan profile packet | `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` |
|
||||
|
||||
15
docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg
Normal file
15
docs/04-configuration/etherscan/assets/cWUSDC-32x32.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" role="img" aria-label="DBIS cWUSDC token logo">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="4" y1="3" x2="28" y2="29" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#1F8FE5"/>
|
||||
<stop offset="1" stop-color="#0A3D91"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="32" height="32" rx="7" fill="url(#bg)"/>
|
||||
<path d="M23.65 8.45A10.65 10.65 0 1 0 23.8 23.35" fill="none" stroke="#F8FBFF" stroke-width="2.45" stroke-linecap="round"/>
|
||||
<path d="M20.55 11.35A6.85 6.85 0 1 0 20.65 20.75" fill="none" stroke="#FFFFFF" stroke-width="2.05" stroke-linecap="round"/>
|
||||
<path d="M12.45 14.05l2.1 5.05 1.55-3.15 1.55 3.15 2.1-5.05" fill="none" stroke="#FFFFFF" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12.95 12.35h6.1M12.95 21h6.1" fill="none" stroke="#D8E8FF" stroke-width=".8" stroke-linecap="round"/>
|
||||
<rect x="10.75" y="24" width="10.5" height="3.75" rx="1.85" fill="#0B347C" opacity=".32"/>
|
||||
<text x="16" y="26.85" text-anchor="middle" font-family="Inter, Manrope, Arial, sans-serif" font-size="3.25" font-weight="700" letter-spacing=".45" fill="#FFFFFF">USD</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,392 @@
|
||||
# MetaMask Asset and Price Provider Submission Matrix
|
||||
|
||||
Status: canonical repo-side path for making Chain 138 and GRU / GRU v2 `c*` and `cW*` metadata correct, then submitting the same facts to the external providers that MetaMask, wallets, explorers, and market-data surfaces commonly depend on.
|
||||
|
||||
Source-summary packet: [METAMASK_EIP747_CONTRACT_METADATA_REFERENCE_PACKET.md](METAMASK_EIP747_CONTRACT_METADATA_REFERENCE_PACKET.md).
|
||||
|
||||
API feed spider-web packet: [METAMASK_CWUSDC_API_FEED_SPIDER_WEB_RESEARCH.md](METAMASK_CWUSDC_API_FEED_SPIDER_WEB_RESEARCH.md).
|
||||
|
||||
Provider positioning packet: [../GRU_PROVIDER_POSITIONING_PACKET.md](../GRU_PROVIDER_POSITIONING_PACKET.md).
|
||||
|
||||
Current execution focus: make Etherscan show USD Value for Ethereum Mainnet `cWUSDC` at `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`. Use [../etherscan/CWUSDC_ETHERSCAN_VALUE_EXECUTION_PLAN.md](../etherscan/CWUSDC_ETHERSCAN_VALUE_EXECUTION_PLAN.md) as the primary runbook. All other provider work is supporting evidence unless it directly helps Etherscan's trusted upstream price path.
|
||||
|
||||
Latest execution status: [../../../reports/status/cwusdc-provider-next-steps-execution-status-latest.md](../../../reports/status/cwusdc-provider-next-steps-execution-status-latest.md). Current public probes show Etherscan page, CMC DEX page, and GeckoTerminal pool APIs visible; CoinGecko token-price API and DexScreener token APIs are still external blockers.
|
||||
|
||||
Non-manual automation: `pnpm cwusdc:provider-checks` runs all public/read-only provider checks and writes `reports/status/cwusdc-provider-handoff-latest.md`; `pnpm cwusdc:provider-ci` is the CI-safe gate that fails only on repo-controlled prerequisites and reports external provider blockers as advisory.
|
||||
|
||||
Non-manual task list: [../CWUSDC_NON_MANUAL_PROVIDER_TASKS.md](../CWUSDC_NON_MANUAL_PROVIDER_TASKS.md).
|
||||
|
||||
## GRU / Chain 138 Provider Positioning
|
||||
|
||||
The GRU framework is not a cryptocurrency, stablecoin, or speculative digital asset system. GRU is the governing monetary-policy framework for a reserve-backed institutional settlement architecture. Chain 138 is the synchronized settlement, verification, and reconciliation layer through which reserve positions, transactional states, and collateral validations are recorded and continuously checked.
|
||||
|
||||
Provider-facing language should describe the ecosystem as programmable settlement and verification infrastructure for reserve-backed monetary instruments, sovereign-grade financial assets, commodities, and institutional settlement workflows. It should not describe GRU or Chain 138 as a speculative token model, yield product, algorithmic stablecoin, or crypto-economic asset system.
|
||||
|
||||
Chain 138 acts as the aggregated system-of-record for underlying holdings, reserve balances, and settlement positions. Reserve evidence is expected to remain independently verifiable through institutional sources such as UCC filings, Euroclear records, exchange reporting systems, regulated custodians, and qualified financial counterparties. API-driven validation, reconciliation, rebasing, and audit processes are expected to operate on rolling 6-second verification intervals and maintain the internal 20% operational buffer above required collateralization.
|
||||
|
||||
| Layer | Provider-facing interpretation | Reserve / settlement rule |
|
||||
|---|---|---|
|
||||
| `M00` GRU | Physical and commodity reserve layer across XAU, Precious Metals, Battery Materials, Base Metals, and Building Materials. | Each 1 M00 GRU allocation carries five asset-class indices at `1.2` indexed units each before collateral adjustment. Physical assets apply the collateral adjustment factor `(0.9475^4) = ~0.80596628`, so each `1.2` indexed allocation corresponds to approximately `1.489` SKR-adjusted physical units. |
|
||||
| `M0` GRU | Cash reserves, cash equivalents, sovereign and central bank-issued instruments, bonds, promissory notes, MTNs, and LTNs. | No LTV adjustment is applied inside the accounting framework because qualifying instruments are supported by underlying cash reserves maintained at a `5:1` reserve coverage ratio. Portfolio eligibility is limited to seasoned AAA-rated and top-tier institutional paper, including qualifying emerging-market sovereign and quasi-sovereign issuances that satisfy internal credit, liquidity, and reserve-grade standards. |
|
||||
| `M1` GRU | Transactional settlement layer that dynamically bridges and rebalances the M00 and M0 reserve layers. | Settlement exposure may not exceed `25:1` relative to available M00 GRU reserves or `5:1` relative to available M0 GRU reserves. When utilization approaches thresholds, execution must be segmented into sequential tranches so settlement remains collateralized within available M00 and M0 reserve capacity. |
|
||||
|
||||
### MetaMask Money rail and mUSD — internal GRU alignment (narrative)
|
||||
|
||||
Use this subsection for **DBIS / provider-facing narrative consistency** only. It does **not** assert that MetaMask has officially bound product names (`Money`, `mUSD`, “cash”) to these contracts; when MetaMask publishes CAIP-19 IDs, token-list rows, or controller mappings, **reconcile this table to their identifiers** before any external claim.
|
||||
|
||||
| External / wallet concept | GRU / DBIS interpretation | On-chain / transport anchor |
|
||||
|----------------------------|---------------------------|-----------------------------|
|
||||
| **MetaMask Money rail** | Wallet UX and balance/rate surfaces for a **cash-like** segment, sitting above ordinary “crypto” accounts. Aligns narratively with **GRU** as the **monetary-policy and settlement framing** (M0/M1 roles in the table above), not as a substitute for reserve evidence or Chain 138 system-of-record duties. | No single hub contract; depends on MetaMask Money account + balance service implementation. |
|
||||
| **mUSD** (MetaMask product denomination, *internal mapping*) | **ISO-4217 USD–compliant** GRU family on the hub, and **wrapped transport** off the hub. Same **economic denomination** as compliant USD on Chain 138; off-hub mirrors are **cW\*** transports, not Circle-issued USDC. | **Chain 138 (hub):** primary settlement token **`cUSDC`** at `0xf22258f57794CC8E06237084b353Ab30fFfa640b` (6 decimals) — PMM and liquidity rail per canonical token config. **GRU v2 / staged x402 face:** **`cUSDC_V2`** at `0x219522c60e83dEe01FC5b0329d6fA8fD84b9D13d` on Chain 138 (`familySymbol: cUSDC`, `preferredForX402`, liquidity still on `cUSDC` until cutover — see `smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts`). **Non–Chain 138 (wrapped):** **`cWUSDC`** on Ethereum Mainnet at `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` (6 decimals) — same submission and CAIP discipline as the rest of this matrix; do not mix Chain 138 `cUSDC` activity with Mainnet `cWUSDC` provider stats. |
|
||||
|
||||
**Operational rule:** treat **mUSD ↔ cUSDC / cUSDC_V2** as **hub-native GRU USD**, and **mUSD ↔ cWUSDC** as **public-network wrapped GRU USD transport** (`cW*`), always with the disclaimers in [GRU_RISK_AND_DISCLOSURE_LANGUAGE.md](../GRU_RISK_AND_DISCLOSURE_LANGUAGE.md) and the non-crypto positioning in this document.
|
||||
|
||||
**Cross-references (discoverability):**
|
||||
|
||||
- [METAMASK_EIP747_CONTRACT_METADATA_REFERENCE_PACKET.md](METAMASK_EIP747_CONTRACT_METADATA_REFERENCE_PACKET.md) — EIP-747 and legacy contract-metadata constraints; links back here for Money/mUSD narrative.
|
||||
- [../GRU_PROVIDER_POSITIONING_PACKET.md](../GRU_PROVIDER_POSITIONING_PACKET.md) — provider-facing GRU / Chain 138 / `cW*` framing.
|
||||
- [../CWUSDC_PROVIDER_SUBMISSION_PACKET.md](../CWUSDC_PROVIDER_SUBMISSION_PACKET.md) — Mainnet `cWUSDC` identity and evidence table.
|
||||
- Canonical tokens and Explorer alignment: [../../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md](../../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) (hub `cUSDC` / supply), [../../11-references/CONTRACT_ADDRESSES_REFERENCE.md](../../11-references/CONTRACT_ADDRESSES_REFERENCE.md), [../../11-references/ADDRESS_MATRIX_AND_STATUS.md](../../11-references/ADDRESS_MATRIX_AND_STATUS.md).
|
||||
- Hub vs v2 face token: `smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts` (`cUSDC`, `cUSDC_V2`).
|
||||
- DefiLlama DODO breakdown when **`dfio_meta_main` shows `0.00`:** [../../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md](../../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md).
|
||||
- **Full replay and maintenance (master reference):** [../../00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md](../../00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md) — MetaMask Money/mUSD steps, DefiLlama fork/PR checklist, PR **#19198** lifecycle, JSON touchpoints.
|
||||
|
||||
Provider submissions should keep the participant-language broad enough for retail users, commercial enterprises, banking professionals, sovereign institutions, and macroeconomic reviewers: GRU defines the monetary-policy framework; Chain 138 provides the auditable distributed-ledger environment where fiat currencies, commodities, securities, reserve positions, and settlement states can be synchronized without relying on speculative token mechanics.
|
||||
|
||||
### Canonical Positioning Packets
|
||||
|
||||
| Packet | Use |
|
||||
|---|---|
|
||||
| [../GRU_PROVIDER_POSITIONING_PACKET.md](../GRU_PROVIDER_POSITIONING_PACKET.md) | Short provider-facing narrative and language rules for GRU, Chain 138, c*, and cW*. |
|
||||
| [../GRU_RESERVE_LAYER_EXPLAINER.md](../GRU_RESERVE_LAYER_EXPLAINER.md) | M00, M0, and M1 reserve-layer explanation with collateral adjustment and utilization constraints. |
|
||||
| [../CHAIN138_SYSTEM_OF_RECORD_MODEL.md](../CHAIN138_SYSTEM_OF_RECORD_MODEL.md) | Boundary model for what Chain 138 records, verifies, and does not replace. |
|
||||
| [../GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md](../GRU_NOT_CRYPTO_NOT_STABLECOIN_FAQ.md) | Defensive FAQ for providers, wallet users, and institutional reviewers. |
|
||||
| [../GRU_RISK_AND_DISCLOSURE_LANGUAGE.md](../GRU_RISK_AND_DISCLOSURE_LANGUAGE.md) | Reusable non-affiliation, price, liquidity, reserve evidence, and utilization disclaimers. |
|
||||
| [../RESERVE_VERIFICATION_EVIDENCE_INDEX.md](../RESERVE_VERIFICATION_EVIDENCE_INDEX.md) | Evidence map for reserve, supply, collateral, settlement, and provider-acceptance artifacts. |
|
||||
| [../CWUSDC_PROVIDER_SUBMISSION_PACKET.md](../CWUSDC_PROVIDER_SUBMISSION_PACKET.md) | Consolidated cross-provider cWUSDC identity, evidence, caveats, and submission checklist. |
|
||||
|
||||
## Bottom Line
|
||||
|
||||
The repo can make wallet metadata, token-list metadata, logo hosting, report APIs, supply proof, and market-cap fields correct. The repo cannot force MetaMask to show fiat prices for custom assets. MetaMask price rendering depends on MetaMask/Consensys internals and upstream asset/price providers after they ingest the asset.
|
||||
|
||||
Use this document as the external submission tracker. Treat each external provider status as one of:
|
||||
|
||||
- `repo_ready`: our endpoint/package is ready.
|
||||
- `submitted`: operator submitted through a form, issue, PR, or support ticket.
|
||||
- `accepted`: provider has accepted and displays the asset.
|
||||
- `blocked`: provider requires liquidity, volume, chain support, profile verification, or manual review that is not yet satisfied.
|
||||
|
||||
## Live Repo-Controlled Sources
|
||||
|
||||
| Surface | URL / file | Purpose | Current state |
|
||||
|---|---|---|---|
|
||||
| Chain 138 MetaMask payload | `https://explorer.d-bis.org/api/v1/config/metamask?chainId=138` | `wallet_addEthereumChain` + EIP-747 `wallet_watchAsset` payloads | `repo_ready`; 31 watch assets |
|
||||
| Chain 138 token list | `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138` | Uniswap token-list compatible Chain 138 list | `repo_ready` |
|
||||
| All report | `https://explorer.d-bis.org/api/v1/report/all` | Internal plus external reporting packet across chains | `repo_ready` |
|
||||
| CoinGecko report | `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1` | CoinGecko-shaped token, pool, supply, logo fields | `repo_ready` |
|
||||
| CMC report | `https://explorer.d-bis.org/api/v1/report/cmc?chainId=1` | CMC-shaped token, pool, supply, logo fields | `repo_ready` |
|
||||
| Chain 138 logo | `https://explorer.d-bis.org/api/v1/report/logo/chain-138` | First `iconUrls` entry for Chain 138 | `repo_ready` |
|
||||
| Token logos | `https://explorer.d-bis.org/api/v1/report/logo/<symbol>` | DBIS-hosted token art for EIP-747 and reports | `repo_ready` |
|
||||
| Static Chain 138 token list | `token-lists/lists/dbis-138.tokenlist.json` | Repo-pinned token-list artifact | `repo_ready` |
|
||||
| Etherscan profile packet | `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` | Etherscan cWUSDC profile source | `repo_ready` |
|
||||
| cWUSDC tracker packet | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` | Tracker-facing cWUSDC facts | `repo_ready` |
|
||||
|
||||
## External Repositories and Provider Paths
|
||||
|
||||
| Priority | Provider / repo | What it controls | Submission method | Required package | Current status / caveat |
|
||||
|---:|---|---|---|---|---|
|
||||
| 1 | CoinGecko | Public token metadata, token image, supply, price/market data, downstream wallet/tracker discovery | Listing / update form; API and support review | Website, contract, logo, supply proof, public LP evidence, caveats | `repo_ready`; acceptance external |
|
||||
| 2 | CoinMarketCap | Public token metadata, supply, market cap, DEX token/pool data | Listing / update form; CMC DEX APIs | Same as CoinGecko plus CMC report endpoint | `repo_ready`; acceptance external |
|
||||
| 3 | Etherscan token profile | Ethereum token logo/profile/socials and often Etherscan display quality | Etherscan token profile update flow | `CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md`, logo, website, contact | `repo_ready`; approval external |
|
||||
| 4 | GeckoTerminal | DEX pair metadata and on-chain pool discoverability | Pool/profile request or organic indexing | Real public pools, token metadata, logo/social links | Blocked unless public indexed pools remain visible and liquid |
|
||||
| 5 | DexScreener | DEX pair page metadata/profile | DexScreener profile update/request | Pair URLs, token logo, socials, website | Blocked unless DEX pairs are indexed and accepted |
|
||||
| 6 | MetaMask EIP-747 | User-approved custom-token display | Our dApp calls `wallet_watchAsset` | `config/metamask` endpoint and live logos | `repo_ready`; user must approve; local cache may require remove/re-add |
|
||||
| 7 | MetaMask Snaps allowlist | Stable MetaMask npm Snap install eligibility | Snaps Directory submission / version update | npm package, manifest, security posture, published version | External gate; `npm:chain138-open-snap@0.2.3` is blocked until allowlisted |
|
||||
| 8 | MetaMask contract metadata | Legacy token logo/name mapping in `MetaMask/contract-metadata` | GitHub PR if accepted | CAIP-19 metadata and logo | Low probability; repo states it is effectively frozen and recommends EIP-747 |
|
||||
| 9 | MetaMask / assets controllers | Token detection/rates implementation | Not a normal token submission path | N/A | Information source only; do not expect PR acceptance for a single token listing |
|
||||
| 10 | MetaMask multichain API client | Scoped wallet sessions and RPC invocation by CAIP-2 scope | dApp integration, not provider submission | `@metamask/multichain-api-client`, scopes like `eip155:1` / `eip155:138` | Useful for wallet session/RPC hygiene; does not provide token price metadata |
|
||||
| 11 | Chainlist / ethereum-lists/chains | EVM chain metadata used by Chainlist-like surfaces | GitHub PR to `ethereum-lists/chains` | Chain JSON, RPCs, explorers, icon | Useful for Chain 138 discoverability; not token prices |
|
||||
| 12 | Trust Wallet assets | Token logos for Trust Wallet and some ecosystem consumers | GitHub PR to `trustwallet/assets` | Per-chain token folder, `logo.png`, `info.json` where required | Useful for recognized chains/tokens; custom Chain 138 support may be limited |
|
||||
| 13 | Token Lists ecosystem | Importable token lists for wallets/dApps | Host token list and submit/share URL | `token-lists/lists/dbis-138.tokenlist.json` and live endpoint | `repo_ready`; adoption per wallet/dApp |
|
||||
| 14 | Uniswap token-list / app ecosystem | Token-list display in Uniswap-like UIs | Token-list import / provider ingestion | Public token-list URL and logo URLs | Useful metadata path; does not guarantee default-list inclusion |
|
||||
| 15 | 0x / swap API providers | Token quotes/routes where supported | Provider support/listing request | Verified contracts, liquidity, token metadata | Needs supported chain/pools; not a pure metadata fix |
|
||||
| 16 | DeFiLlama / DefiLlama Yields / adapters | Public protocol/TVL context | GitHub adapter PR or listing request | Protocol docs, contracts, pool data | **TVL path:** `dfio_meta_main` + DODO — **open upstream [DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198)** (fork [Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters](https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters)); if UI shows **`dfio_meta_main` 0.00** while other chains sum, see [../../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md](../../11-references/DEFILLAMA_DFIO_META_MAIN_DODO_ADAPTER_TVL.md); **scope:** [../defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md](../defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md), [config/defillama-chain138-touchpoints.json](../../../config/defillama-chain138-touchpoints.json); optional dimension/yield/peg servers per [docs.llama.fi metrics](https://docs.llama.fi/) |
|
||||
| 17 | Moralis / Alchemy / QuickNode token APIs | Third-party token metadata and balances | Provider support ticket/API metadata ingestion | Token list, logo, contracts, chain support | Optional; provider-specific |
|
||||
| 18 | DEXTools / Birdeye / other DEX terminals | Pair metadata and charting | Provider request or organic pool indexing | Pair URLs, liquidity, token profile | Optional; depends on indexed pools and chain support |
|
||||
|
||||
## Current cWUSDC Submission Facts
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Token | `cWUSDC` |
|
||||
| Name | `Wrapped cUSDC` |
|
||||
| Ethereum Mainnet address | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Decimals | `6` |
|
||||
| Logo | `https://explorer.d-bis.org/api/v1/report/logo/cUSDC` |
|
||||
| CoinGecko report | `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1` |
|
||||
| CMC report | `https://explorer.d-bis.org/api/v1/report/cmc?chainId=1` |
|
||||
| All report | `https://explorer.d-bis.org/api/v1/report/all` |
|
||||
| Supply proof source | `repo-supply-proof-catalog` |
|
||||
| Tracker caveat | Public tracker acceptance is external and not implied by the API response |
|
||||
|
||||
Live check command:
|
||||
|
||||
```bash
|
||||
curl -fsS 'https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1' \
|
||||
| jq '.tokens[] | select(.symbol=="cWUSDC") | {symbol,contract_address,logo_uri,total_supply,circulating_supply,market_cap:(.market_data.market_cap // null),supply_proof_provenance,tracker_caveats}'
|
||||
```
|
||||
|
||||
## MetaMask-Specific Interpretation
|
||||
|
||||
MetaMask has three separate layers that are easy to confuse:
|
||||
|
||||
| Layer | What it affects | What we can do |
|
||||
|---|---|---|
|
||||
| Custom network metadata | Network name, RPC, explorer, native currency, possible chain icon | Supply `wallet_addEthereumChain` payload with Chain 138 logo in `iconUrls` |
|
||||
| Watched asset metadata | Token address, symbol, decimals, image shown after user approval | Supply EIP-747 `wallet_watchAsset` payload with correct `image` |
|
||||
| Fiat price rendering | Token USD value in MetaMask UI | Submit to external trackers/providers; cannot force from our endpoint |
|
||||
|
||||
MetaMask token auto-detection is not a Chain 138 guarantee. MetaMask documents enhanced token detection for selected supported networks and says it uses aggregated community token lists rather than one proprietary accepted-token list. For Chain 138, EIP-747 remains the practical repo-controlled path.
|
||||
|
||||
## MetaMask AssetsController Implications
|
||||
|
||||
MetaMask's `AssetsController` confirms that balance, token metadata, and price are separate data paths. A token can have a visible balance while still missing logo metadata and USD price.
|
||||
|
||||
| AssetsController layer | What it means for DBIS assets | Repo response |
|
||||
|---|---|---|
|
||||
| Balance data sources | MetaMask can detect a held token balance through backend, Accounts API, Snap, or RPC data sources. | Do not treat visible balance as proof that metadata or price providers accepted the asset. |
|
||||
| Detection middleware | Assets can be marked as detected before complete metadata exists. | A fallback glyph such as `C` means the asset exists in wallet state but still needs metadata enrichment. |
|
||||
| Token metadata data source | Metadata includes symbol, name, decimals, image, spam flag, and verification status. | Keep CAIP-19-addressable token facts and logo URLs stable, HTTPS, and submission-ready. |
|
||||
| Price data source | USD price, market cap, volume, and 24h change arrive through a separate price path. | Submit to CoinGecko, CMC, Etherscan, DEX terminals, and provider channels; EIP-747 alone cannot force USD display. |
|
||||
| CAIP-19 asset IDs | Assets are keyed like `eip155:1/erc20:<address>` and native ETH as `eip155:1/slip44:60`. | Use exact CAIP-19 IDs in provider packets and support requests. |
|
||||
| Force refresh | MetaMask can refresh balance, metadata, and price together only from sources it trusts. | The explorer `Refresh Mainnet cWUSDC` button re-issues EIP-747 metadata; provider-side price still waits on external ingestion. |
|
||||
|
||||
Relevant Mainnet cWUSDC CAIP-19:
|
||||
|
||||
```text
|
||||
eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
```
|
||||
|
||||
Operational conclusion: the Mainnet screenshot with a visible `56.71M cWUSDC` balance but no logo/price is consistent with successful balance discovery and incomplete metadata/price enrichment. The fix path is not a contract change. It is provider ingestion plus local EIP-747 refresh for the image.
|
||||
|
||||
### `AssetsController:getAssets` Reading
|
||||
|
||||
MetaMask's `AssetsController:getAssets` returns a per-account, per-asset map keyed by CAIP-19 asset ID. Each returned asset can include:
|
||||
|
||||
- `balance`
|
||||
- `metadata`
|
||||
- `price`
|
||||
- `fiatValue`
|
||||
|
||||
The important operator detail is that `fiatValue` is computed from the human-readable balance amount multiplied by `price.price`. Therefore, a visible token balance with a dash for USD value means the wallet has a balance entry but the price entry is missing or zero.
|
||||
|
||||
For cWUSDC, the desired complete return shape is conceptually:
|
||||
|
||||
```text
|
||||
assets[accountId]["eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"]
|
||||
balance.amount = visible cWUSDC balance
|
||||
metadata.image = DBIS cWUSDC/cUSDC logo URL
|
||||
price.price = accepted USD price from MetaMask provider path
|
||||
fiatValue = balance.amount * price.price
|
||||
```
|
||||
|
||||
This confirms three separate acceptance checks:
|
||||
|
||||
| Check | What proves it | Current meaning for screenshot |
|
||||
|---|---|---|
|
||||
| Balance | cWUSDC amount appears in wallet | Passing |
|
||||
| Metadata | DBIS logo replaces fallback `C` glyph | Not yet passing in MetaMask global metadata; can be locally refreshed with EIP-747 |
|
||||
| Price | USD value appears under the token | Not yet passing; needs provider/tracker ingestion |
|
||||
|
||||
When testing a wallet refresh, the closest MetaMask-side behavior to request is a force refresh with `dataTypes: ['balance', 'metadata', 'price']`. From our dApp surface, we cannot call MetaMask's internal messenger action directly; we can only provide the correct public inputs through EIP-747, token-list/report APIs, and external provider submissions.
|
||||
|
||||
### `AssetsController:priceChanged` Reading
|
||||
|
||||
MetaMask's `AssetsController:priceChanged` event is emitted when asset prices update. Its payload is a CAIP-19 keyed price map:
|
||||
|
||||
```text
|
||||
prices: Record<Caip19AssetId, AssetPrice>
|
||||
```
|
||||
|
||||
For cWUSDC to display a native USD value in MetaMask, the price payload needs an entry equivalent to:
|
||||
|
||||
```text
|
||||
prices["eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"] = {
|
||||
price: 1,
|
||||
priceChange24h: <provider value>,
|
||||
lastUpdated: <provider timestamp>,
|
||||
marketCap: <provider accepted circulating supply * price>,
|
||||
volume24h: <provider value>
|
||||
}
|
||||
```
|
||||
|
||||
If MetaMask never emits or stores a `priceChanged` entry for that CAIP-19 asset ID, the UI can show the cWUSDC balance while continuing to show a dash for fiat value. This is why the repo report APIs include `marketCapUsd`, `totalSupply`, `circulatingSupply`, supply-proof provenance, and tracker caveats: those fields are the submission package needed for external providers to produce the price payload MetaMask consumes.
|
||||
|
||||
Practical implication: a correct local logo refresh and a visible on-chain balance do not prove price readiness. Price readiness is proven only when MetaMask's provider path recognizes the CAIP-19 asset and returns a nonzero `price.price` with a current `lastUpdated` timestamp.
|
||||
|
||||
### Identifier Types Reading
|
||||
|
||||
MetaMask uses CAIP-19 asset identifiers and CAIP-2 chain identifiers. This means submissions, support tickets, and local validation must avoid symbol-only references.
|
||||
|
||||
| Identifier | Meaning | cWUSDC value |
|
||||
|---|---|---|
|
||||
| CAIP-2 chain ID | Chain identity | `eip155:1` |
|
||||
| CAIP-19 asset ID | Full chain plus asset identity | `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Asset namespace | Token standard namespace | `erc20` |
|
||||
| Asset reference | Contract address | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Native ETH comparison | Native asset ID format | `eip155:1/slip44:60` |
|
||||
|
||||
Operational requirements:
|
||||
|
||||
- Every MetaMask-facing cWUSDC provider request must include the CAIP-19 ID, not only `cWUSDC`.
|
||||
- All price, metadata, and balance acceptance checks must be keyed to `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`.
|
||||
- Token-list and EIP-747 payloads still use `chainId: 1` plus the ERC-20 contract address, but provider tickets should include both the token-list form and the CAIP-19 form.
|
||||
- Chain 138 source `cUSDC` must stay separate from Mainnet `cWUSDC`; do not submit Chain 138 transfer totals as Ethereum Mainnet `cWUSDC` activity.
|
||||
|
||||
### For Other Controllers Reading
|
||||
|
||||
MetaMask's example for other controllers sums portfolio/account value by reading every asset's `fiatValue` and adding it to the total. This matters for large cWUSDC balances:
|
||||
|
||||
```text
|
||||
accountValue = sum(asset.fiatValue for each fungible asset)
|
||||
asset.fiatValue = balance.amount * price.price
|
||||
```
|
||||
|
||||
If cWUSDC has a visible balance but no accepted price entry, then cWUSDC contributes `0` or no reliable value to MetaMask's account-value calculation. That is why the Mainnet screenshot can show a large `cWUSDC` unit balance while the portfolio total ignores it.
|
||||
|
||||
Acceptance target:
|
||||
|
||||
| Portfolio field | Required cWUSDC condition |
|
||||
|---|---|
|
||||
| Token unit balance | `assetsBalance[accountId][cWUSDC_CAIP19].amount` exists |
|
||||
| Token display row | `assetsInfo[cWUSDC_CAIP19]` has symbol/name/decimals/image |
|
||||
| Token USD row | `assetsPrice[cWUSDC_CAIP19].price` exists and is current |
|
||||
| Portfolio/account value | `fiatValue` is computed and included in account-value sums |
|
||||
|
||||
Repo implication: tracker submissions must emphasize that cWUSDC is currently visible as a balance but needs provider-side `AssetPrice` acceptance before MetaMask account-value calculations can include it.
|
||||
|
||||
### Middlewares Enrichment Reading
|
||||
|
||||
MetaMask documents the enrichment order after primary balance fetch:
|
||||
|
||||
```text
|
||||
DetectionMiddleware -> TokenDataSource -> PriceDataSource
|
||||
```
|
||||
|
||||
For cWUSDC, that maps to this acceptance ladder:
|
||||
|
||||
| Enrichment step | cWUSDC pass condition | Screenshot symptom if missing |
|
||||
|---|---|---|
|
||||
| DetectionMiddleware | Wallet sees `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` as a held asset | Token absent entirely |
|
||||
| TokenDataSource | Metadata provider resolves symbol, name, decimals, image, spam status, and verification status | Fallback `C` glyph, weak/partial token row |
|
||||
| PriceDataSource | Price provider resolves `price`, `lastUpdated`, optional `marketCap`, and optional `volume24h` | Dash for USD value and no portfolio contribution |
|
||||
|
||||
Current Mainnet screenshot reading:
|
||||
|
||||
```text
|
||||
DetectionMiddleware: passing
|
||||
TokenDataSource: partially failing or not globally accepted
|
||||
PriceDataSource: failing or not accepted
|
||||
```
|
||||
|
||||
Repo implication: the next external work is not another balance action. It is metadata and price-provider proof: Etherscan token profile, tracker submissions, DEX pair pages, CAIP-19 identifiers, logo URLs, supply proof, market cap fields, and caveats.
|
||||
|
||||
## MetaMask Multichain API Client Implications
|
||||
|
||||
`MetaMask/multichain-api-client` is a TypeScript client for scoped wallet sessions and RPC invocation. It uses CAIP-2 scopes such as `eip155:1`, not loose network names. It is useful for cleaner wallet session plumbing, but it is not an asset metadata or price-provider submission path.
|
||||
|
||||
Example shape from the package:
|
||||
|
||||
```text
|
||||
createSession({ requiredScopes: ['eip155:1'] })
|
||||
invokeMethod({ scope: 'eip155:1', request: { method: 'eth_call', ... } })
|
||||
revokeSession()
|
||||
```
|
||||
|
||||
Repo interpretation:
|
||||
|
||||
| Capability | Useful for DBIS | Not useful for |
|
||||
|---|---|---|
|
||||
| Scoped sessions | Explicit Ethereum Mainnet and Chain 138 wallet scopes | Forcing MetaMask to accept cWUSDC metadata |
|
||||
| RPC invocation | Typed wallet/RPC calls under `eip155:1` or `eip155:138` | Creating `AssetsController:priceChanged` entries |
|
||||
| Transport timeout control | Avoiding premature timeouts when wallet confirmation is required | Fixing provider-side token price absence |
|
||||
| Custom RPC typing | Adding project-specific typed RPC methods if needed | Replacing EIP-747 token watch flows |
|
||||
| Error handling | Separating transport errors from wallet/API errors | Bypassing MetaMask Snap allowlists |
|
||||
|
||||
Possible future wallet-page upgrade:
|
||||
|
||||
```text
|
||||
Use multichain-api-client for scoped wallet sessions:
|
||||
eip155:1 -> Ethereum Mainnet cWUSDC refresh / proof checks
|
||||
eip155:138 -> Chain 138 add-chain and c* watch-asset workflow
|
||||
|
||||
Keep EIP-747 for wallet_watchAsset.
|
||||
Keep provider submissions for logo/price enrichment.
|
||||
```
|
||||
|
||||
Operational conclusion: this repo can use the multichain API client to make the wallet UX more explicit and typed across Mainnet and Chain 138. It does not change the cWUSDC listing blocker: MetaMask still needs metadata and price enrichment for `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`.
|
||||
|
||||
## Mainnet cWUSDC Screenshot Interpretation
|
||||
|
||||
If Ethereum Mainnet MetaMask shows `cWUSDC` with a fallback `C` glyph, no fiat value, and only the Ethereum network badge, the wallet has detected or imported the token balance but has not resolved the Mainnet token through MetaMask's global asset metadata and price providers.
|
||||
|
||||
Repo-side status for Mainnet cWUSDC is ready:
|
||||
|
||||
| Check | Expected value |
|
||||
|---|---|
|
||||
| Chain | Ethereum Mainnet, `chainId=1` |
|
||||
| Contract | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| Symbol | `cWUSDC` |
|
||||
| Decimals | `6` |
|
||||
| Token-list URL | `https://explorer.d-bis.org/api/v1/report/token-list?chainId=1` |
|
||||
| Logo URL | `https://explorer.d-bis.org/api/v1/report/logo/cUSDC` |
|
||||
| CoinGecko report | `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1` |
|
||||
| CMC report | `https://explorer.d-bis.org/api/v1/report/cmc?chainId=1` |
|
||||
|
||||
Operator interpretation:
|
||||
|
||||
- `wallet_watchAsset` can refresh the custom-asset image when the user removes/re-adds or re-approves the token.
|
||||
- The explorer wallet page includes a `Refresh Mainnet cWUSDC` action that switches to Ethereum Mainnet and re-issues the EIP-747 request with the DBIS image URL.
|
||||
- The fallback glyph is still expected until Etherscan, CoinGecko, CMC, and/or MetaMask's internal providers ingest and accept the Mainnet asset metadata.
|
||||
- The missing fiat value is not fixed by EIP-747; it requires external tracker/provider acceptance and enough public evidence for those providers.
|
||||
|
||||
## Submission Order
|
||||
|
||||
1. Keep repo endpoints correct and live.
|
||||
2. Submit/update Etherscan cWUSDC token profile.
|
||||
3. Submit cWUSDC to CoinGecko with supply proof, logo, website, and liquidity caveats.
|
||||
4. Submit cWUSDC to CMC with the same facts and CMC report endpoint.
|
||||
5. Submit/update GeckoTerminal and DexScreener pair/profile metadata for any visible public pools.
|
||||
6. Submit Chain 138 metadata to `ethereum-lists/chains` / Chainlist path if not already accepted.
|
||||
7. Submit token/logo metadata to wallet/community registries where they accept custom-chain assets.
|
||||
8. Re-run EIP-747 wallet flow and document MetaMask before/after screenshots.
|
||||
9. Track every external acceptance or rejection in a status report under `reports/status/` (e.g. `cwusdc-external-trackers-live-latest.md`, `*etherscan*`, operator JSON summaries).
|
||||
|
||||
## Operator-generated status artifacts
|
||||
|
||||
Search or add dated evidence under **`reports/status/`** after each submission batch; link PRs/tickets in commit messages. This matrix stays **canonical for intent**; file-based reports hold **evidence**.
|
||||
|
||||
## Acceptance Evidence to Capture
|
||||
|
||||
For each provider:
|
||||
|
||||
- submission date and account/email used;
|
||||
- ticket, PR, issue, or form confirmation ID;
|
||||
- exact submitted URLs and token address;
|
||||
- provider response;
|
||||
- approval screenshot or public profile URL;
|
||||
- any rejection reason;
|
||||
- next required blocker such as liquidity, volume, contract verification, or chain support.
|
||||
|
||||
## Useful References
|
||||
|
||||
- MetaMask contract metadata: `https://github.com/MetaMask/contract-metadata`
|
||||
- MetaMask extension: `https://github.com/MetaMask/metamask-extension`
|
||||
- MetaMask core assets controllers: `https://github.com/MetaMask/core/tree/main/packages/assets-controllers`
|
||||
- EIP-747 wallet watchAsset: `https://eips.ethereum.org/EIPS/eip-747`
|
||||
- MetaMask token display help: `https://support.metamask.io/manage-crypto/tokens/how-to-display-tokens-in-metamask`
|
||||
- Chain metadata registry: `https://github.com/ethereum-lists/chains`
|
||||
- Trust Wallet assets: `https://github.com/trustwallet/assets`
|
||||
- CoinGecko API docs: `https://docs.coingecko.com/`
|
||||
- CoinMarketCap API docs: `https://coinmarketcap.com/api/documentation/`
|
||||
- Token Lists standard: `https://tokenlists.org/`
|
||||
@@ -0,0 +1,346 @@
|
||||
# MetaMask cWUSDC API Feed Spider Web Research
|
||||
|
||||
Status: research and implementation map for how Mainnet `cWUSDC` can move from "visible balance with fallback glyph" to fully enriched wallet, explorer, tracker, and portfolio value display.
|
||||
|
||||
Canonical Mainnet asset identity:
|
||||
|
||||
```text
|
||||
CAIP-19: eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a
|
||||
Chain: eip155:1
|
||||
Symbol: cWUSDC
|
||||
Name: Wrapped cUSDC
|
||||
Decimals: 6
|
||||
Logo: https://explorer.d-bis.org/api/v1/report/logo/cUSDC
|
||||
```
|
||||
|
||||
## Core Finding
|
||||
|
||||
MetaMask's asset stack separates balance, token metadata, price, and fiat value. The current Mainnet screenshot proves that balance detection is working. It does not prove that MetaMask's metadata source or price source has accepted the asset.
|
||||
|
||||
```text
|
||||
visible cWUSDC units -> balance path is working
|
||||
fallback C glyph -> metadata/image path is incomplete
|
||||
dash for USD value -> price path is incomplete
|
||||
portfolio omission -> fiatValue cannot be computed
|
||||
```
|
||||
|
||||
The provider spider web is therefore not one API. It is a chain of independent systems:
|
||||
|
||||
```text
|
||||
On-chain ERC-20 state
|
||||
-> explorer/indexer token row
|
||||
-> token metadata provider
|
||||
-> DEX pair/indexer evidence
|
||||
-> price provider
|
||||
-> wallet asset controller
|
||||
-> portfolio/account value controller
|
||||
```
|
||||
|
||||
## Provider Classes
|
||||
|
||||
| Provider class | Examples | Controls | Does not control |
|
||||
|---|---|---|---|
|
||||
| Wallet local prompt | EIP-747 `wallet_watchAsset` | User-approved local symbol, decimals, image | Global MetaMask token acceptance or price |
|
||||
| Wallet asset controller | MetaMask `AssetsController` | How MetaMask joins balance, metadata, price, fiat value | External acceptance of cWUSDC |
|
||||
| Explorer profile | Etherscan | Token logo/profile on Etherscan and downstream trust evidence | Wallet price by itself |
|
||||
| Market tracker | CoinGecko, CoinMarketCap | Metadata, market cap, supply, price, volume, API discovery | Immediate wallet refresh guarantees |
|
||||
| DEX terminal | GeckoTerminal, DexScreener, CMC DexScan, DEXTools, Birdeye | Pair visibility, liquidity/volume evidence, chart pages | Audited circulating supply |
|
||||
| Data API provider | Alchemy, Moralis, thirdweb, QuickNode, Covalent, Zerion, SimpleHash | API-accessible balances, metadata, prices, search | Listing on MetaMask unless MetaMask consumes them |
|
||||
| Oracle network | Chainlink Data Feeds/Data Streams/DataLink | Onchain or institutional price publication | Wallet UI enrichment unless wallet consumes it |
|
||||
| Chain registry | Chainlist / ethereum-lists/chains | Chain metadata/RPC/explorer discoverability | Token price |
|
||||
| Token-list registry | Token Lists, Trust Wallet assets, Uniswap token-list imports | Logo and token metadata for apps that ingest lists | MetaMask global price |
|
||||
|
||||
## Current Repo-Controlled Inputs
|
||||
|
||||
| Input | Status | URL / path |
|
||||
|---|---|---|
|
||||
| Mainnet cWUSDC token list | Ready | `https://explorer.d-bis.org/api/v1/report/token-list?chainId=1` |
|
||||
| Chain 138 EIP-747 payload | Ready | `https://explorer.d-bis.org/api/v1/config/metamask?chainId=138` |
|
||||
| cWUSDC logo | Ready | `https://explorer.d-bis.org/api/v1/report/logo/cUSDC` |
|
||||
| CoinGecko report | Ready | `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=1` |
|
||||
| CMC report | Ready | `https://explorer.d-bis.org/api/v1/report/cmc?chainId=1` |
|
||||
| All report | Ready | `https://explorer.d-bis.org/api/v1/report/all` |
|
||||
| Supply proof | Ready | `reports/status/mainnet-cwusdc-supply-proof-20260508.json` |
|
||||
| Etherscan profile packet | Ready | `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` |
|
||||
| Wallet local refresh | Ready | `https://explorer.d-bis.org/wallet` -> `Refresh Mainnet cWUSDC` |
|
||||
|
||||
Root `.env` key coverage observed on this workstation:
|
||||
|
||||
| Key family | Present at root | Meaning |
|
||||
|---|---:|---|
|
||||
| `ETHERSCAN_API_KEY` | yes | Can query/verify Etherscan paths where scripts support it |
|
||||
| `COINGECKO_API_KEY` | yes | Can query CoinGecko with configured rate limits |
|
||||
| `COINMARKETCAP_API_KEY` / `CMC_*` | no | CMC API probes need key or manual submission |
|
||||
| `ALCHEMY_*` | no | Alchemy price-by-address probes need key |
|
||||
| `MORALIS_*` | no | Moralis token/price/search probes need key |
|
||||
| `THIRDWEB_*` | no at root | thirdweb token/Insight probes need key/client in the relevant app env |
|
||||
| `QUICKNODE_*` | no | QuickNode token API probes need account/API key |
|
||||
| `COVALENT_*` | no | Covalent balances/prices need key |
|
||||
| `ZERION_*` | no | Zerion portfolio/asset APIs need key |
|
||||
| `SIMPLEHASH_*` | no | SimpleHash fungible/metadata probes need key |
|
||||
|
||||
## Provider-by-Provider Map
|
||||
|
||||
### MetaMask
|
||||
|
||||
Source URLs:
|
||||
|
||||
- `https://github.com/MetaMask/core/blob/main/packages/assets-controller/src/README.md`
|
||||
- `https://support.metamask.io/develop/how-to-add-a-token-logo/`
|
||||
- `https://github.com/MetaMask/multichain-api-client`
|
||||
|
||||
What matters:
|
||||
|
||||
- MetaMask encourages EIP-747 for making tokens visible to users.
|
||||
- MetaMask price display comes from several upstream sources and is best influenced by getting listed on prominent DEXs/CEXs and data providers.
|
||||
- `AssetsController:getAssets` returns balance, metadata, price, and fiat value.
|
||||
- `AssetsController:priceChanged` is keyed by CAIP-19 asset ID.
|
||||
- `multichain-api-client` helps dApps manage scoped wallet sessions/RPC calls; it does not create metadata or price acceptance.
|
||||
|
||||
Action:
|
||||
|
||||
1. Keep EIP-747 local refresh for Mainnet cWUSDC and Chain 138 c* assets.
|
||||
2. Use CAIP-19 in every support ticket and provider submission.
|
||||
3. Do not claim MetaMask price readiness until the wallet shows a nonzero price and computed fiat value.
|
||||
|
||||
### Etherscan
|
||||
|
||||
Source URL:
|
||||
|
||||
- `https://info.etherscan.com/how-to-update-token-information-on-token-page/`
|
||||
|
||||
What matters:
|
||||
|
||||
- Etherscan token profile updates are account/form driven after token ownership verification.
|
||||
- Etherscan profile/logo acceptance is strong downstream evidence for other providers.
|
||||
|
||||
Action:
|
||||
|
||||
1. Submit/update token info for `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`.
|
||||
2. Use `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md`.
|
||||
3. Capture ticket/form confirmation and final screenshot.
|
||||
|
||||
### CoinGecko
|
||||
|
||||
Source URLs:
|
||||
|
||||
- `https://docs.coingecko.com/reference/endpoint-overview`
|
||||
- `https://support.coingecko.com/hc/en-us/sections/32146983631641-Token-Coin-Listing`
|
||||
|
||||
What matters:
|
||||
|
||||
- CoinGecko exposes price, token price by contract, metadata, tickers, market cap, volume, circulating supply, and total supply endpoints after asset support.
|
||||
- CoinGecko acceptance is one of the highest-leverage paths for wallet price propagation.
|
||||
|
||||
Action:
|
||||
|
||||
1. Submit Mainnet cWUSDC with the exact Mainnet contract, not only Chain 138 cUSDC.
|
||||
2. Include supply proof, logo, website, Etherscan profile packet, DEX pair evidence, and caveats.
|
||||
3. After submission, test `/simple/token_price/ethereum` and `/coins/{id}` once an ID exists.
|
||||
|
||||
### CoinMarketCap
|
||||
|
||||
Source URLs:
|
||||
|
||||
- `https://support.coinmarketcap.com/hc/en-us/articles/360043533632-Cryptoasset-Listings`
|
||||
- `https://coinmarketcap.com/api/documentation/`
|
||||
|
||||
What matters:
|
||||
|
||||
- CMC has separate flows for new assets, market pairs, supply updates, swaps, and info updates.
|
||||
- CMC API exposes listings, quotes, metadata, DEX data, market pairs, and exchange proof-of-reserves categories.
|
||||
- DexScan visibility is useful evidence but is not the same as a full tracked listing.
|
||||
|
||||
Action:
|
||||
|
||||
1. Submit cWUSDC as a cryptoasset listing/update using the CMC report endpoint.
|
||||
2. Submit visible Mainnet DEX pairs as market-pair evidence.
|
||||
3. Track CMC DexScan verification separately from full CMC listing.
|
||||
|
||||
### GeckoTerminal and DexScreener
|
||||
|
||||
What matters:
|
||||
|
||||
- These providers are pair-driven. They generally need an indexed DEX pair with at least some liquidity and activity.
|
||||
- They are useful as public trade/pair evidence for CoinGecko/CMC and wallets.
|
||||
|
||||
Action:
|
||||
|
||||
1. Keep public cWUSDC/USDC pair addresses, reserves, tx hashes, and screenshots current.
|
||||
2. Do not overstate depth; report actual reserves and activity.
|
||||
3. Submit profile/logo/pair metadata where each provider allows.
|
||||
|
||||
### Alchemy
|
||||
|
||||
Source URLs:
|
||||
|
||||
- `https://www.alchemy.com/docs/data/prices-api/prices-api-endpoints/prices-api-endpoints/get-token-prices-by-address`
|
||||
- `https://www.alchemy.com/docs/reference/get-token-prices-by-symbol`
|
||||
|
||||
What matters:
|
||||
|
||||
- Alchemy Prices API can query token prices by symbol or by network/address pairs.
|
||||
- The by-address route is the correct cWUSDC probe because `cWUSDC` is not globally unique.
|
||||
- Successful API response may still contain an empty/missing price for unknown assets.
|
||||
|
||||
Action:
|
||||
|
||||
1. Add an `ALCHEMY_API_KEY` secret if API probes are desired.
|
||||
2. Probe:
|
||||
|
||||
```text
|
||||
POST /prices/v1/{apiKey}/tokens/by-address
|
||||
network: eth-mainnet
|
||||
address: 0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a
|
||||
```
|
||||
|
||||
3. Record missing-price response as provider gap evidence.
|
||||
|
||||
### Moralis
|
||||
|
||||
Source URLs:
|
||||
|
||||
- `https://docs.moralis.com/web3-data-api/evm/reference/token-api`
|
||||
- `https://docs.moralis.com/web3-data-api/evm/token-search`
|
||||
- `https://moralis.com/api/token/`
|
||||
|
||||
What matters:
|
||||
|
||||
- Moralis Token API covers balances, transfers, prices, holders, liquidity, swaps, metadata, and token search.
|
||||
- It can return real-time prices and net worth when a token is covered.
|
||||
- Token search can reveal whether cWUSDC is discoverable by address/name/symbol.
|
||||
|
||||
Action:
|
||||
|
||||
1. Add a `MORALIS_API_KEY` secret if provider probes are desired.
|
||||
2. Probe token metadata, token price, token search, and pair/liquidity endpoints for Mainnet cWUSDC.
|
||||
3. Record whether `logo`, `usdPrice`, `marketCap`, and `isVerifiedContract` appear.
|
||||
|
||||
### thirdweb
|
||||
|
||||
Source URLs:
|
||||
|
||||
- `https://portal.thirdweb.com/bridge/tokens`
|
||||
- `https://github.com/thirdweb-dev/js`
|
||||
|
||||
What matters:
|
||||
|
||||
- thirdweb Bridge token utility returns token metadata and `priceUsd` for supported tokens.
|
||||
- thirdweb Insight can also be relevant for indexed chain/pair data where configured.
|
||||
- thirdweb is an application/API consumer path, not a direct MetaMask provider path.
|
||||
|
||||
Action:
|
||||
|
||||
1. Confirm whether relevant `THIRDWEB_SECRET_KEY` or `THIRDWEB_CLIENT_ID` exists in the app/service env that will run probes.
|
||||
2. Query `Bridge.tokens({ chainId: 1, tokenAddress: cWUSDC })`.
|
||||
3. If missing, treat as API-provider gap evidence and include DEX/tracker submission links.
|
||||
|
||||
### QuickNode
|
||||
|
||||
Source URL:
|
||||
|
||||
- `https://www.quicknode.com/token-api/`
|
||||
|
||||
What matters:
|
||||
|
||||
- QuickNode Token API can return ERC-20 metadata, balances, transfers, and token details.
|
||||
- It is primarily an API consumer/provider path, not a public listing authority.
|
||||
|
||||
Action:
|
||||
|
||||
1. Add QuickNode token API key if this path is needed.
|
||||
2. Probe metadata and price support for Mainnet cWUSDC if available in the account product tier.
|
||||
|
||||
### Chainlink
|
||||
|
||||
Source URLs:
|
||||
|
||||
- `https://chain.link/data-feeds`
|
||||
- `https://data.chain.link/`
|
||||
|
||||
What matters:
|
||||
|
||||
- Chainlink Data Feeds aggregate data from premium data providers and independent nodes into onchain reports.
|
||||
- Chainlink is excellent for onchain protocol pricing after feed creation, but it is not a direct MetaMask token-logo or wallet-price listing route.
|
||||
- A new cWUSDC/USD feed would require enough credible market data and engagement with Chainlink/provider channels.
|
||||
|
||||
Action:
|
||||
|
||||
1. Do not position Chainlink as the immediate MetaMask fix.
|
||||
2. Use Chainlink as an institutional/onchain oracle target after CoinGecko/CMC/DEX evidence is accepted.
|
||||
3. If pursuing, prepare a feed request package with DEX/CEX venues, liquidity, volume, supply proof, and data-provider acceptance.
|
||||
|
||||
### Covalent, Zerion, SimpleHash, Ankr, OKLink, Blockscout-class Indexers
|
||||
|
||||
What matters:
|
||||
|
||||
- These are secondary enrichment and portfolio APIs.
|
||||
- They can improve ecosystem discoverability if they index cWUSDC correctly.
|
||||
- Most require API keys, support tickets, or organic indexing from onchain activity and known token lists.
|
||||
|
||||
Action:
|
||||
|
||||
1. Create provider probes after primary Etherscan/CoinGecko/CMC submissions.
|
||||
2. Use the same CAIP-19 identity and report endpoints.
|
||||
3. Track each provider's response separately; do not assume one provider propagates to another.
|
||||
|
||||
## Probe Matrix
|
||||
|
||||
| Probe | Requires key | Expected passing result |
|
||||
|---|---:|---|
|
||||
| Etherscan token page/profile | no for public page; account for update | cWUSDC logo/profile visible on Etherscan |
|
||||
| CoinGecko contract lookup | maybe no/pro key depending rate | cWUSDC returns coin ID, image, price, market cap |
|
||||
| CoinGecko `/simple/token_price/ethereum` | maybe | cWUSDC contract returns `usd` |
|
||||
| CMC listing/quotes | yes for API; form for listing | cWUSDC has CMC ID, quotes, market pairs |
|
||||
| Alchemy price by address | yes | `eth-mainnet` + cWUSDC returns USD price |
|
||||
| Moralis token search | yes | cWUSDC appears by contract with metadata/logo |
|
||||
| Moralis token price | yes | cWUSDC returns `usdPrice` and pair source |
|
||||
| thirdweb Bridge.tokens | client/secret | cWUSDC returns `iconUri` and `priceUsd` |
|
||||
| GeckoTerminal pair page | no | cWUSDC/USDC pair page exists with reserves/activity |
|
||||
| DexScreener pair search | no | cWUSDC pair appears in API/UI |
|
||||
| Chainlink Data Feed | external engagement | cWUSDC/USD feed exists on `data.chain.link` |
|
||||
|
||||
## Priority Order
|
||||
|
||||
1. Etherscan profile/logo update for Mainnet cWUSDC.
|
||||
2. CoinGecko Mainnet cWUSDC listing/update with exact contract and supply proof.
|
||||
3. CMC listing/update plus DexScan pair/profile evidence.
|
||||
4. GeckoTerminal/DexScreener/DEXTools/Birdeye pair metadata updates.
|
||||
5. Provider probes: Alchemy, Moralis, thirdweb, QuickNode, Covalent, Zerion, SimpleHash.
|
||||
6. Chainlist / chain registry for Chain 138 metadata discoverability.
|
||||
7. Chainlink feed request only after public market-data providers have enough accepted evidence.
|
||||
|
||||
## Submission Package Checklist
|
||||
|
||||
Every provider packet should include:
|
||||
|
||||
- CAIP-19: `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`
|
||||
- Contract address and Etherscan URL
|
||||
- Symbol/name/decimals
|
||||
- Logo URL and static logo asset
|
||||
- Website and token explainer
|
||||
- Supply proof and circulating-supply caveats
|
||||
- Market cap formula
|
||||
- Public DEX pair addresses and tx hashes
|
||||
- Liquidity/reserve caveats
|
||||
- Chain 138 source cUSDC relationship, clearly separated from Mainnet cWUSDC activity
|
||||
- Contact email/account used for submission
|
||||
- Confirmation ID or ticket ID after submission
|
||||
|
||||
## Non-Negotiable Interpretation
|
||||
|
||||
Do not tell operators that MetaMask price can be forced by:
|
||||
|
||||
- contract changes;
|
||||
- adding a token list alone;
|
||||
- EIP-747 alone;
|
||||
- Chain 138 Snap alone;
|
||||
- Chainlink alone;
|
||||
- private/internal accounting rails;
|
||||
- minted supply without public market-data acceptance.
|
||||
|
||||
The only defensible statement is:
|
||||
|
||||
```text
|
||||
Repo metadata and proofs are ready. MetaMask-native logo and price require external metadata/price provider ingestion for the exact Mainnet cWUSDC CAIP-19 asset.
|
||||
```
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user