chore(repo): sync operator workspace (config, scripts, docs, multi-chain)
Some checks failed
Deploy to Phoenix / validate (push) Failing after 1s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped

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:
defiQUG
2026-05-11 16:25:08 -07:00
parent a5f7400955
commit 4ebf2d7902
292 changed files with 21574 additions and 1146 deletions

View File

@@ -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 14 are foundational and must be addressed before any contract code is deployed. Sections 58
are technical infrastructure. Sections 911 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
2472hr 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 + 2472hr 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 (50200 words)
n Long description (5001500 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.

View File

@@ -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 D1D4, E1E3.
- [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)

View File

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

View 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 protocols 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.

View File

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

View File

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

View File

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

View File

@@ -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 25062508 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. |
---

View File

@@ -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`** — **~6077%** used on thin pools; **`local`** ~345 GiB free of ~532 GiB.
- **r630-02:** **`thin1-r630-02`** … **`thin6`** — active; utilization **~458%** 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.

View File

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

View File

@@ -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, thin2thin6) + local dir |
| **Network** | vmbr0 bridge (VLAN-aware) |

View File

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

View File

@@ -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 (R1R24):** [RECOMMENDATIONS_OPERATOR_CHECKLIST](../00-meta/RECOMMENDATIONS_OPERATOR_CHECKLIST.md).

View 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.

View File

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

View File

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

View File

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

View 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 (**6534** wallets) is the canonical **sovereign-nation treasury address set** for the Elemental Imperium model—each cells 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).

View File

@@ -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 **AE** 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)

View File

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

View File

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

View File

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

View File

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

View File

@@ -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 1000010199, Sankofa 78008999, Besu 10004999. Do not reuse VMIDs.
- **Storage:** Use `local-lvm` or node-specific thin pools (e.g. r630-01 thin1, r630-02 thin2thin6). 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| thin2thin6 | 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).
---

View File

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

View 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)

View File

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

View 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.

View File

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

View 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)

View File

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

View File

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

View 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.

View File

@@ -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 instances **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

View File

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

View 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.

View File

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

View File

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

View 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)

View 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”).

View 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)

View 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)

View File

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

View File

@@ -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 **1023310236**). 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 ~24GiB — 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 **nonr630-01** node |
| **.170** | **10236** | Fourth NPM (dev, tunnel, Gitea) | **76.53.10.40** | Isolate on **nonr630-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 versiondependent):
```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 **1023310236**. |
| `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)

View File

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

View File

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

View File

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

View 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)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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."
}

View File

@@ -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 protocols 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 PRs 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. |

View File

@@ -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 **DODOs** upstream Twitter where that matches DefiLlamas 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**.
---

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View 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

View File

@@ -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 USDcompliant** 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`). **NonChain 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/`

View File

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

View File

@@ -0,0 +1,193 @@
# MetaMask EIP-747 and Contract Metadata Reference Packet
Status: local summarized reference packet for Chain 138, GRU / GRU v2 `c*`, and public-network `cW*` wallet metadata.
Sources ingested:
- MetaMask contract metadata: `https://github.com/MetaMask/contract-metadata`
- 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`
## Related repo documents
- [METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md) — canonical provider submission matrix, live report URLs, and **MetaMask Money rail / mUSD ↔ GRU hub (`cUSDC` / `cUSDC_V2`) and `cWUSDC` transport** narrative (internal alignment only until MetaMask publishes official bindings).
- [../GRU_PROVIDER_POSITIONING_PACKET.md](../GRU_PROVIDER_POSITIONING_PACKET.md), [../CWUSDC_PROVIDER_SUBMISSION_PACKET.md](../CWUSDC_PROVIDER_SUBMISSION_PACKET.md) — GRU positioning and Mainnet `cWUSDC` evidence packet.
## Executive Interpretation
For this repo, MetaMask has two usable paths:
1. EIP-747 `wallet_watchAsset` is the primary practical path for Chain 138 and DBIS assets.
2. `MetaMask/contract-metadata` is useful as a legacy reference and possible low-probability PR path, but MetaMask states that the repository is effectively frozen and recommends EIP-747 for new tokens.
MetaMask fiat prices are a separate upstream-provider problem. Correct EIP-747 metadata can add a token and its image, but it does not force MetaMask to show USD values.
## Actionable Rules
| Rule | Repo implication |
|---|---|
| Use EIP-747 for new or custom tokens | Keep `https://explorer.d-bis.org/api/v1/config/metamask?chainId=138` as the canonical wallet payload. |
| The wallet decides what "listed" means | Treat a `wallet_watchAsset` success as "request recognized", not guaranteed display or user approval. |
| The wallet may reject unsupported asset types | Keep `type: "ERC20"` for MetaMask compatibility in the current implementation. |
| The asset address must be valid for the wallet's chain context | Continue emitting Chain 138 addresses only for `chainId=138` payloads. |
| MetaMask validates contract-facing symbols | Keep V2 wallet symbols aligned to on-chain `symbol()`, with catalog symbols preserved in metadata. |
| The image URL must load successfully | Use DBIS HTTPS image endpoints and avoid localhost/private URLs. |
| Wallets may sanitize schemes/ports for SSRF protection | Keep image URLs HTTPS on `explorer.d-bis.org`; do not emit raw LAN, IPFS-only, or non-HTTPS images in wallet payloads. |
| Similar names/symbols can trigger phishing warnings | Use clear DBIS descriptions and avoid presenting cWUSDC as official Circle USDC. |
| Token detection is not universal | Do not assume Chain 138 autodetection; use add-chain and watch-asset flows. |
| Custom-token cache may persist | Version wallet image URLs and instruct users to remove/re-add stale tokens. |
| Snap allowlisting is external | Do not present the Chain 138 Snap as the production wallet path until the exact npm package/version is accepted by MetaMask. |
| CSP eval warnings must be separated from Snap allowlist failures | The production wallet flow should avoid repo-authored eval; a Snap allowlist rejection is not caused by CSP. |
## Source-Specific Notes
### MetaMask Contract Metadata
MetaMask contract metadata maps EIP-55 checksum addresses / CAIP-19 asset IDs to names and logos. It supports CLI-driven asset additions using a CAIP identifier, token name, symbol, decimals, and image.
Important constraints:
- Repository is described by MetaMask as effectively frozen.
- New-token developers are directed toward EIP-747.
- A PR, if attempted, needs:
- CAIP-19 asset ID.
- Small square high-resolution SVG or PNG.
- Checksum address.
- Official project website referencing the address.
- Clear project explanation.
- Activity evidence.
- Verified block-explorer source where possible.
- Ethereum asset reputation of `NEUTRAL` or `OK`.
- ERC-20 only; not ERC-721 or ERC-1155.
Repo implication: do not block production on MetaMask contract-metadata acceptance. Prepare a PR package only after Etherscan profile and external tracker posture are strong.
### EIP-747
EIP-747 defines a wallet-scoped `wallet_watchAsset` method that lets a site suggest a token for a wallet to track.
Important semantics:
- The method returns `true` when the request is recognized, not when the user definitely accepted.
- Errors can occur for unsupported asset type, allowlist/denylist blocking, or failed image/metadata loading.
- `address` is required.
- `chainId` must match a wallet-recognized chain.
- Wallets should warn on suspiciously similar names or symbols.
- Wallets should protect against SSRF by sanitizing URI schemes/ports.
Repo implication: the current `config/metamask` endpoint must remain conservative, HTTPS-only, chain-specific, and contract-symbol accurate.
### MetaMask Token Display Docs
MetaMask says it automatically displays popular ERC-20 and SPL tokens, but it does not maintain an authoritative list of all valid tokens. Users can add tokens through enhanced token detection, token search/address, block explorers, coin listing sites, and Portfolio.
Important constraints:
- Enhanced token detection is available only on listed networks such as Ethereum Mainnet, Linea, Avalanche, BNB Smart Chain, Polygon, Arbitrum, Optimism, Base, zkSync, and Solana.
- Chain 138 is not listed as an enhanced-token-detection network.
- MetaMask says enhanced detection uses aggregated community token lists.
- If a token is not discoverable by search/detection, users can add it by address.
- Block explorers and coin listing sites can expose add-to-MetaMask flows.
Repo implication: Chain 138 must rely on `wallet_addEthereumChain`, EIP-747, token-list endpoints, explorer UI, and external provider submissions.
## Required Repo Guarantees
| Area | Required condition | Current repo path |
|---|---|---|
| Chain metadata | Chain 138 has valid EIP-3085 fields and logo URLs | `src/config/networks.ts`; `/api/v1/config/metamask?chainId=138` |
| Token metadata | Every watch asset has address, symbol, decimals, image | `src/api/routes/config.ts` |
| Symbol correctness | `options.symbol` matches contract symbol for MetaMask validation | `resolveWalletWatchAssetSymbol()` |
| Logo hosting | Logos are HTTPS and image endpoints return image content types | `/api/v1/report/logo/<symbol>` |
| Cache refresh | Wallet image URLs can be versioned | `WALLET_METADATA_IMAGE_VERSION` / default version |
| User caveat | API states MetaMask prices are upstream controlled | `caveats` in `/api/v1/config/metamask` |
| External tracker packet | CoinGecko/CMC/all reports include logo and supply fields | `/api/v1/report/coingecko`, `/api/v1/report/cmc`, `/api/v1/report/all` |
## Validation Commands
```bash
curl -fsS 'https://explorer.d-bis.org/api/v1/config/metamask?chainId=138' \
| jq '{chain:.addEthereumChain.chainName, iconUrls:.addEthereumChain.iconUrls, watchAssets:(.watchAssets|length), sample:.watchAssets[0]}'
```
```bash
curl -fsSI 'https://explorer.d-bis.org/api/v1/report/logo/chain-138?v=20260510'
curl -fsSI 'https://explorer.d-bis.org/api/v1/report/logo/cUSDC?v=20260510'
curl -fsSI 'https://explorer.d-bis.org/api/v1/report/logo/ETH?v=20260510'
```
```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)}'
```
## Submission Constraints
| Target | Constraint | Recommendation |
|---|---|---|
| EIP-747 | User must approve; result does not prove token accepted permanently | Keep explorer wallet flow simple and auditable. |
| MetaMask custom network | Network icon may cache or be ignored by some MetaMask builds | Keep Chain 138 SVG first and document remove/re-add path. |
| MetaMask token logo | Existing custom tokens may cache old image URLs | Version `image` values and tell users to remove/re-add stale assets. |
| MetaMask fiat price | Controlled by MetaMask/upstream providers | Submit to CoinGecko, CMC, Etherscan, DEX indexers; do not claim direct control. |
| MetaMask Snap install | Stable MetaMask installs only allowlisted npm Snap package versions | Keep the Snap optional; use MetaMask Flask for testing or complete allowlist/update review. |
| CSP eval warning | Browser security panels may report blocked eval for third-party or stale bundles | Verify live `Content-Security-Policy` response headers and scan first-party bundles before treating it as a site break. |
| Contract metadata PR | Repo is effectively frozen and no timeline guaranteed | Treat as optional after stronger external acceptance. |
| Token autodetection | Chain 138 is not a listed enhanced detection network | Use explicit EIP-747 and token list import. |
## CSP and Snap Failure Triage
The screenshot failure mode `Cannot install version "0.2.3" of snap "npm:chain138-open-snap": The snap is not on the allowlist` is a MetaMask Snaps install gate. It is not resolved by changing explorer CSP.
Use these checks to separate the two concerns:
```bash
curl -fsSI 'https://explorer.d-bis.org/wallet' \
| awk 'BEGIN{IGNORECASE=1} NR==1 || /^content-security-policy:/ {print}'
```
```bash
rg -n "eval\\(|new Function|setTimeout\\(['\\\"]|setInterval\\(['\\\"]" \
explorer-monorepo/frontend/src explorer-monorepo/frontend/pages explorer-monorepo/frontend/libs
```
Current repo policy:
- production wallet setup is `wallet_addEthereumChain` plus EIP-747 `wallet_watchAsset`;
- the Chain 138 Snap is optional and should be labelled Flask-or-allowlisted only;
- do not add `unsafe-eval` just to fix a Snap allowlist failure;
- if a real CSP break appears, first identify whether the active CSP comes from the Next frontend, nginx/NPMplus, or Cloudflare.
## Exact cWUSDC Package
| Field | Value |
|---|---|
| CAIP-19 | `eip155:1/erc20:0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
| Name | `Wrapped cUSDC` |
| Symbol | `cWUSDC` |
| Decimals | `6` |
| Logo | `https://explorer.d-bis.org/api/v1/report/logo/cUSDC` |
| Website | `https://d-bis.org/` |
| Token explainer | `https://d-bis.org/gru/tokens` |
| Etherscan profile packet | `docs/04-configuration/etherscan/CWUSDC_MAINNET_ETHERSCAN_PROFILE_PACKET.md` |
| Tracker packet | `docs/04-configuration/coingecko/CWUSDC_MAINNET_TRACKER_SUBMISSION_PACKET.md` |
## Implementation Checklist
- [x] Keep Chain 138 wallet payload live.
- [x] Emit DBIS-hosted HTTPS logo URLs.
- [x] Match V2 wallet symbols to on-chain symbols.
- [x] Version wallet image URLs for cache refresh.
- [x] Add caveat that MetaMask fiat prices are upstream controlled.
- [x] Add CoinGecko/CMC logo fields.
- [x] Add supply proof and market-cap fields for tracker packets.
- [ ] Submit/update Etherscan token profile.
- [ ] Submit/update CoinGecko token profile.
- [ ] Submit/update CMC token profile.
- [ ] Submit/update DEX pair metadata where public indexed pools exist.
- [ ] Optionally prepare MetaMask contract-metadata PR after Etherscan/tracker posture improves.
## References
- MetaMask contract metadata: https://github.com/MetaMask/contract-metadata
- EIP-747: https://eips.ethereum.org/EIPS/eip-747
- MetaMask token display docs: https://support.metamask.io/manage-crypto/tokens/how-to-display-tokens-in-metamask

View File

@@ -0,0 +1,437 @@
==============================================
RPC 502 diagnostics — 2026-05-10T13:07:53-07:00
==============================================
--- VMID 2101 @ 192.168.11.11 (status: running) ---
Listening ports (ss -tlnp):
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 511 0.0.0.0:8443 0.0.0.0:* users:(("nginx",pid=168,fd=16),("nginx",pid=167,fd=16),("nginx",pid=166,fd=16),("nginx",pid=165,fd=16),("nginx",pid=163,fd=16))
LISTEN 0 511 0.0.0.0:8544 0.0.0.0:* users:(("node",pid=114,fd=18))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=168,fd=12),("nginx",pid=167,fd=12),("nginx",pid=166,fd=12),("nginx",pid=165,fd=12),("nginx",pid=163,fd=12))
LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=168,fd=14),("nginx",pid=167,fd=14),("nginx",pid=166,fd=14),("nginx",pid=165,fd=14),("nginx",pid=163,fd=14))
LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=349,fd=13))
LISTEN 0 511 127.0.0.1:8080 0.0.0.0:* users:(("nginx",pid=168,fd=18),("nginx",pid=167,fd=18),("nginx",pid=166,fd=18),("nginx",pid=165,fd=18),("nginx",pid=163,fd=18))
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=104,fd=14))
LISTEN 0 5 0.0.0.0:18545 0.0.0.0:* users:(("python3",pid=2498,fd=3))
LISTEN 0 511 [::]:8443 [::]:* users:(("nginx",pid=168,fd=17),("nginx",pid=167,fd=17),("nginx",pid=166,fd=17),("nginx",pid=165,fd=17),("nginx",pid=163,fd=17))
LISTEN 0 4096 *:8545 *:* users:(("java",pid=968674,fd=402))
LISTEN 0 4096 *:8546 *:* users:(("java",pid=968674,fd=403))
LISTEN 0 3 *:9545 *:* users:(("java",pid=968674,fd=399))
LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=168,fd=13),("nginx",pid=167,fd=13),("nginx",pid=166,fd=13),("nginx",pid=165,fd=13),("nginx",pid=163,fd=13))
LISTEN 0 4096 *:22 *:* users:(("systemd",pid=1,fd=44))
LISTEN 0 511 [::]:443 [::]:* users:(("nginx",pid=168,fd=15),("nginx",pid=167,fd=15),("nginx",pid=166,fd=15),("nginx",pid=165,fd=15),("nginx",pid=163,fd=15))
LISTEN 0 4096 *:30303 *:* users:(("java",pid=968674,fd=404))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=349,fd=14))
Besu service (systemctl list-units):
besu-rpc.service loaded active running Hyperledger Besu RPC Node
journalctl -u besu-rpc -n 25:
May 10 13:07:17 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:17.042-0700 | EthScheduler-Workers-3 | INFO | PersistBlockTask | Imported empty block #5,024,276 / 0 tx / 0 om / 0 (0.0%) gas / (0x2094aa9b9ae76cbc0a606f406a018e1e8cb0ca11360502eb3f0c3c5761c863c7) in 0.019s. Peers: 36
May 10 13:07:19 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:19.032-0700 | EthScheduler-Workers-2 | INFO | PersistBlockTask | Imported empty block #5,024,277 / 0 tx / 0 om / 0 (0.0%) gas / (0xbeb244e324cb7d9e5609ac86d479aa53945cbe1e149f07dba4b0e688976571e9) in 0.008s. Peers: 36
May 10 13:07:21 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:21.054-0700 | EthScheduler-Workers-7 | INFO | PersistBlockTask | Imported empty block #5,024,278 / 0 tx / 0 om / 0 (0.0%) gas / (0xfa04fb4276d4b42b2820c248a162dd2fbd929d444326d85752546d260f2db594) in 0.013s. Peers: 36
May 10 13:07:23 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:23.059-0700 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported empty block #5,024,279 / 0 tx / 0 om / 0 (0.0%) gas / (0x83331c7d6c1cc405dfa3ce44f811fa670e0720af9852eea60818d302100bcee4) in 0.021s. Peers: 36
May 10 13:07:25 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:25.034-0700 | EthScheduler-Workers-4 | INFO | PersistBlockTask | Imported empty block #5,024,280 / 0 tx / 0 om / 0 (0.0%) gas / (0x29088a9862365e23503f2a699ffa276601cb900f9c4226a320bb5a123858136f) in 0.005s. Peers: 36
May 10 13:07:27 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:27.036-0700 | EthScheduler-Workers-1 | INFO | PersistBlockTask | Imported empty block #5,024,281 / 0 tx / 0 om / 0 (0.0%) gas / (0x6e46414deb4d4fd37e20450932014f5f98da653b66086a5e1b96683dc0d64768) in 0.003s. Peers: 36
May 10 13:07:29 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:29.044-0700 | EthScheduler-Workers-6 | INFO | PersistBlockTask | Imported empty block #5,024,282 / 0 tx / 0 om / 0 (0.0%) gas / (0x645dc2185ced198ad01d48bac309875cb4584a6076a25170d9c0e2a5db5c2c00) in 0.009s. Peers: 36
May 10 13:07:31 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:31.042-0700 | EthScheduler-Workers-5 | INFO | PersistBlockTask | Imported empty block #5,024,283 / 0 tx / 0 om / 0 (0.0%) gas / (0xfd49171d44666e7ce3dfdb54e4976bcdc8a67aec3a64efb00cb5bc9491b8d5f6) in 0.019s. Peers: 36
May 10 13:07:33 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:33.036-0700 | EthScheduler-Workers-3 | INFO | PersistBlockTask | Imported empty block #5,024,284 / 0 tx / 0 om / 0 (0.0%) gas / (0x98fdc422789289b5092568ffd4ea353763c25558255220a198e3ece601588890) in 0.016s. Peers: 36
May 10 13:07:35 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:35.037-0700 | EthScheduler-Workers-2 | INFO | PersistBlockTask | Imported empty block #5,024,285 / 0 tx / 0 om / 0 (0.0%) gas / (0x4d0563c29eb1604d5fc11f7cc7a6c7f8ead7708a3f6fc986e86ec89ecadf7918) in 0.006s. Peers: 36
May 10 13:07:37 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:37.052-0700 | EthScheduler-Workers-7 | INFO | PersistBlockTask | Imported empty block #5,024,286 / 0 tx / 0 om / 0 (0.0%) gas / (0x34fca6abe3994518643f6cdcb779715972ce818e85125b7b429ab8b53bedd824) in 0.004s. Peers: 36
May 10 13:07:39 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:39.033-0700 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported empty block #5,024,287 / 0 tx / 0 om / 0 (0.0%) gas / (0x83a8d4b5ec4305d6395f2991b0b93a47fcf496968b0c2b5ad9bb05cd810fe019) in 0.011s. Peers: 36
May 10 13:07:41 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:41.027-0700 | EthScheduler-Workers-4 | INFO | PersistBlockTask | Imported empty block #5,024,288 / 0 tx / 0 om / 0 (0.0%) gas / (0x1213cbba02637a5f78680949bbd9630ec7ac937a24678047be7522aed4a1be8a) in 0.007s. Peers: 36
May 10 13:07:43 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:43.030-0700 | EthScheduler-Workers-1 | INFO | PersistBlockTask | Imported empty block #5,024,289 / 0 tx / 0 om / 0 (0.0%) gas / (0xf3bf0b503fc62847f06bcada375fc872386ff305464f0eeeb26aa5c940324b5c) in 0.007s. Peers: 36
May 10 13:07:45 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:45.035-0700 | EthScheduler-Workers-6 | INFO | PersistBlockTask | Imported empty block #5,024,290 / 0 tx / 0 om / 0 (0.0%) gas / (0x3195f831c6c1ffb592c92fe91e954c6c91510593adb22528c1b798e79d6b76bc) in 0.009s. Peers: 36
May 10 13:07:47 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:47.032-0700 | EthScheduler-Workers-5 | INFO | PersistBlockTask | Imported empty block #5,024,291 / 0 tx / 0 om / 0 (0.0%) gas / (0x4ac5495e7ec8f93d2a3f325b5363be8c841a4b5e69b34e9518a573cdcc780bcd) in 0.007s. Peers: 36
May 10 13:07:49 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:49.044-0700 | EthScheduler-Workers-3 | INFO | PersistBlockTask | Imported empty block #5,024,292 / 0 tx / 0 om / 0 (0.0%) gas / (0x8fdde14826ff657d086dc80c426310b2ca9257372b32c407c56bd8fbc07044a5) in 0.008s. Peers: 36
May 10 13:07:51 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:51.035-0700 | EthScheduler-Workers-2 | INFO | PersistBlockTask | Imported empty block #5,024,293 / 0 tx / 0 om / 0 (0.0%) gas / (0x7fd14f183435fd4f59d0ab43270f301be6ddbd1fbba0b87f4f7bf154111d8ef8) in 0.004s. Peers: 36
May 10 13:07:53 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:53.034-0700 | EthScheduler-Workers-6 | INFO | PersistBlockTask | Imported empty block #5,024,294 / 0 tx / 0 om / 0 (0.0%) gas / (0xa8823b3e59fce3ad85549cd5f7a9ec401ea95273413519838bb7bd8cb3c1d958) in 0.013s. Peers: 36
May 10 13:07:55 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:55.101-0700 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported empty block #5,024,295 / 0 tx / 0 om / 0 (0.0%) gas / (0x43a6c37d20fd151058ffe73f45f4de8e40a841920f1410122e4b4a80acf5c5a3) in 0.007s. Peers: 36
May 10 13:07:57 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:57.027-0700 | EthScheduler-Workers-4 | INFO | PersistBlockTask | Imported empty block #5,024,296 / 0 tx / 0 om / 0 (0.0%) gas / (0x44cec125480959167c90854b461cc295dbf82d179a6416d054d3580a24d11c30) in 0.005s. Peers: 36
May 10 13:07:59 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:07:59.040-0700 | EthScheduler-Workers-1 | INFO | PersistBlockTask | Imported empty block #5,024,297 / 0 tx / 0 om / 0 (0.0%) gas / (0xaf105e58bc058e39f6035940c7d5a7b431a1a5f2f10a900086d48f247c3b9f09) in 0.009s. Peers: 36
May 10 13:08:01 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:08:01.036-0700 | EthScheduler-Workers-7 | INFO | PersistBlockTask | Imported empty block #5,024,298 / 0 tx / 0 om / 0 (0.0%) gas / (0xedd7307ce16d10c89a58e8f43e30cfd1d3f68c3fa3e6bfc1fe1206bddb914b4a) in 0.010s. Peers: 36
May 10 13:08:03 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:08:03.043-0700 | EthScheduler-Workers-5 | INFO | PersistBlockTask | Imported empty block #5,024,299 / 0 tx / 0 om / 0 (0.0%) gas / (0xad665942dd0bc93fa7d674a6c03b4254409b953e35cd728d23835790290e8361) in 0.004s. Peers: 36
May 10 13:08:05 besu-rpc-core-1 besu-rpc[968674]: 2026-05-10 13:08:05.057-0700 | EthScheduler-Workers-3 | INFO | PersistBlockTask | Imported empty block #5,024,300 / 0 tx / 0 om / 0 (0.0%) gas / (0xcae412ef6e563ed5653f7dbe40559fe4a1f0a0e48566e11d84f9a6d472814676) in 0.031s. Peers: 36
journalctl -u besu -n 25:
-- No entries --
--- VMID 2500 @ 192.168.11.11 (status: running) ---
Listening ports (ss -tlnp):
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=325,fd=13))
LISTEN 0 5 0.0.0.0:18545 0.0.0.0:* users:(("python3",pid=981,fd=3))
LISTEN 0 4096 *:22 *:* users:(("sshd",pid=161,fd=3),("systemd",pid=1,fd=66))
LISTEN 0 4096 *:8545 *:* users:(("java",pid=518,fd=359))
LISTEN 0 4096 *:8546 *:* users:(("java",pid=518,fd=361))
LISTEN 0 4096 *:8547 *:* users:(("java",pid=518,fd=360))
LISTEN 0 4096 *:9545 *:* users:(("java",pid=518,fd=358))
LISTEN 0 4096 *:30303 *:* users:(("java",pid=518,fd=362))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=325,fd=14))
Besu service (systemctl list-units):
besu.service loaded active running Hyperledger Besu
journalctl -u besu-rpc -n 25:
-- No entries --
journalctl -u besu -n 25:
May 10 20:07:31 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:31.020+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,283 / 0 tx / 0 om / 0 (0.0%) gas / (0xfd49171d44666e7ce3dfdb54e4976bcdc8a67aec3a64efb00cb5bc9491b8d5f6) in 0.002s. Peers: 24
May 10 20:07:33 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:33.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,284 / 0 tx / 0 om / 0 (0.0%) gas / (0x98fdc422789289b5092568ffd4ea353763c25558255220a198e3ece601588890) in 0.002s. Peers: 24
May 10 20:07:35 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:35.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,285 / 0 tx / 0 om / 0 (0.0%) gas / (0x4d0563c29eb1604d5fc11f7cc7a6c7f8ead7708a3f6fc986e86ec89ecadf7918) in 0.003s. Peers: 24
May 10 20:07:37 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:37.032+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,286 / 0 tx / 0 om / 0 (0.0%) gas / (0x34fca6abe3994518643f6cdcb779715972ce818e85125b7b429ab8b53bedd824) in 0.002s. Peers: 24
May 10 20:07:39 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:39.020+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,287 / 0 tx / 0 om / 0 (0.0%) gas / (0x83a8d4b5ec4305d6395f2991b0b93a47fcf496968b0c2b5ad9bb05cd810fe019) in 0.002s. Peers: 24
May 10 20:07:41 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:41.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,288 / 0 tx / 0 om / 0 (0.0%) gas / (0x1213cbba02637a5f78680949bbd9630ec7ac937a24678047be7522aed4a1be8a) in 0.002s. Peers: 24
May 10 20:07:43 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:43.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,289 / 0 tx / 0 om / 0 (0.0%) gas / (0xf3bf0b503fc62847f06bcada375fc872386ff305464f0eeeb26aa5c940324b5c) in 0.002s. Peers: 24
May 10 20:07:45 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:45.028+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,290 / 0 tx / 0 om / 0 (0.0%) gas / (0x3195f831c6c1ffb592c92fe91e954c6c91510593adb22528c1b798e79d6b76bc) in 0.001s. Peers: 24
May 10 20:07:47 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:47.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,291 / 0 tx / 0 om / 0 (0.0%) gas / (0x4ac5495e7ec8f93d2a3f325b5363be8c841a4b5e69b34e9518a573cdcc780bcd) in 0.002s. Peers: 24
May 10 20:07:49 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:49.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,292 / 0 tx / 0 om / 0 (0.0%) gas / (0x8fdde14826ff657d086dc80c426310b2ca9257372b32c407c56bd8fbc07044a5) in 0.001s. Peers: 24
May 10 20:07:51 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:51.031+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,293 / 0 tx / 0 om / 0 (0.0%) gas / (0x7fd14f183435fd4f59d0ab43270f301be6ddbd1fbba0b87f4f7bf154111d8ef8) in 0.001s. Peers: 24
May 10 20:07:53 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:53.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,294 / 0 tx / 0 om / 0 (0.0%) gas / (0xa8823b3e59fce3ad85549cd5f7a9ec401ea95273413519838bb7bd8cb3c1d958) in 0.002s. Peers: 24
May 10 20:07:55 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:55.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,295 / 0 tx / 0 om / 0 (0.0%) gas / (0x43a6c37d20fd151058ffe73f45f4de8e40a841920f1410122e4b4a80acf5c5a3) in 0.003s. Peers: 24
May 10 20:07:57 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:57.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,296 / 0 tx / 0 om / 0 (0.0%) gas / (0x44cec125480959167c90854b461cc295dbf82d179a6416d054d3580a24d11c30) in 0.002s. Peers: 24
May 10 20:07:59 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:07:59.029+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,297 / 0 tx / 0 om / 0 (0.0%) gas / (0xaf105e58bc058e39f6035940c7d5a7b431a1a5f2f10a900086d48f247c3b9f09) in 0.002s. Peers: 24
May 10 20:08:01 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:01.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,298 / 0 tx / 0 om / 0 (0.0%) gas / (0xedd7307ce16d10c89a58e8f43e30cfd1d3f68c3fa3e6bfc1fe1206bddb914b4a) in 0.002s. Peers: 24
May 10 20:08:03 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:03.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,299 / 0 tx / 0 om / 0 (0.0%) gas / (0xad665942dd0bc93fa7d674a6c03b4254409b953e35cd728d23835790290e8361) in 0.002s. Peers: 24
May 10 20:08:05 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:05.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,300 / 0 tx / 0 om / 0 (0.0%) gas / (0xcae412ef6e563ed5653f7dbe40559fe4a1f0a0e48566e11d84f9a6d472814676) in 0.001s. Peers: 24
May 10 20:08:07 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:07.018+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,301 / 0 tx / 0 om / 0 (0.0%) gas / (0x3c66fc3e5b9410c83a25e0acea6844fd1eee1c28f3a1fc348322bd0e32f1762e) in 0.002s. Peers: 24
May 10 20:08:09 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:09.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,302 / 0 tx / 0 om / 0 (0.0%) gas / (0xa878205b88dd420820cb7becfe730fbbeb8f33570e0023f459c2df6413278717) in 0.001s. Peers: 24
May 10 20:08:11 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:11.020+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,303 / 0 tx / 0 om / 0 (0.0%) gas / (0x64b03849152b3815fb6aae30e0c5ed048d2aacce05aff2982257c8c16489c54c) in 0.001s. Peers: 24
May 10 20:08:13 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:13.018+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,304 / 0 tx / 0 om / 0 (0.0%) gas / (0xc68f2c0daf0f9c455f84025fe98ae66ba8bd2960c5b91a739f5cc7417e440e5e) in 0.001s. Peers: 24
May 10 20:08:15 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:15.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,305 / 0 tx / 0 om / 0 (0.0%) gas / (0x5ad2ce582093542f5a323b841a1dac5edc1fc3d81436a6f4d891334018b4ba16) in 0.001s. Peers: 24
May 10 20:08:17 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:17.028+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,306 / 0 tx / 0 om / 0 (0.0%) gas / (0xe169947f77231d8bca4c146b714a93ee64abd8f3a7bbebec5b9414bb43226613) in 0.001s. Peers: 24
May 10 20:08:19 besu-rpc-alltra-1 besu[518]: 2026-05-10 20:08:19.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,307 / 0 tx / 0 om / 0 (0.0%) gas / (0xb6282cb029b9970909da3fa580879ccf6071c60373e11868c4bf982f4c75c3e9) in 0.001s. Peers: 24
--- VMID 2501 @ 192.168.11.11 (status: running) ---
Listening ports (ss -tlnp):
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=336,fd=13))
LISTEN 0 5 0.0.0.0:18545 0.0.0.0:* users:(("python3",pid=959,fd=3))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=336,fd=14))
LISTEN 0 4096 *:22 *:* users:(("sshd",pid=164,fd=3),("systemd",pid=1,fd=56))
LISTEN 0 4096 *:8545 *:* users:(("java",pid=548,fd=360))
LISTEN 0 4096 *:8546 *:* users:(("java",pid=548,fd=361))
LISTEN 0 4096 *:9545 *:* users:(("java",pid=548,fd=359))
LISTEN 0 4096 *:30303 *:* users:(("java",pid=548,fd=362))
Besu service (systemctl list-units):
besu-rpc.service loaded activating auto-restart Hyperledger Besu RPC Node
besu.service loaded active running Hyperledger Besu
journalctl -u besu-rpc -n 25:
May 10 20:07:51 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Consumed 7.509s CPU time.
May 10 20:07:51 besu-rpc-alltra-2 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:07:54 besu-rpc-alltra-2 besu-rpc[6282]: Unable to read TOML configuration, file not found.
May 10 20:07:54 besu-rpc-alltra-2 besu-rpc[6282]: To display full help:
May 10 20:07:54 besu-rpc-alltra-2 besu-rpc[6282]: besu [COMMAND] --help
May 10 20:07:54 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:07:54 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Consumed 7.373s CPU time.
May 10 20:08:04 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 16.
May 10 20:08:04 besu-rpc-alltra-2 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:04 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Consumed 7.373s CPU time.
May 10 20:08:04 besu-rpc-alltra-2 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:06 besu-rpc-alltra-2 besu-rpc[6321]: Unable to read TOML configuration, file not found.
May 10 20:08:06 besu-rpc-alltra-2 besu-rpc[6321]: To display full help:
May 10 20:08:06 besu-rpc-alltra-2 besu-rpc[6321]: besu [COMMAND] --help
May 10 20:08:06 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:06 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Consumed 6.732s CPU time.
May 10 20:08:16 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 17.
May 10 20:08:16 besu-rpc-alltra-2 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:16 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Consumed 6.732s CPU time.
May 10 20:08:16 besu-rpc-alltra-2 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:19 besu-rpc-alltra-2 besu-rpc[6361]: Unable to read TOML configuration, file not found.
May 10 20:08:19 besu-rpc-alltra-2 besu-rpc[6361]: To display full help:
May 10 20:08:19 besu-rpc-alltra-2 besu-rpc[6361]: besu [COMMAND] --help
May 10 20:08:19 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:19 besu-rpc-alltra-2 systemd[1]: besu-rpc.service: Consumed 7.815s CPU time.
journalctl -u besu -n 25:
May 10 20:07:43 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:43.021+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,289 / 0 tx / 0 om / 0 (0.0%) gas / (0xf3bf0b503fc62847f06bcada375fc872386ff305464f0eeeb26aa5c940324b5c) in 0.003s. Peers: 40
May 10 20:07:45 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:45.028+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,290 / 0 tx / 0 om / 0 (0.0%) gas / (0x3195f831c6c1ffb592c92fe91e954c6c91510593adb22528c1b798e79d6b76bc) in 0.003s. Peers: 40
May 10 20:07:47 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:47.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,291 / 0 tx / 0 om / 0 (0.0%) gas / (0x4ac5495e7ec8f93d2a3f325b5363be8c841a4b5e69b34e9518a573cdcc780bcd) in 0.003s. Peers: 40
May 10 20:07:49 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:49.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,292 / 0 tx / 0 om / 0 (0.0%) gas / (0x8fdde14826ff657d086dc80c426310b2ca9257372b32c407c56bd8fbc07044a5) in 0.002s. Peers: 40
May 10 20:07:51 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:51.030+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,293 / 0 tx / 0 om / 0 (0.0%) gas / (0x7fd14f183435fd4f59d0ab43270f301be6ddbd1fbba0b87f4f7bf154111d8ef8) in 0.001s. Peers: 40
May 10 20:07:53 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:53.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,294 / 0 tx / 0 om / 0 (0.0%) gas / (0xa8823b3e59fce3ad85549cd5f7a9ec401ea95273413519838bb7bd8cb3c1d958) in 0.001s. Peers: 40
May 10 20:07:55 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:55.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,295 / 0 tx / 0 om / 0 (0.0%) gas / (0x43a6c37d20fd151058ffe73f45f4de8e40a841920f1410122e4b4a80acf5c5a3) in 0.004s. Peers: 40
May 10 20:07:57 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:57.021+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,296 / 0 tx / 0 om / 0 (0.0%) gas / (0x44cec125480959167c90854b461cc295dbf82d179a6416d054d3580a24d11c30) in 0.001s. Peers: 40
May 10 20:07:59 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:07:59.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,297 / 0 tx / 0 om / 0 (0.0%) gas / (0xaf105e58bc058e39f6035940c7d5a7b431a1a5f2f10a900086d48f247c3b9f09) in 0.002s. Peers: 40
May 10 20:08:01 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:01.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,298 / 0 tx / 0 om / 0 (0.0%) gas / (0xedd7307ce16d10c89a58e8f43e30cfd1d3f68c3fa3e6bfc1fe1206bddb914b4a) in 0.001s. Peers: 40
May 10 20:08:03 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:03.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,299 / 0 tx / 0 om / 0 (0.0%) gas / (0xad665942dd0bc93fa7d674a6c03b4254409b953e35cd728d23835790290e8361) in 0.002s. Peers: 40
May 10 20:08:05 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:05.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,300 / 0 tx / 0 om / 0 (0.0%) gas / (0xcae412ef6e563ed5653f7dbe40559fe4a1f0a0e48566e11d84f9a6d472814676) in 0.001s. Peers: 40
May 10 20:08:07 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:07.015+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,301 / 0 tx / 0 om / 0 (0.0%) gas / (0x3c66fc3e5b9410c83a25e0acea6844fd1eee1c28f3a1fc348322bd0e32f1762e) in 0.002s. Peers: 40
May 10 20:08:09 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:09.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,302 / 0 tx / 0 om / 0 (0.0%) gas / (0xa878205b88dd420820cb7becfe730fbbeb8f33570e0023f459c2df6413278717) in 0.002s. Peers: 40
May 10 20:08:11 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:11.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,303 / 0 tx / 0 om / 0 (0.0%) gas / (0x64b03849152b3815fb6aae30e0c5ed048d2aacce05aff2982257c8c16489c54c) in 0.001s. Peers: 40
May 10 20:08:13 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:13.016+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,304 / 0 tx / 0 om / 0 (0.0%) gas / (0xc68f2c0daf0f9c455f84025fe98ae66ba8bd2960c5b91a739f5cc7417e440e5e) in 0.001s. Peers: 40
May 10 20:08:15 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:15.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,305 / 0 tx / 0 om / 0 (0.0%) gas / (0x5ad2ce582093542f5a323b841a1dac5edc1fc3d81436a6f4d891334018b4ba16) in 0.002s. Peers: 40
May 10 20:08:17 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:17.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,306 / 0 tx / 0 om / 0 (0.0%) gas / (0xe169947f77231d8bca4c146b714a93ee64abd8f3a7bbebec5b9414bb43226613) in 0.002s. Peers: 40
May 10 20:08:19 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:19.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,307 / 0 tx / 0 om / 0 (0.0%) gas / (0xb6282cb029b9970909da3fa580879ccf6071c60373e11868c4bf982f4c75c3e9) in 0.002s. Peers: 40
May 10 20:08:21 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:21.018+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,308 / 0 tx / 0 om / 0 (0.0%) gas / (0x75a3910d8f3b58d4b41f068ab566796a63c9faaeea46eb65b8e9f54a15e04626) in 0.001s. Peers: 40
May 10 20:08:23 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:23.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,309 / 0 tx / 0 om / 0 (0.0%) gas / (0x2ee8399e6ad15381ad3d9bdcbd3168efe9c696ddf12dd873be17c5403ca6d12b) in 0.002s. Peers: 40
May 10 20:08:25 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:25.034+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,310 / 0 tx / 0 om / 0 (0.0%) gas / (0xd9cbe80cfa42f0d206064b2a8583513d05afd67790b95f1b1fa5ed8d0ce62399) in 0.004s. Peers: 40
May 10 20:08:27 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:27.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,311 / 0 tx / 0 om / 0 (0.0%) gas / (0x5cde394c2fa6e2b606f788801314f7847b1b8568459b7b65e08a8988a54e2692) in 0.002s. Peers: 40
May 10 20:08:29 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:29.030+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,312 / 0 tx / 0 om / 0 (0.0%) gas / (0xc2378a23383699dbd7c9eeab3c4ef8ec737bbb7087b166301f747d14787ee5eb) in 0.001s. Peers: 40
May 10 20:08:31 besu-rpc-alltra-2 besu[548]: 2026-05-10 20:08:31.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,313 / 0 tx / 0 om / 0 (0.0%) gas / (0x0c3fbd2036fd5d87db5a84b06ae272d12196dfc0c437e5789868c8a1db874a26) in 0.001s. Peers: 40
--- VMID 2502 @ 192.168.11.11 (status: running) ---
Listening ports (ss -tlnp):
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=335,fd=13))
LISTEN 0 5 0.0.0.0:18545 0.0.0.0:* users:(("python3",pid=974,fd=3))
LISTEN 0 4096 *:8545 *:* users:(("java",pid=541,fd=358))
LISTEN 0 4096 *:8546 *:* users:(("java",pid=541,fd=359))
LISTEN 0 4096 *:9545 *:* users:(("java",pid=541,fd=357))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=335,fd=14))
LISTEN 0 4096 *:22 *:* users:(("sshd",pid=166,fd=3),("systemd",pid=1,fd=48))
LISTEN 0 4096 *:30303 *:* users:(("java",pid=541,fd=360))
Besu service (systemctl list-units):
besu-rpc.service loaded activating auto-restart Hyperledger Besu RPC Node
besu.service loaded active running Hyperledger Besu
journalctl -u besu-rpc -n 25:
May 10 20:08:04 besu-rpc-alltra-3 besu-rpc[6617]: besu [COMMAND] --help
May 10 20:08:04 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:04 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Consumed 8.394s CPU time.
May 10 20:08:14 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 16.
May 10 20:08:14 besu-rpc-alltra-3 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:14 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Consumed 8.394s CPU time.
May 10 20:08:14 besu-rpc-alltra-3 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:17 besu-rpc-alltra-3 besu-rpc[6657]: Unable to read TOML configuration, file not found.
May 10 20:08:17 besu-rpc-alltra-3 besu-rpc[6657]: To display full help:
May 10 20:08:17 besu-rpc-alltra-3 besu-rpc[6657]: besu [COMMAND] --help
May 10 20:08:17 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:17 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Consumed 8.643s CPU time.
May 10 20:08:28 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 17.
May 10 20:08:28 besu-rpc-alltra-3 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:28 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Consumed 8.643s CPU time.
May 10 20:08:28 besu-rpc-alltra-3 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:30 besu-rpc-alltra-3 besu-rpc[6696]: Unable to read TOML configuration, file not found.
May 10 20:08:30 besu-rpc-alltra-3 besu-rpc[6696]: To display full help:
May 10 20:08:30 besu-rpc-alltra-3 besu-rpc[6696]: besu [COMMAND] --help
May 10 20:08:30 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:30 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Consumed 7.949s CPU time.
May 10 20:08:41 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 18.
May 10 20:08:41 besu-rpc-alltra-3 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:41 besu-rpc-alltra-3 systemd[1]: besu-rpc.service: Consumed 7.949s CPU time.
May 10 20:08:41 besu-rpc-alltra-3 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
journalctl -u besu -n 25:
May 10 20:07:55 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:07:55.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,295 / 0 tx / 0 om / 0 (0.0%) gas / (0x43a6c37d20fd151058ffe73f45f4de8e40a841920f1410122e4b4a80acf5c5a3) in 0.004s. Peers: 40
May 10 20:07:57 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:07:57.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,296 / 0 tx / 0 om / 0 (0.0%) gas / (0x44cec125480959167c90854b461cc295dbf82d179a6416d054d3580a24d11c30) in 0.003s. Peers: 40
May 10 20:07:59 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:07:59.030+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,297 / 0 tx / 0 om / 0 (0.0%) gas / (0xaf105e58bc058e39f6035940c7d5a7b431a1a5f2f10a900086d48f247c3b9f09) in 0.004s. Peers: 40
May 10 20:08:01 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:01.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,298 / 0 tx / 0 om / 0 (0.0%) gas / (0xedd7307ce16d10c89a58e8f43e30cfd1d3f68c3fa3e6bfc1fe1206bddb914b4a) in 0.003s. Peers: 40
May 10 20:08:03 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:03.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,299 / 0 tx / 0 om / 0 (0.0%) gas / (0xad665942dd0bc93fa7d674a6c03b4254409b953e35cd728d23835790290e8361) in 0.003s. Peers: 40
May 10 20:08:05 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:05.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,300 / 0 tx / 0 om / 0 (0.0%) gas / (0xcae412ef6e563ed5653f7dbe40559fe4a1f0a0e48566e11d84f9a6d472814676) in 0.003s. Peers: 40
May 10 20:08:07 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:07.021+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,301 / 0 tx / 0 om / 0 (0.0%) gas / (0x3c66fc3e5b9410c83a25e0acea6844fd1eee1c28f3a1fc348322bd0e32f1762e) in 0.004s. Peers: 40
May 10 20:08:09 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:09.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,302 / 0 tx / 0 om / 0 (0.0%) gas / (0xa878205b88dd420820cb7becfe730fbbeb8f33570e0023f459c2df6413278717) in 0.003s. Peers: 40
May 10 20:08:11 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:11.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,303 / 0 tx / 0 om / 0 (0.0%) gas / (0x64b03849152b3815fb6aae30e0c5ed048d2aacce05aff2982257c8c16489c54c) in 0.004s. Peers: 40
May 10 20:08:13 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:13.018+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,304 / 0 tx / 0 om / 0 (0.0%) gas / (0xc68f2c0daf0f9c455f84025fe98ae66ba8bd2960c5b91a739f5cc7417e440e5e) in 0.002s. Peers: 40
May 10 20:08:15 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:15.028+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,305 / 0 tx / 0 om / 0 (0.0%) gas / (0x5ad2ce582093542f5a323b841a1dac5edc1fc3d81436a6f4d891334018b4ba16) in 0.004s. Peers: 40
May 10 20:08:17 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:17.033+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,306 / 0 tx / 0 om / 0 (0.0%) gas / (0xe169947f77231d8bca4c146b714a93ee64abd8f3a7bbebec5b9414bb43226613) in 0.004s. Peers: 40
May 10 20:08:19 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:19.029+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,307 / 0 tx / 0 om / 0 (0.0%) gas / (0xb6282cb029b9970909da3fa580879ccf6071c60373e11868c4bf982f4c75c3e9) in 0.009s. Peers: 40
May 10 20:08:21 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:21.020+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,308 / 0 tx / 0 om / 0 (0.0%) gas / (0x75a3910d8f3b58d4b41f068ab566796a63c9faaeea46eb65b8e9f54a15e04626) in 0.002s. Peers: 40
May 10 20:08:23 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:23.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,309 / 0 tx / 0 om / 0 (0.0%) gas / (0x2ee8399e6ad15381ad3d9bdcbd3168efe9c696ddf12dd873be17c5403ca6d12b) in 0.003s. Peers: 40
May 10 20:08:25 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:25.035+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,310 / 0 tx / 0 om / 0 (0.0%) gas / (0xd9cbe80cfa42f0d206064b2a8583513d05afd67790b95f1b1fa5ed8d0ce62399) in 0.008s. Peers: 40
May 10 20:08:27 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:27.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,311 / 0 tx / 0 om / 0 (0.0%) gas / (0x5cde394c2fa6e2b606f788801314f7847b1b8568459b7b65e08a8988a54e2692) in 0.001s. Peers: 40
May 10 20:08:29 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:29.048+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,312 / 0 tx / 0 om / 0 (0.0%) gas / (0xc2378a23383699dbd7c9eeab3c4ef8ec737bbb7087b166301f747d14787ee5eb) in 0.018s. Peers: 40
May 10 20:08:31 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:31.021+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,313 / 0 tx / 0 om / 0 (0.0%) gas / (0x0c3fbd2036fd5d87db5a84b06ae272d12196dfc0c437e5789868c8a1db874a26) in 0.002s. Peers: 40
May 10 20:08:33 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:33.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,314 / 0 tx / 0 om / 0 (0.0%) gas / (0xf3190d68f60a316816ac9a8f02296c4a447a58fe0b238aac38d84b35ba16553e) in 0.001s. Peers: 40
May 10 20:08:35 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:35.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,315 / 0 tx / 0 om / 0 (0.0%) gas / (0x7976585940bc4e7edfee434d2a793638888035c8ad7bbadd8362787e184df6ed) in 0.003s. Peers: 40
May 10 20:08:37 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:37.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,316 / 0 tx / 0 om / 0 (0.0%) gas / (0x9689fc7ef463f1fcc789523264f09fff2138531ad3b67ffca451d914d61a7721) in 0.005s. Peers: 40
May 10 20:08:39 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:39.028+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,317 / 0 tx / 0 om / 0 (0.0%) gas / (0x11a5ba96b9f99699b944326450ed367048dd99a0e939adf16027ab38cd91c2db) in 0.004s. Peers: 40
May 10 20:08:41 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:41.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,318 / 0 tx / 0 om / 0 (0.0%) gas / (0x68d4479715cd4bdfcb34871b5f763b89d7cf3dcddb6b80ad639137e5ffc4caa5) in 0.003s. Peers: 40
May 10 20:08:43 besu-rpc-alltra-3 besu[541]: 2026-05-10 20:08:43.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,319 / 0 tx / 0 om / 0 (0.0%) gas / (0xfeaba9671447b66b6f0b4b88716a4cc9dde77e726c654e4119bda51486d839e4) in 0.003s. Peers: 40
--- VMID 2503 @ 192.168.11.11 (status: running) ---
Listening ports (ss -tlnp):
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 5 0.0.0.0:18545 0.0.0.0:* users:(("python3",pid=964,fd=3))
LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=336,fd=13))
LISTEN 0 4096 *:30303 *:* users:(("java",pid=553,fd=361))
LISTEN 0 4096 *:9545 *:* users:(("java",pid=553,fd=358))
LISTEN 0 4096 *:8545 *:* users:(("java",pid=553,fd=359))
LISTEN 0 4096 *:8546 *:* users:(("java",pid=553,fd=360))
LISTEN 0 4096 *:22 *:* users:(("sshd",pid=163,fd=3),("systemd",pid=1,fd=54))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=336,fd=14))
Besu service (systemctl list-units):
besu-rpc.service loaded activating auto-restart Hyperledger Besu RPC Node
besu.service loaded active running Hyperledger Besu
journalctl -u besu-rpc -n 25:
May 10 20:08:21 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Consumed 7.722s CPU time.
May 10 20:08:21 besu-rpc-hybx-1 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:24 besu-rpc-hybx-1 besu-rpc[8618]: Unable to read TOML configuration, file not found.
May 10 20:08:24 besu-rpc-hybx-1 besu-rpc[8618]: To display full help:
May 10 20:08:24 besu-rpc-hybx-1 besu-rpc[8618]: besu [COMMAND] --help
May 10 20:08:24 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:24 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Consumed 8.020s CPU time.
May 10 20:08:34 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 17.
May 10 20:08:34 besu-rpc-hybx-1 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:34 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Consumed 8.020s CPU time.
May 10 20:08:34 besu-rpc-hybx-1 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:37 besu-rpc-hybx-1 besu-rpc[8657]: Unable to read TOML configuration, file not found.
May 10 20:08:37 besu-rpc-hybx-1 besu-rpc[8657]: To display full help:
May 10 20:08:37 besu-rpc-hybx-1 besu-rpc[8657]: besu [COMMAND] --help
May 10 20:08:37 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:37 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Consumed 7.759s CPU time.
May 10 20:08:47 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 18.
May 10 20:08:47 besu-rpc-hybx-1 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:47 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Consumed 7.759s CPU time.
May 10 20:08:47 besu-rpc-hybx-1 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:50 besu-rpc-hybx-1 besu-rpc[8697]: Unable to read TOML configuration, file not found.
May 10 20:08:50 besu-rpc-hybx-1 besu-rpc[8697]: To display full help:
May 10 20:08:50 besu-rpc-hybx-1 besu-rpc[8697]: besu [COMMAND] --help
May 10 20:08:50 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:50 besu-rpc-hybx-1 systemd[1]: besu-rpc.service: Consumed 7.647s CPU time.
journalctl -u besu -n 25:
May 10 20:08:07 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:07.016+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,301 / 0 tx / 0 om / 0 (0.0%) gas / (0x3c66fc3e5b9410c83a25e0acea6844fd1eee1c28f3a1fc348322bd0e32f1762e) in 0.002s. Peers: 40
May 10 20:08:09 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:09.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,302 / 0 tx / 0 om / 0 (0.0%) gas / (0xa878205b88dd420820cb7becfe730fbbeb8f33570e0023f459c2df6413278717) in 0.004s. Peers: 40
May 10 20:08:11 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:11.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,303 / 0 tx / 0 om / 0 (0.0%) gas / (0x64b03849152b3815fb6aae30e0c5ed048d2aacce05aff2982257c8c16489c54c) in 0.001s. Peers: 40
May 10 20:08:13 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:13.018+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,304 / 0 tx / 0 om / 0 (0.0%) gas / (0xc68f2c0daf0f9c455f84025fe98ae66ba8bd2960c5b91a739f5cc7417e440e5e) in 0.001s. Peers: 40
May 10 20:08:15 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:15.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,305 / 0 tx / 0 om / 0 (0.0%) gas / (0x5ad2ce582093542f5a323b841a1dac5edc1fc3d81436a6f4d891334018b4ba16) in 0.002s. Peers: 40
May 10 20:08:17 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:17.034+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,306 / 0 tx / 0 om / 0 (0.0%) gas / (0xe169947f77231d8bca4c146b714a93ee64abd8f3a7bbebec5b9414bb43226613) in 0.004s. Peers: 40
May 10 20:08:19 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:19.033+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,307 / 0 tx / 0 om / 0 (0.0%) gas / (0xb6282cb029b9970909da3fa580879ccf6071c60373e11868c4bf982f4c75c3e9) in 0.005s. Peers: 40
May 10 20:08:21 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:21.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,308 / 0 tx / 0 om / 0 (0.0%) gas / (0x75a3910d8f3b58d4b41f068ab566796a63c9faaeea46eb65b8e9f54a15e04626) in 0.002s. Peers: 40
May 10 20:08:23 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:23.034+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,309 / 0 tx / 0 om / 0 (0.0%) gas / (0x2ee8399e6ad15381ad3d9bdcbd3168efe9c696ddf12dd873be17c5403ca6d12b) in 0.008s. Peers: 40
May 10 20:08:25 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:25.032+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,310 / 0 tx / 0 om / 0 (0.0%) gas / (0xd9cbe80cfa42f0d206064b2a8583513d05afd67790b95f1b1fa5ed8d0ce62399) in 0.002s. Peers: 40
May 10 20:08:27 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:27.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,311 / 0 tx / 0 om / 0 (0.0%) gas / (0x5cde394c2fa6e2b606f788801314f7847b1b8568459b7b65e08a8988a54e2692) in 0.002s. Peers: 40
May 10 20:08:29 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:29.030+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,312 / 0 tx / 0 om / 0 (0.0%) gas / (0xc2378a23383699dbd7c9eeab3c4ef8ec737bbb7087b166301f747d14787ee5eb) in 0.002s. Peers: 40
May 10 20:08:31 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:31.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,313 / 0 tx / 0 om / 0 (0.0%) gas / (0x0c3fbd2036fd5d87db5a84b06ae272d12196dfc0c437e5789868c8a1db874a26) in 0.002s. Peers: 40
May 10 20:08:33 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:33.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,314 / 0 tx / 0 om / 0 (0.0%) gas / (0xf3190d68f60a316816ac9a8f02296c4a447a58fe0b238aac38d84b35ba16553e) in 0.004s. Peers: 40
May 10 20:08:35 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:35.030+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,315 / 0 tx / 0 om / 0 (0.0%) gas / (0x7976585940bc4e7edfee434d2a793638888035c8ad7bbadd8362787e184df6ed) in 0.010s. Peers: 40
May 10 20:08:37 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:37.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,316 / 0 tx / 0 om / 0 (0.0%) gas / (0x9689fc7ef463f1fcc789523264f09fff2138531ad3b67ffca451d914d61a7721) in 0.004s. Peers: 40
May 10 20:08:39 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:39.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,317 / 0 tx / 0 om / 0 (0.0%) gas / (0x11a5ba96b9f99699b944326450ed367048dd99a0e939adf16027ab38cd91c2db) in 0.001s. Peers: 40
May 10 20:08:41 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:41.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,318 / 0 tx / 0 om / 0 (0.0%) gas / (0x68d4479715cd4bdfcb34871b5f763b89d7cf3dcddb6b80ad639137e5ffc4caa5) in 0.002s. Peers: 40
May 10 20:08:43 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:43.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,319 / 0 tx / 0 om / 0 (0.0%) gas / (0xfeaba9671447b66b6f0b4b88716a4cc9dde77e726c654e4119bda51486d839e4) in 0.004s. Peers: 40
May 10 20:08:45 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:45.028+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,320 / 0 tx / 0 om / 0 (0.0%) gas / (0xc8764a00f5a9e756ad63fc538f763782c5a6090bcaee01e509b2ebacc84d26f6) in 0.002s. Peers: 40
May 10 20:08:47 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:47.020+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,321 / 0 tx / 0 om / 0 (0.0%) gas / (0x564a59dd1f25de2dfcfe58aa892b7e8e0bed5916a042fa3f9c56b557d982f1d3) in 0.002s. Peers: 40
May 10 20:08:49 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:49.020+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,322 / 0 tx / 0 om / 0 (0.0%) gas / (0xea4bb1aff7c0be0fdd5fad6be2b362b8edaf207b810371ad94ac22a8b4ef97b0) in 0.001s. Peers: 40
May 10 20:08:51 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:51.017+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,323 / 0 tx / 0 om / 0 (0.0%) gas / (0x7bf1becee96d9f6c4d3cbadb6d25dd383e189cb181b2b5d37763c4d8db52db1f) in 0.002s. Peers: 40
May 10 20:08:53 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:53.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,324 / 0 tx / 0 om / 0 (0.0%) gas / (0xc5ec25641f4c396b319e1efe18494b4779a61300b9eaf5bad120bef5332097d8) in 0.003s. Peers: 40
May 10 20:08:55 besu-rpc-hybx-1 besu[553]: 2026-05-10 20:08:55.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,325 / 0 tx / 0 om / 0 (0.0%) gas / (0x0335249ccbc498a3ab8cca4d1424f3ec2f34b4151aa64f63e21968e97a98d36c) in 0.002s. Peers: 40
--- VMID 2504 @ 192.168.11.11 (status: running) ---
Listening ports (ss -tlnp):
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 5 0.0.0.0:18545 0.0.0.0:* users:(("python3",pid=958,fd=3))
LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=335,fd=13))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=335,fd=14))
LISTEN 0 4096 *:30303 *:* users:(("java",pid=545,fd=360))
LISTEN 0 4096 *:22 *:* users:(("sshd",pid=173,fd=3),("systemd",pid=1,fd=70))
LISTEN 0 4096 *:9545 *:* users:(("java",pid=545,fd=357))
LISTEN 0 4096 *:8546 *:* users:(("java",pid=545,fd=359))
LISTEN 0 4096 *:8545 *:* users:(("java",pid=545,fd=358))
Besu service (systemctl list-units):
besu-rpc.service loaded activating auto-restart Hyperledger Besu RPC Node
besu.service loaded active running Hyperledger Besu
journalctl -u besu-rpc -n 25:
May 10 20:08:27 besu-rpc-hybx-2 besu-rpc[6316]: besu [COMMAND] --help
May 10 20:08:27 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:27 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Consumed 6.947s CPU time.
May 10 20:08:37 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 16.
May 10 20:08:37 besu-rpc-hybx-2 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:37 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Consumed 6.947s CPU time.
May 10 20:08:37 besu-rpc-hybx-2 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:40 besu-rpc-hybx-2 besu-rpc[6356]: Unable to read TOML configuration, file not found.
May 10 20:08:40 besu-rpc-hybx-2 besu-rpc[6356]: To display full help:
May 10 20:08:40 besu-rpc-hybx-2 besu-rpc[6356]: besu [COMMAND] --help
May 10 20:08:40 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:40 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Consumed 7.220s CPU time.
May 10 20:08:50 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 17.
May 10 20:08:50 besu-rpc-hybx-2 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:50 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Consumed 7.220s CPU time.
May 10 20:08:50 besu-rpc-hybx-2 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:08:53 besu-rpc-hybx-2 besu-rpc[6396]: Unable to read TOML configuration, file not found.
May 10 20:08:53 besu-rpc-hybx-2 besu-rpc[6396]: To display full help:
May 10 20:08:53 besu-rpc-hybx-2 besu-rpc[6396]: besu [COMMAND] --help
May 10 20:08:53 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:08:53 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Consumed 7.525s CPU time.
May 10 20:09:03 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Scheduled restart job, restart counter is at 18.
May 10 20:09:03 besu-rpc-hybx-2 systemd[1]: Stopped besu-rpc.service - Hyperledger Besu RPC Node.
May 10 20:09:03 besu-rpc-hybx-2 systemd[1]: besu-rpc.service: Consumed 7.525s CPU time.
May 10 20:09:03 besu-rpc-hybx-2 systemd[1]: Started besu-rpc.service - Hyperledger Besu RPC Node.
journalctl -u besu -n 25:
May 10 20:08:19 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:19.038+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,307 / 0 tx / 0 om / 0 (0.0%) gas / (0xb6282cb029b9970909da3fa580879ccf6071c60373e11868c4bf982f4c75c3e9) in 0.004s. Peers: 40
May 10 20:08:21 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:21.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,308 / 0 tx / 0 om / 0 (0.0%) gas / (0x75a3910d8f3b58d4b41f068ab566796a63c9faaeea46eb65b8e9f54a15e04626) in 0.004s. Peers: 40
May 10 20:08:23 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:23.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,309 / 0 tx / 0 om / 0 (0.0%) gas / (0x2ee8399e6ad15381ad3d9bdcbd3168efe9c696ddf12dd873be17c5403ca6d12b) in 0.004s. Peers: 40
May 10 20:08:25 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:25.038+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,310 / 0 tx / 0 om / 0 (0.0%) gas / (0xd9cbe80cfa42f0d206064b2a8583513d05afd67790b95f1b1fa5ed8d0ce62399) in 0.008s. Peers: 40
May 10 20:08:27 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:27.031+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,311 / 0 tx / 0 om / 0 (0.0%) gas / (0x5cde394c2fa6e2b606f788801314f7847b1b8568459b7b65e08a8988a54e2692) in 0.001s. Peers: 40
May 10 20:08:29 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:29.050+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,312 / 0 tx / 0 om / 0 (0.0%) gas / (0xc2378a23383699dbd7c9eeab3c4ef8ec737bbb7087b166301f747d14787ee5eb) in 0.021s. Peers: 40
May 10 20:08:31 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:31.041+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,313 / 0 tx / 0 om / 0 (0.0%) gas / (0x0c3fbd2036fd5d87db5a84b06ae272d12196dfc0c437e5789868c8a1db874a26) in 0.021s. Peers: 40
May 10 20:08:33 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:33.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,314 / 0 tx / 0 om / 0 (0.0%) gas / (0xf3190d68f60a316816ac9a8f02296c4a447a58fe0b238aac38d84b35ba16553e) in 0.003s. Peers: 40
May 10 20:08:35 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:35.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,315 / 0 tx / 0 om / 0 (0.0%) gas / (0x7976585940bc4e7edfee434d2a793638888035c8ad7bbadd8362787e184df6ed) in 0.003s. Peers: 40
May 10 20:08:37 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:37.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,316 / 0 tx / 0 om / 0 (0.0%) gas / (0x9689fc7ef463f1fcc789523264f09fff2138531ad3b67ffca451d914d61a7721) in 0.009s. Peers: 40
May 10 20:08:39 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:39.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,317 / 0 tx / 0 om / 0 (0.0%) gas / (0x11a5ba96b9f99699b944326450ed367048dd99a0e939adf16027ab38cd91c2db) in 0.001s. Peers: 40
May 10 20:08:41 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:41.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,318 / 0 tx / 0 om / 0 (0.0%) gas / (0x68d4479715cd4bdfcb34871b5f763b89d7cf3dcddb6b80ad639137e5ffc4caa5) in 0.003s. Peers: 40
May 10 20:08:43 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:43.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,319 / 0 tx / 0 om / 0 (0.0%) gas / (0xfeaba9671447b66b6f0b4b88716a4cc9dde77e726c654e4119bda51486d839e4) in 0.001s. Peers: 40
May 10 20:08:45 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:45.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,320 / 0 tx / 0 om / 0 (0.0%) gas / (0xc8764a00f5a9e756ad63fc538f763782c5a6090bcaee01e509b2ebacc84d26f6) in 0.005s. Peers: 40
May 10 20:08:47 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:47.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,321 / 0 tx / 0 om / 0 (0.0%) gas / (0x564a59dd1f25de2dfcfe58aa892b7e8e0bed5916a042fa3f9c56b557d982f1d3) in 0.005s. Peers: 40
May 10 20:08:49 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:49.033+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,322 / 0 tx / 0 om / 0 (0.0%) gas / (0xea4bb1aff7c0be0fdd5fad6be2b362b8edaf207b810371ad94ac22a8b4ef97b0) in 0.004s. Peers: 40
May 10 20:08:51 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:51.024+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,323 / 0 tx / 0 om / 0 (0.0%) gas / (0x7bf1becee96d9f6c4d3cbadb6d25dd383e189cb181b2b5d37763c4d8db52db1f) in 0.006s. Peers: 40
May 10 20:08:53 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:53.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,324 / 0 tx / 0 om / 0 (0.0%) gas / (0xc5ec25641f4c396b319e1efe18494b4779a61300b9eaf5bad120bef5332097d8) in 0.001s. Peers: 40
May 10 20:08:55 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:55.030+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,325 / 0 tx / 0 om / 0 (0.0%) gas / (0x0335249ccbc498a3ab8cca4d1424f3ec2f34b4151aa64f63e21968e97a98d36c) in 0.007s. Peers: 40
May 10 20:08:57 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:57.031+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,326 / 0 tx / 0 om / 0 (0.0%) gas / (0x49cc6f5a406e88d66dca74c8b40dc84c87e613c8fab4840b5311a8822f3a8d93) in 0.003s. Peers: 40
May 10 20:08:59 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:08:59.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,327 / 0 tx / 0 om / 0 (0.0%) gas / (0x0829f4ca670a62c4bb5945fd0e63102ff3ff424666d2bb3282d624598d6912cf) in 0.004s. Peers: 40
May 10 20:09:01 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:09:01.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,328 / 0 tx / 0 om / 0 (0.0%) gas / (0x342f7292c3089ef7e491396bb6fc538ab4595326bcd4045226d9bf5c110fdb5f) in 0.004s. Peers: 40
May 10 20:09:03 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:09:03.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,329 / 0 tx / 0 om / 0 (0.0%) gas / (0x4f5a731793f00ab464bcd1996854c76223c9bfb3d70df2872dda3ddd2015de86) in 0.003s. Peers: 40
May 10 20:09:05 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:09:05.021+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,330 / 0 tx / 0 om / 0 (0.0%) gas / (0x510ff027c71458a02dd0b22a2661c2fbff33c7ab930b6bb6b84b790cf33ca66c) in 0.002s. Peers: 40
May 10 20:09:07 besu-rpc-hybx-2 besu[545]: 2026-05-10 20:09:07.032+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,331 / 0 tx / 0 om / 0 (0.0%) gas / (0xf88444f460fd2db69273e3dd265ab06b940b12abcd3ad440bfd4e1af68311dcd) in 0.002s. Peers: 40
--- VMID 2505 @ 192.168.11.11 (status: running) ---
Listening ports (ss -tlnp):
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 5 0.0.0.0:18545 0.0.0.0:* users:(("python3",pid=941,fd=3))
LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=325,fd=13))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=325,fd=14))
LISTEN 0 4096 *:30303 *:* users:(("java",pid=531,fd=360))
LISTEN 0 4096 *:22 *:* users:(("sshd",pid=169,fd=3),("systemd",pid=1,fd=62))
LISTEN 0 4096 *:9545 *:* users:(("java",pid=531,fd=357))
LISTEN 0 4096 *:8545 *:* users:(("java",pid=531,fd=358))
LISTEN 0 4096 *:8546 *:* users:(("java",pid=531,fd=359))
Besu service (systemctl list-units):
besu-rpc.service loaded activating auto-restart Hyperledger Besu RPC Node
besu.service loaded active running Hyperledger Besu
journalctl -u besu-rpc -n 25:
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: org.hyperledger.besu.util.InvalidConfigurationException: Port(s) '[30303, 8545, 8546, 9545]' already in use. Check for other processes using the port(s).
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at org.hyperledger.besu.cli.BesuCommand.checkIfRequiredPortsAreAvailable(BesuCommand.java:3317)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at org.hyperledger.besu.cli.BesuCommand.configure(BesuCommand.java:2074)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at org.hyperledger.besu.cli.BesuCommand.run(BesuCommand.java:1461)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine.executeUserObject(CommandLine.java:2026)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine.access$1500(CommandLine.java:148)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine.execute(CommandLine.java:2170)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at org.hyperledger.besu.cli.util.ConfigOptionSearchAndRunHandler.handle(ConfigOptionSearchAndRunHandler.java:62)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at org.hyperledger.besu.cli.util.ConfigOptionSearchAndRunHandler.handle(ConfigOptionSearchAndRunHandler.java:33)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at picocli.CommandLine.execute(CommandLine.java:2170)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at org.hyperledger.besu.cli.BesuCommand.parse(BesuCommand.java:1628)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at org.hyperledger.besu.cli.BesuCommand.parse(BesuCommand.java:1423)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: at org.hyperledger.besu.Besu.main(Besu.java:39)
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: Port(s) '[30303, 8545, 8546, 9545]' already in use. Check for other processes using the port(s).
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: To display full help:
May 10 20:09:13 besu-rpc-hybx-3 besu-rpc[9759]: besu [COMMAND] --help
May 10 20:09:13 besu-rpc-hybx-3 systemd[1]: besu-rpc.service: Deactivated successfully.
May 10 20:09:13 besu-rpc-hybx-3 systemd[1]: besu-rpc.service: Consumed 9.083s CPU time.
journalctl -u besu -n 25:
May 10 20:08:31 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:31.021+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,313 / 0 tx / 0 om / 0 (0.0%) gas / (0x0c3fbd2036fd5d87db5a84b06ae272d12196dfc0c437e5789868c8a1db874a26) in 0.001s. Peers: 40
May 10 20:08:33 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:33.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,314 / 0 tx / 0 om / 0 (0.0%) gas / (0xf3190d68f60a316816ac9a8f02296c4a447a58fe0b238aac38d84b35ba16553e) in 0.002s. Peers: 40
May 10 20:08:35 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:35.021+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,315 / 0 tx / 0 om / 0 (0.0%) gas / (0x7976585940bc4e7edfee434d2a793638888035c8ad7bbadd8362787e184df6ed) in 0.003s. Peers: 40
May 10 20:08:37 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:37.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,316 / 0 tx / 0 om / 0 (0.0%) gas / (0x9689fc7ef463f1fcc789523264f09fff2138531ad3b67ffca451d914d61a7721) in 0.005s. Peers: 40
May 10 20:08:39 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:39.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,317 / 0 tx / 0 om / 0 (0.0%) gas / (0x11a5ba96b9f99699b944326450ed367048dd99a0e939adf16027ab38cd91c2db) in 0.003s. Peers: 40
May 10 20:08:41 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:41.028+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,318 / 0 tx / 0 om / 0 (0.0%) gas / (0x68d4479715cd4bdfcb34871b5f763b89d7cf3dcddb6b80ad639137e5ffc4caa5) in 0.009s. Peers: 40
May 10 20:08:43 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:43.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,319 / 0 tx / 0 om / 0 (0.0%) gas / (0xfeaba9671447b66b6f0b4b88716a4cc9dde77e726c654e4119bda51486d839e4) in 0.002s. Peers: 40
May 10 20:08:45 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:45.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,320 / 0 tx / 0 om / 0 (0.0%) gas / (0xc8764a00f5a9e756ad63fc538f763782c5a6090bcaee01e509b2ebacc84d26f6) in 0.005s. Peers: 40
May 10 20:08:47 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:47.018+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,321 / 0 tx / 0 om / 0 (0.0%) gas / (0x564a59dd1f25de2dfcfe58aa892b7e8e0bed5916a042fa3f9c56b557d982f1d3) in 0.002s. Peers: 40
May 10 20:08:49 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:49.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,322 / 0 tx / 0 om / 0 (0.0%) gas / (0xea4bb1aff7c0be0fdd5fad6be2b362b8edaf207b810371ad94ac22a8b4ef97b0) in 0.006s. Peers: 40
May 10 20:08:51 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:51.018+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,323 / 0 tx / 0 om / 0 (0.0%) gas / (0x7bf1becee96d9f6c4d3cbadb6d25dd383e189cb181b2b5d37763c4d8db52db1f) in 0.003s. Peers: 40
May 10 20:08:53 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:53.023+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,324 / 0 tx / 0 om / 0 (0.0%) gas / (0xc5ec25641f4c396b319e1efe18494b4779a61300b9eaf5bad120bef5332097d8) in 0.002s. Peers: 40
May 10 20:08:55 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:55.020+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,325 / 0 tx / 0 om / 0 (0.0%) gas / (0x0335249ccbc498a3ab8cca4d1424f3ec2f34b4151aa64f63e21968e97a98d36c) in 0.001s. Peers: 40
May 10 20:08:57 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:57.047+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,326 / 0 tx / 0 om / 0 (0.0%) gas / (0x49cc6f5a406e88d66dca74c8b40dc84c87e613c8fab4840b5311a8822f3a8d93) in 0.002s. Peers: 40
May 10 20:08:59 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:08:59.025+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,327 / 0 tx / 0 om / 0 (0.0%) gas / (0x0829f4ca670a62c4bb5945fd0e63102ff3ff424666d2bb3282d624598d6912cf) in 0.006s. Peers: 40
May 10 20:09:01 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:01.027+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,328 / 0 tx / 0 om / 0 (0.0%) gas / (0x342f7292c3089ef7e491396bb6fc538ab4595326bcd4045226d9bf5c110fdb5f) in 0.008s. Peers: 40
May 10 20:09:03 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:03.019+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,329 / 0 tx / 0 om / 0 (0.0%) gas / (0x4f5a731793f00ab464bcd1996854c76223c9bfb3d70df2872dda3ddd2015de86) in 0.001s. Peers: 40
May 10 20:09:05 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:05.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,330 / 0 tx / 0 om / 0 (0.0%) gas / (0x510ff027c71458a02dd0b22a2661c2fbff33c7ab930b6bb6b84b790cf33ca66c) in 0.008s. Peers: 40
May 10 20:09:07 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:07.034+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,331 / 0 tx / 0 om / 0 (0.0%) gas / (0xf88444f460fd2db69273e3dd265ab06b940b12abcd3ad440bfd4e1af68311dcd) in 0.011s. Peers: 40
May 10 20:09:09 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:09.022+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,332 / 0 tx / 0 om / 0 (0.0%) gas / (0x78a049e5bfd7eb2d1b8aa7d056c6dccfdd4aed12ba22cecb5a4e1dc9c0ab0e71) in 0.004s. Peers: 40
May 10 20:09:11 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:11.036+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,333 / 0 tx / 0 om / 0 (0.0%) gas / (0xee5ce8bd9df13b9219f863f6890cb9cd175f0528bd85e8f1871cedc1a3db5629) in 0.019s. Peers: 40
May 10 20:09:13 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:13.018+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,334 / 0 tx / 0 om / 0 (0.0%) gas / (0x1b0a2f6ccdb8eb31ac1ed5334b418e567fd6a455b88b49be9585f99830e494e4) in 0.001s. Peers: 40
May 10 20:09:15 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:15.039+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,335 / 0 tx / 0 om / 0 (0.0%) gas / (0x5dfaa1f90dfde05da98750145fac9b20aa65ad11836cee7bc5f70af02fe232f1) in 0.011s. Peers: 40
May 10 20:09:17 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:17.026+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,336 / 0 tx / 0 om / 0 (0.0%) gas / (0x15abc63a4280bea8ee1d58a56e1fdcfbf7ef10764091185b840a901dcc68f724) in 0.001s. Peers: 40
May 10 20:09:19 besu-rpc-hybx-3 besu[531]: 2026-05-10 20:09:19.030+00:00 | EthScheduler-Workers-0 | INFO | PersistBlockTask | Imported #5,024,337 / 0 tx / 0 om / 0 (0.0%) gas / (0xa8fe82729501302fb1fd545ffe22367c4e22b170eb36efde15524fff003269f6) in 0.009s. Peers: 40
==============================================
If 8545 is not in ss -tlnp, Besu is not binding. Check journal for genesis/nodekey/config errors.
Then run: ./scripts/besu/fix-all-besu-nodes.sh (optionally --no-restart first)
==============================================

View File

@@ -248,7 +248,7 @@ The CCIP Monitor service (VMID 3501) listens to these events and tracks:
## 🔗 External Links
- **Blockscout (Chain 138)**: `https://explorer.d-bis.org/address/0x105F8A15b819948a89153505762444Ee9f324684`**Use this**
- **Blockscout (Chain 138)**: `https://explorer.d-bis.org/addresses/0x105F8A15b819948a89153505762444Ee9f324684`**Use this**
- **Chainlink CCIP Documentation**: https://docs.chain.link/ccip
- **Source Project**: `/home/intlc/projects/smom-dbis-138`
@@ -279,7 +279,7 @@ RPC_URL_138=http://192.168.11.211:8545
RPC_URL_138=https://rpc-core.d-bis.org
# Block Explorer
EXPLORER_URL=https://explorer.d-bis.org/address/0x105F8A15b819948a89153505762444Ee9f324684
EXPLORER_URL=https://explorer.d-bis.org/addresses/0x105F8A15b819948a89153505762444Ee9f324684
```
---

View File

@@ -13,7 +13,7 @@
- **Option 1 (extend existing bridge):** Would require changing CCIPWETH9Bridge / CCIPRelayBridge to accept more than WETH9 and mint cW* in `ccipReceive`. That mixes WETH and cW* in one contract and complicates upgrades.
- **Option 2 (dedicated receiver):** Use a contract that only handles cW* mint-on-receive and burn-on-send (e.g. **TwoWayTokenBridgeL2** or a minimal **CCIPReceiverCW**). Keeps WETH bridges unchanged; cW* flow is separate and easier to reason about.
**Concrete choice:** Use **TwoWayTokenBridgeL2** (or equivalent) per (chain, token) — one deployment per chain for cWUSDT and one for cWUSDC, or a generic receiver that supports multiple cW* via message data. **CompliantWrappedToken** is extended with **burnFrom** so TwoWayTokenBridgeL2s outbound `burnFrom` works (Phase C1).
**Concrete choice:** Use **CWMultiTokenBridgeL1** on Chain 138 and **CWMultiTokenBridgeL2** on each active public mesh chain. This is the preferred implementation because one receiver address can support the full cW* family through canonical-to-mirrored token-pair configuration. **TwoWayTokenBridgeL2** remains a narrow per-token fallback. **CompliantWrappedToken** is extended with **burnFrom** so outbound burn-and-send flows work.
---
@@ -21,27 +21,27 @@
1. **User on Chain 138** locks cUSDT (or cUSDC) in a sender contract (e.g. UniversalCCIPBridge, or a dedicated c*→cW* bridge on 138).
2. **Sender** sends a CCIP message to the **destination chain** with:
- **Receiver:** Dedicated cW* receiver (e.g. TwoWayTokenBridgeL2 instance for cWUSDT on that chain).
- **Data:** `abi.encode(recipient, amount)` (same as TwoWayTokenBridgeL2).
- **Receiver:** Dedicated cW* receiver, preferably CWMultiTokenBridgeL2 on that chain.
- **Data:** `abi.encode(canonicalToken, recipient, amount)`.
- **Token amounts:** Either none (lock-and-mint: 138 locks c*, destination mints cW*) or source token as specified by the bridge design.
3. **On destination chain,** the **cW* receiver**s `ccipReceive` is called by the CCIP router. It decodes `(recipient, amount)` and calls **cWUSDT.mint(recipient, amount)** (receiver must have MINTER_ROLE on the cW* token).
3. **On destination chain,** the **cW* receiver**s `ccipReceive` is called by the CCIP router. It decodes `(canonicalToken, recipient, amount)`, resolves the configured mirrored cW* token, and mints that token to the recipient (receiver must have MINTER_ROLE on the cW* token).
4. **User on destination** receives cWUSDT.
**Contracts implementing receive:** Dedicated cW* receiver (e.g. TwoWayTokenBridgeL2 with `mirroredToken` = cWUSDT or cWUSDC). Not CCIPWETH9Bridge / CCIPRelayBridge (they remain WETH-only).
**Contracts implementing receive:** Dedicated cW* receiver, preferably CWMultiTokenBridgeL2 with canonical-to-mirrored token pairs configured. Not CCIPWETH9Bridge / CCIPRelayBridge (they remain WETH-only).
**Contracts implementing send (138 side):** UniversalCCIPBridge (if extended for c* and destination = cW* receiver), or a dedicated “Lock c* and send CCIP” contract that configures receiver = TwoWayTokenBridgeL2 on the target chain.
**Contracts implementing send (138 side):** CWMultiTokenBridgeL1, which locks supported canonical c* tokens on Chain 138 and sends CCIP messages to the configured CWMultiTokenBridgeL2 receiver on the target chain.
---
## 3. Flow chain → 138 (burn cW* on chain, release c* on 138)
1. **User on destination chain** calls the **cW* receiver**s outbound function (e.g. TwoWayTokenBridgeL2.**burnAndSend**(destSelector, recipient, amount)).
2. **Receiver** burns cW* from the user (`cWUSDT.burnFrom(user, amount)` — requires CompliantWrappedToken to implement **burnFrom**; see Phase C1) and sends a CCIP message to **Chain 138** with receiver = L1 bridge and data `(recipient, amount)`.
1. **User on destination chain** calls the **cW* receiver**s outbound function (CWMultiTokenBridgeL2.**burnAndSend**(mirroredToken, destSelector, recipient, amount)).
2. **Receiver** burns cW* from the user (`cW*.burnFrom(user, amount)`) and sends a CCIP message to **Chain 138** with receiver = L1 bridge and data `(canonicalToken, recipient, amount)`.
3. **On Chain 138,** the L1 bridge (or release contract) receives the message and releases cUSDT to the recipient (e.g. transfer from escrow or mint if L1 is mintable).
**Contracts implementing burn-and-send:** Same dedicated cW* receiver (TwoWayTokenBridgeL2) that has BURNER_ROLE on the cW* token and implements **burnAndSend**. CompliantWrappedToken must expose **burnFrom** for TwoWayTokenBridgeL2.
**Contracts implementing burn-and-send:** Same dedicated cW* receiver (CWMultiTokenBridgeL2) that has BURNER_ROLE on each configured cW* token and implements **burnAndSend**.
**Contracts implementing receive on 138:** L1 bridge or release contract that holds or mints c* and credits the recipient.
**Contracts implementing receive on 138:** CWMultiTokenBridgeL1, which verifies the configured peer and releases the locked canonical c* token to the recipient.
---
@@ -49,17 +49,19 @@
| Role | Contract(s) |
|------|-------------|
| **cW* token (destination chain)** | CompliantWrappedToken (cWUSDT, cWUSDC). MINTER_ROLE and BURNER_ROLE granted to the dedicated receiver (e.g. TwoWayTokenBridgeL2). |
| **Receive on destination (mint cW*)** | TwoWayTokenBridgeL2 (or CCIPReceiverCW). Constructor(router, cWUSDT, feeToken). Implements ccipReceive mint(recipient, amount). |
| **Send from destination (burn cW*, send CCIP)** | Same TwoWayTokenBridgeL2. burnAndSend burnFrom(user) ccipSend to 138. |
| **Send from 138 (lock c*, send CCIP)** | UniversalCCIPBridge (with c* and cW* receiver config) or dedicated lock-and-send contract. Receiver address = TwoWayTokenBridgeL2 on destination. |
| **Receive on 138 (release c*)** | L1 bridge or release contract (existing or new) that credits recipient when message received from destination chain. |
| **cW* token (destination chain)** | CompliantWrappedToken (cWUSDT, cWUSDC, and broader cW* family). MINTER_ROLE and BURNER_ROLE granted to CWMultiTokenBridgeL2. |
| **Receive on destination (mint cW*)** | CWMultiTokenBridgeL2. Constructor(sendRouter, receiveRouter, feeToken). Implements ccipReceive -> resolve mirrored token -> mint(recipient, amount). |
| **Send from destination (burn cW*, send CCIP)** | Same CWMultiTokenBridgeL2. burnAndSend(mirroredToken, ...) -> burnFrom(user) -> ccipSend to 138. |
| **Send from 138 (lock c*, send CCIP)** | CWMultiTokenBridgeL1. Receiver address = CWMultiTokenBridgeL2 on destination. |
| **Receive on 138 (release c*)** | CWMultiTokenBridgeL1 releases locked canonical c* after configured peer verification. |
---
## 5. References
- [TwoWayTokenBridgeL2.sol](../../smom-dbis-138/contracts/bridge/TwoWayTokenBridgeL2.sol) — Mint on receive, burnAndSend for outbound.
- [CWMultiTokenBridgeL1.sol](../../smom-dbis-138/contracts/bridge/CWMultiTokenBridgeL1.sol) — Chain 138 escrow, send, receive, and release side.
- [CWMultiTokenBridgeL2.sol](../../smom-dbis-138/contracts/bridge/CWMultiTokenBridgeL2.sol) — Public-chain mint, burn, and return side.
- [TwoWayTokenBridgeL2.sol](../../smom-dbis-138/contracts/bridge/TwoWayTokenBridgeL2.sol) — Per-token fallback receiver.
- [CompliantWrappedToken.sol](../../smom-dbis-138/contracts/tokens/CompliantWrappedToken.sol) — mint, burn, burnFrom (Phase C1).
- [CW_BRIDGE_TASK_LIST.md](../00-meta/CW_BRIDGE_TASK_LIST.md) — Full task list and phases.
- [CW_DEPLOY_AND_WIRE_RUNBOOK.md](CW_DEPLOY_AND_WIRE_RUNBOOK.md) — Operator steps to deploy cW*, wire config, verify.

View File

@@ -8,7 +8,7 @@
## Prerequisites
- `smom-dbis-138/.env` has `CW_BRIDGE_<CHAIN>` set (already done from deployed bridge suite for Mainnet, Cronos, BSC, Polygon, Gnosis, Avalanche, Base, Arbitrum, Optimism).
- For **cross-chain mint** to work, the bridge at that address must either be extended to mint cW* in `ccipReceive` or you must deploy a dedicated cW* receiver (e.g. TwoWayTokenBridgeL2) and point `CW_BRIDGE_<CHAIN>` to it; see [CW_BRIDGE_APPROACH.md](CW_BRIDGE_APPROACH.md).
- For **cross-chain mint** to work, the bridge at that address must either be extended to mint cW* in `ccipReceive` or you must deploy the dedicated cW* bridge path. The preferred path is **CWMultiTokenBridgeL1** on Chain 138 plus **CWMultiTokenBridgeL2** on each public mesh chain; see [CW_BRIDGE_APPROACH.md](CW_BRIDGE_APPROACH.md).
- RPC URL and `PRIVATE_KEY` for the target chain(s).
---
@@ -108,10 +108,14 @@ If using the existing CCIPRelayBridge for cW* on Mainnet, that contract is WETH-
### E2. Direct CCIP (138 → chain)
If Chain 138 uses UniversalCCIPBridge or a dedicated sender to send c* to a destination chain:
If Chain 138 uses the preferred CWMultiTokenBridgeL1 sender to send c* to a destination chain:
- Add destination config for the c* token with **receiver** = the cW* receiver on the destination (e.g. TwoWayTokenBridgeL2 address).
- Ensure the receiver on the destination has MINTER_ROLE on the cW* token and implements `ccipReceive``cW*.mint(recipient, amount)` (see [CW_BRIDGE_APPROACH.md](CW_BRIDGE_APPROACH.md)).
- Deploy CWMultiTokenBridgeL1 on Chain 138 with the Chain 138 send/receive routers and fee token.
- Deploy CWMultiTokenBridgeL2 on each active public mesh chain with that chain's send/receive routers and fee token.
- Configure each canonical c* token on L1 with destination selector -> CWMultiTokenBridgeL2 receiver.
- Configure each L2 canonical-to-mirrored token pair and L2 destination selector -> CWMultiTokenBridgeL1 receiver.
- Ensure the receiver on the destination has MINTER_ROLE and BURNER_ROLE on each configured cW* token.
- Freeze configured token pairs/destinations only after the canary route passes.
### E3. Test E2E
@@ -130,7 +134,7 @@ If Chain 138 uses UniversalCCIPBridge or a dedicated sender to send c* to a dest
| 3 | Set `CWUSDT_<CHAIN>`, `CWUSDC_<CHAIN>` in .env (D2). |
| 4 | Update `config/token-mapping-multichain.json` `addressTo` for _cW entries (D3). |
| 5 | Verify MINTER_ROLE and BURNER_ROLE on cW* for the bridge (D4). |
| 6 | If cross-chain mint is required, ensure the bridge/receiver code mints cW* in ccipReceive (Phase B or C); then wire relay/direct CCIP (E1, E2) and run E2E test (E3). |
| 6 | If cross-chain mint is required, deploy/configure CWMultiTokenBridgeL1/L2; then wire relay/direct CCIP (E1, E2) and run E2E test (E3). |
---
@@ -211,5 +215,9 @@ Then run `./scripts/deployment/run-cw-remaining-steps.sh --update-mapping`.
- [CW_BRIDGE_TASK_LIST.md](../00-meta/CW_BRIDGE_TASK_LIST.md)
- [CW_BRIDGE_APPROACH.md](CW_BRIDGE_APPROACH.md)
- [CW_MULTITOKEN_BRIDGE_BLOCKER_REMEDIATION.md](CW_MULTITOKEN_BRIDGE_BLOCKER_REMEDIATION.md)
- [CW_TOKENS_AND_NETWORKS.md](../11-references/CW_TOKENS_AND_NETWORKS.md)
- [C_TO_CW_MAPPER_MAPPING.md](../04-configuration/C_TO_CW_MAPPER_MAPPING.md)
- `pnpm cw:full-readiness` — read-only readiness report for source-of-truth, indexing, bridge, and external tracker gates.
- `pnpm cw:bridge-e2e-readiness` — read-only CWMultiToken L1/L2 route and role evidence.
- `pnpm cwusdc:external-trackers` — read-only cWUSDC external tracker/indexing evidence.

View File

@@ -0,0 +1,62 @@
# CW MultiToken Bridge Blocker Remediation
Generated: `2026-05-09`
## Current Evidence
Run:
```bash
pnpm cw:bridge-e2e-readiness
pnpm cw:full-readiness
```
Evidence files:
- `reports/status/cw-multitoken-bridge-e2e-latest.json`
- `reports/status/cw-multitoken-bridge-e2e-latest.md`
- `reports/status/cw-full-operational-readiness-latest.json`
- `reports/status/cw-full-operational-readiness-latest.md`
Current bridge state from the latest evidence:
| Area | Status |
|---|---|
| Chain 138 CWMultiTokenBridgeL1 | Pass |
| Ethereum Mainnet CWMultiTokenBridgeL2 | Pass |
| Avalanche CWMultiTokenBridgeL2 | Pass |
| Optimism | Blocked: receiver lacks CWMultiToken canonical-to-mirrored mappings |
| Cronos | Blocked: receiver lacks CWMultiToken canonical-to-mirrored mappings |
| BSC | Blocked: receiver lacks CWMultiToken canonical-to-mirrored mappings |
| Gnosis | Blocked: receiver lacks CWMultiToken canonical-to-mirrored mappings |
| Polygon | Blocked: receiver lacks CWMultiToken canonical-to-mirrored mappings |
| Base | Blocked: receiver lacks CWMultiToken canonical-to-mirrored mappings |
| Arbitrum | Blocked: receiver lacks CWMultiToken canonical-to-mirrored mappings |
| Celo | Blocked: receiver lacks CWMultiToken canonical-to-mirrored mappings |
## Required Fix
For each failed chain:
1. Deploy `CWMultiTokenBridgeL2` with that chain's send router, receive router, and fee token.
2. Update `CW_BRIDGE_<CHAIN>` to the new CWMultiTokenBridgeL2 address.
3. Configure `canonicalToMirrored` pairs for at least `cUSDT -> cWUSDT` and `cUSDC -> cWUSDC`; use `--full-family` once all wrapped family routes are intended to be production-live.
4. Configure destination `138 -> CWMultiTokenBridgeL1`.
5. Grant `MINTER_ROLE` and `BURNER_ROLE` on each cW token to the new L2 bridge.
6. Re-run:
```bash
pnpm cw:bridge-e2e-readiness
pnpm cw:full-readiness
```
## Existing Helpers
- `smom-dbis-138/script/DeployCWMultiTokenBridgeL2.s.sol`
- `smom-dbis-138/scripts/deployment/cw-l1-bootstrap-gru-v2-ccip-routes.sh`
- `smom-dbis-138/scripts/deployment/configure-cw-public-bridge-mesh.sh`
- `scripts/deployment/run-cw-remaining-steps.sh --verify`
## Safety Note
Do not point `CW_BRIDGE_<CHAIN>` at a WETH-only bridge and claim cW mint/burn support. WETH-oriented receivers can hold roles, but they do not prove c* -> cW* -> c* bridge semantics.

View File

@@ -188,8 +188,8 @@ Or manually:
### 2. Verify Individual Contracts
Navigate to contract on Blockscout:
- Oracle Proxy: https://explorer.d-bis.org/address/0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6
- CCIP Router: https://explorer.d-bis.org/address/0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817
- Oracle Proxy: https://explorer.d-bis.org/addresses/0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6
- CCIP Router: https://explorer.d-bis.org/addresses/0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817
### 3. Check Verification Status

View File

@@ -206,7 +206,7 @@ Or run the batch script with the proxy pointing at the public explorer URL (from
**Solution**:
- The contract is already verified on Blockscout
- Check the contract on the explorer: `https://explorer.d-bis.org/address/<CONTRACT_ADDRESS>`
- Check the contract on the explorer: `https://explorer.d-bis.org/addresses/<CONTRACT_ADDRESS>`
### Issue: Blockscout API Timeout
@@ -232,7 +232,7 @@ Or run the batch script with the proxy pointing at the public explorer URL (from
If automated verification fails, you can verify contracts manually through the Blockscout web interface:
1. Navigate to the contract address: `https://explorer.d-bis.org/address/<CONTRACT_ADDRESS>`
1. Navigate to the contract address: `https://explorer.d-bis.org/addresses/<CONTRACT_ADDRESS>`
2. Click on **"Verify & Publish"** tab
3. Select verification method:
- **Via Standard JSON Input** (recommended)

View File

@@ -1,6 +1,6 @@
# Proxmox VE Complete Recommendations and Review
**Last Updated:** 2026-01-31
**Last Updated:** 2026-05-09
**Document Version:** 1.0
**Status:** Active Documentation
@@ -20,7 +20,7 @@ All pre-start tasks have been completed successfully:
- ✅ Storage enabled and configured
- ✅ All Proxmox services operational
**Status:** Ready to start VMs on all hosts.
**Status:** Cluster operational (**136** guests on **r630-01****r630-04**, **ml110** idle — **2026-05-09**). See [PROXMOX_CLUSTER_ARCHITECTURE.md](../02-architecture/PROXMOX_CLUSTER_ARCHITECTURE.md).
---
@@ -41,16 +41,17 @@ All pre-start tasks have been completed successfully:
### 2. IP Address Audit ✅ COMPLETE
**Results:**
- **Total VMs/Containers:** 34 with static IPs
- **IP Conflicts:** 0 ✅
**Results (historical IP audit — counts superseded):**
- **Cluster guests (2026-05-09):** **136** running LXC/QEMU; **ml110** **0**; see [PROXMOX_CLUSTER_ARCHITECTURE.md](PROXMOX_CLUSTER_ARCHITECTURE.md).
- **IP Conflicts:** 0 ✅ (re-verify when adding CTs)
- **Invalid IPs:** 0 ✅
- **DHCP IPs:** 2 (VMIDs 3500, 3501)
**All VMs Currently On:** ml110 (192.168.11.10)
**All VMs Currently On (obsolete summary):**
**IP Allocation:**
- 192.168.11.57, .60-.64, .80, .100-.106, .112, .120, .130, .150-.156, .201-.204, .240-.242, .250-.254
Guest placement is distributed across **r630-01****r630-04****not** consolidated on ml110. Use live inventory scripts.
**Historical IP listing (representative ranges):** 192.168.11.57, .60-.64, .80, .100-.106, .112, .120, .130, .150-.156, .201-.204, .240-.242, .250-.254
### 3. Storage Configuration ✅ COMPLETE
@@ -83,58 +84,46 @@ All pre-start tasks have been completed successfully:
| Property | Value | Status |
|----------|-------|--------|
| **Hostname** | ml110 | ✅ Correct |
| **Proxmox Version** | 9.1.0 | ✅ Current |
| **Proxmox Version** | **9.1.7** (kernel **6.17.13-2-pve**) | ✅ Current |
| **CPU** | 6 cores @ 1.60GHz | ⚠️ Older/slower |
| **Memory** | 125GB (75% used) | ⚠️ High usage |
| **Storage** | 907GB (26% used) | ✅ Good |
| **VMs** | 34 containers | ⚠️ Overloaded |
| **Memory** | ~63 GiB reported (`maxmem`); ~3.5% used | ✅ Low scheduling load |
| **Cluster guests** | **0** LXC/QEMU (**2026-05-09**) | ✅ Idle compute |
**Recommendations:**
- Consider migrating some VMs to r630-01/r630-02
- Monitor memory usage closely
- CPU is slower - better suited for lightweight workloads
**Recommendations:** Prefer **r630-*** nodes for new workloads; keep ml110 as quorum / lightweight only unless expanded.
### r630-01 (192.168.11.11)
| Property | Value | Status |
|----------|-------|--------|
| **Hostname** | r630-01 | ✅ Migrated |
| **Proxmox Version** | 9.1.0 | ✅ Current |
| **Proxmox Version** | **9.1.7** | ✅ Current |
| **CPU** | 32 cores @ 2.40GHz | ✅ Good |
| **Memory** | 503GB (1% used) | ✅ Excellent |
| **Storage** | 736GB available | ✅ Ready |
| **VMs** | 0 containers | ✅ Ready |
| **Memory** | ~125 GiB reported; **~66%** used | ⚠️ Monitor |
| **Cluster guests** | **57** | Primary density |
**Recommendations:**
- Ready for VM deployment
- Excellent resources available
- Can handle many VMs
**Recommendations:** Watch **thin1** / **data** pool utilization before large new disks.
### r630-02 (192.168.11.12)
| Property | Value | Status |
|----------|-------|--------|
| **Hostname** | r630-02 | ✅ Migrated |
| **Proxmox Version** | 9.1.0 | ✅ Current |
| **Proxmox Version** | **9.1.7** | ✅ Current |
| **CPU** | 56 cores @ 2.00GHz | ✅ Excellent |
| **Memory** | 251GB (2% used) | ✅ Excellent |
| **Storage** | 1.3TB+ available | ✅ Ready |
| **VMs** | Has VMs on thin4 | ⚠️ Need verification |
| **Memory** | ~125 GiB reported; **~62%** used | ⚠️ Monitor |
| **Cluster guests** | **41** | Infra / workloads |
**Recommendations:**
- Best CPU performance (56 cores)
- Has VMs on storage (need to verify)
- Ready for additional VMs
**Recommendations:** Strong CPU headroom; verify thin pool **%** on **`thin1-r630-02``thin6`** when provisioning.
---
## 🎯 Critical Recommendations
### 1. Verify Existing VMs on r630-02 ⚠️ HIGH PRIORITY
**Inventory note (2026-05-09):** Guests are **distributed** across the cluster; VMIDs listed below were **examples** from an older audit — confirm with [`ALL_VMIDS_ENDPOINTS.md`](../04-configuration/ALL_VMIDS_ENDPOINTS.md) / [`check-cluster-besu-inventory.sh`](../../scripts/verify/check-cluster-besu-inventory.sh).
**Issue:** Storage shows VMs exist (VMIDs: 100, 101, 102, 103, 104, 105, 130, 5000, 6200, 7800)
### 1. Verify workloads on r630-02 (periodic)
**Action Required:**
**Reference VMIDs (infra — verify live):** 100, 101, 102, 103, 104, 105, 130, 5000, 6200, 7800…
```bash
ssh root@192.168.11.12
pct list
@@ -211,7 +200,7 @@ pvecm nodes
### Performance Recommendations
#### Workload Distribution
**Current:** All 34 VMs on ml110 (overloaded)
**Current (2026-05-09):** **136** running guests cluster-wide; **ml110** **0**; see [PROXMOX_CLUSTER_ARCHITECTURE.md](../02-architecture/PROXMOX_CLUSTER_ARCHITECTURE.md).
**Recommended Distribution:**
- **ml110:** Keep 10-15 lightweight/management VMs
@@ -336,9 +325,13 @@ pvesh get /nodes/<node>/status
| Host | CPU Cores | Memory | Storage Available | VMs | Status |
|------|-----------|--------|-------------------|-----|--------|
| ml110 | 6 (slow) | 125GB (75% used) | 907GB | 34 | ⚠️ Overloaded |
| r630-01 | 32 | 503GB (1% used) | 736GB | 0 | ✅ Ready |
| r630-02 | 56 | 251GB (2% used) | 1.3TB+ | Has VMs | ✅ Ready |
| Host | CPU | Memory | Storage (summary) | Guests (2026-05-09) | Status |
|------|-----|--------|-------------------|----------------------|--------|
| ml110 | 6 (slow) | ~63 GiB reported (~3% used) | thin pools near empty | **0** | Quorum / light use |
| r630-01 | 32 | ~125 GiB (~66% used) | thin1/data — check % | **57** | Primary load |
| r630-02 | 56 | ~125 GiB (~62% used) | thin1-r630-02…6 | **41** | Heavy / infra |
| r630-03 | 32 | ~125 GiB (~62% used) | data + thin*-r630-03 | **19** | Expansion |
| r630-04 | 32 | ~125 GiB (~17% used) | data + mev-local-lvm | **19** | Capacity |
| **Total** | **94** | **879GB** | **~2.4TB** | **34+** | ✅ **Ready** |
---

View File

@@ -1,11 +1,13 @@
# Proxmox VE Final Recommendations and Summary
**Last Updated:** 2026-01-31
**Last Updated:** 2026-05-09
**Document Version:** 1.0
**Status:** Active Documentation
---
**Live cluster (2026-05-09):** [PROXMOX_CLUSTER_ARCHITECTURE.md](../02-architecture/PROXMOX_CLUSTER_ARCHITECTURE.md) — PVE **9.1.7**, **136** running guests, **ml110 0**; r630-01 **57**, r630-02 **41**, r630-03/04 **19** each. The sections below retain **historical** migration and audit notes; do not use them as the current placement source of truth.
**Date:** 2025-01-20
**Status:** Complete Review with Actionable Recommendations
@@ -20,10 +22,8 @@
- /etc/hosts updated on both hosts
### 2. IP Address Audit - COMPLETE ✅
- **Total VMs/Containers:** 34 with static IPs (all on ml110)
- **IP Conflicts:** 0 ✅
- **Invalid IPs:** 0 ✅
- **All IPs documented and verified**
- **Cluster (2026-05-09):** **136** running LXC/QEMU; static IP inventory: [ALL_VMIDS_ENDPOINTS.md](../04-configuration/ALL_VMIDS_ENDPOINTS.md)
- **IP Conflicts:** 0 ✅ (re-verify when adding CTs)
### 3. Proxmox Configuration Review - COMPLETE ✅
- All hosts reviewed
@@ -58,35 +58,25 @@ sed -i 's/nodes pve2 /nodes r630-02 /' /etc/pve/storage.cfg
## 📊 Host Configuration Summary
### ml110 (192.168.11.10)
- **Status:** ✅ Operational
- **CPU:** 6 cores (older, slower)
- **Memory:** 125GB (75% used - high)
- **Storage:** local (94GB) + local-lvm (813GB, 26% used)
- **VMs:** 34 containers (all current VMs)
- **Recommendation:** Consider migrating some VMs to r630-01/r630-02
- **Status:** ✅ Operational (cluster member)
- **CPU:** 6 cores
- **Memory:** ~63 GiB reported; ~3.5% used
- **Guests:** **0** (2026-05-09)
- **Recommendation:** Use **r630-*** for new workloads unless intentionally placing on ml110.
### r630-01 (192.168.11.11) - Previously "pve"
- **Status:** ✅ Operational
- **CPU:** 32 cores @ 2.40GHz (good performance)
- **Memory:** 503GB (1% used - excellent)
- **Storage:**
- local: 536GB (0% used)
- local-lvm: Exists but needs activation
- thin1: 208GB thin pool exists
- **VMs:** 0 containers
- **Recommendation:** Enable storage, ready for VM deployment
- **CPU:** 32 cores @ 2.40GHz
- **Memory:** ~125 GiB reported; **~66%** used
- **Guests:** **57**
- **Recommendation:** Monitor **thin1**/**data** utilization before large disks.
### r630-02 (192.168.11.12) - Previously "pve2"
- **Status:** ✅ Operational
- **CPU:** 56 cores @ 2.00GHz (excellent performance)
- **Memory:** 251GB (2% used - excellent)
- **Storage:**
- local: 220GB (0% used)
- thin1-thin6: 6 volume groups (~230GB each)
- **VMs Found:** VMIDs 100, 101, 102, 103, 104, 105, 130, 5000, 6200 on thin1
- **VMs Found:** VMID 7800 on thin4
- **VMs:** Has VMs on storage (need verification)
- **Recommendation:** Verify VMs are accessible, enable storage
- **CPU:** 56 cores @ 2.00GHz
- **Memory:** ~125 GiB reported; **~62%** used
- **Guests:** **41** (includes infra CTs such as NPMplus — see inventory docs)
- **Recommendation:** Watch **thin1-r630-02****thin6** pool **%**.
---
@@ -365,36 +355,36 @@ qm list
## 📊 Resource Summary
| Host | CPU | Memory | Storage | VMs | Status |
|------|-----|--------|---------|-----|--------|
| ml110 | 6 cores (slow) | 125GB (75% used) | 907GB (26% used) | 34 | ⚠️ Overloaded |
| r630-01 | 32 cores | 503GB (1% used) | 536GB (0% used) | 0 | ✅ Ready |
| r630-02 | 56 cores | 251GB (2% used) | 1.4TB (thin pools) | Has VMs | ✅ Ready |
| Host | CPU | Memory (reported) | Guests (2026-05-09) | Notes |
|------|-----|-------------------|---------------------|-------|
| ml110 | 6 | ~63 GiB · ~3% used | **0** | Quorum / idle |
| r630-01 | 32 | ~125 GiB · ~66% used | **57** | Highest count |
| r630-02 | 56 | ~125 GiB · ~62% used | **41** | Thin pools active |
| r630-03 | 32 | ~125 GiB · ~62% used | **19** | |
| r630-04 | 32 | ~125 GiB · ~17% used | **19** | |
**Total Resources:**
- **CPU:** 94 cores total
- **Memory:** 879GB total
- **Storage:** ~2.8TB total
- **VMs:** 34+ (need to verify r630-02)
**Totals:** **158** logical cores in cluster; **~562 GiB** reported `maxmem` sum (API); **136** running guests. Storage is **node-local thin** — see `pvesm status` per host.
---
## 🎯 Priority Actions
### 🔴 CRITICAL (Do Before Starting VMs)
1. Enable storage on r630-01
2. Enable storage on r630-02
3. Verify existing VMs on r630-02
### Historical (migration era)
The checklist below applied when **r630** storage names and hostname references were being repaired. For **current** capacity actions, use [PROXMOX_CLUSTER_ARCHITECTURE.md](../02-architecture/PROXMOX_CLUSTER_ARCHITECTURE.md) and live `pvesm status`.
### 🔴 CRITICAL (historical)
1. ~~Enable storage on r630-01~~ — validate pools if UI shows **disabled** stubs
2. ~~Enable storage on r630-02~~**thin** pools are active on **r630-02** (verify utilization)
### ⚠️ HIGH PRIORITY
1. Update cluster configuration
2. Verify all VMs are accessible
3. Test storage performance
1. Continue distributing new CTs across **r630-01****r630-04** using thin pool headroom
2. Reconcile any **disabled** storage rows that reference foreign node names (cosmetic in `pvesm`)
### 📋 RECOMMENDED
1. Distribute VMs across hosts
2. Implement monitoring
3. Plan VLAN migration
1. Monitor **thin pool %** on busy nodes (**r630-01**, **r630-02**)
2. Implement / maintain Prometheus/Grafana per operational stack
3. Keep [ALL_VMIDS_ENDPOINTS.md](../04-configuration/ALL_VMIDS_ENDPOINTS.md) updated when adding VMIDs
---

View File

@@ -38,6 +38,9 @@ The Transaction Router + Policy Engine maps chain labels to IDs:
| ALL_MAINNET | 651940 |
| HUB_EVM | 1 |
| TEZOS | 1729 |
| SOLANA | non-EVM (planned hops) |
| TRON | non-EVM (planned hops) |
| XRPL | non-EVM (planned hops) |
## Contract References
@@ -46,8 +49,18 @@ The Transaction Router + Policy Engine maps chain labels to IDs:
## API Endpoints
- **POST /v1/routes/chain138-to-usdtz** (multi-chain-execution): Accepts `source_chain_id=651940`
- **POST /api/v1/routes/chain138-to-usdtz** (dbis_core): Same
Structural route plans (multi-hop through Ethereum hub) are implemented in **multi-chain-execution** and mirrored in **dbis_core** under `/api/v1/routes`.
| Method | Path | Service | Purpose |
|--------|------|---------|---------|
| POST | `/v1/routes/chain138-to-usdtz` | multi-chain-execution | Tezos USDtz path; `source_chain_id` **138** or **651940** |
| GET | `/v1/routes/non-evm-families` | multi-chain-execution | Lists `tezos_usdtz`, `solana_usdc`, `tron_usdt`, `xrpl_usdc` metadata |
| POST | `/v1/routes/plan-non-evm` | multi-chain-execution | Non-EVM multi-hop plan + `quote_hints`; body `destination_family` + `destination_address` |
| POST | `/api/v1/routes/chain138-to-usdtz` | dbis_core | Same as above with optional `async_quotes` (CCIP / Plenty enrichment) |
| GET | `/api/v1/routes/non-evm-families` | dbis_core | Same listing as multi-chain-execution |
| POST | `/api/v1/routes/plan-non-evm` | dbis_core | Same planner + protocol **allowlist**; `async_quotes` supported for `tezos_usdtz` only |
Canonical planner source: `multi-chain-execution/src/lib/non-evm-route-planner.ts` — keep `dbis_core/src/core/defi/tezos-usdtz/non-evm-route-planner.ts` in sync when editing hops.
## Related Docs

View File

@@ -1,6 +1,6 @@
# Chains & Protocols: Bridges, Ledger, and Integrations
**Last Updated:** 2026-01-29
**Last Updated:** 2026-05-09
**Status:** Authoritative reference for bridge chains and protocol acceptance
---
@@ -92,6 +92,16 @@ To move Gnosis (100), Celo (42220), and Wemix (1111) from **Config ready** to **
---
### 1.5 Cosmos ecosystem (optional — IBC / Noble / Osmosis / CosmWasm)
**Status:** Not a live default bridge in this matrix. Chain 138 is EVM; Cosmos connectivity is **optional** and requires explicit bridges, registry rows, and ops.
**Canonical runbook (streams AE, checklists, completion criteria):** [COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md](COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md) — templates: [`config/cosmos-chain138-optional/README.md`](../../config/cosmos-chain138-optional/README.md) — **gaps audit:** [COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md](COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md)
**On-chain design hook:** `ChainRegistry` supports `ChainType.Cosmos`. Historical stub: `smom-dbis-138/archive/solidity/contracts/bridge/adapters/non-evm/CosmosAdapter.sol` (not production IBC).
---
## Part 2: Protocols That Have Accepted ChainID 138
### 2.1 Ledger App-Ethereum
@@ -222,6 +232,7 @@ Ledger Live and other clients can discover ChainID 138 RPCs via Chainlist.
| **CCIP** | ✅ Custom implementation | ❌ |
| **Li.Fi** | ❌ | ❌ |
| **Bridge Vault** | — | — |
| **Cosmos / IBC (optional)** | ⚠️ Not live by default | — |
---

View File

@@ -102,7 +102,7 @@ Contracts deployed after chain initialization:
| Role | Address | Explorer (Chain 138 only) |
|------|---------|---------------------------|
| **Deployer / Admin** | `0x4A666F96fC8764181194447A7dFdb7d471b301C8` | [explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8](https://explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8) |
| **Deployer / Admin** | `0x4A666F96fC8764181194447A7dFdb7d471b301C8` | [explorer.d-bis.org/addresses/0x4A666F96fC8764181194447A7dFdb7d471b301C8](https://explorer.d-bis.org/addresses/0x4A666F96fC8764181194447A7dFdb7d471b301C8) |
- **Chain 138:** use the link above. **Other chains (e.g. mainnet):** use [blockscan.com](https://blockscan.com/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8) to check balances on those chains. See [EXPLORER_AND_BLOCKSCAN_REFERENCE](EXPLORER_AND_BLOCKSCAN_REFERENCE.md).
@@ -167,7 +167,7 @@ Use these addresses in config and .env. **smom-dbis-138/.env** has been reconcil
| UNIVERSAL_CCIP_BRIDGE | `0xCd42e8eD79Dc50599535d1de48d3dAFa0BE156F8` |
| BRIDGE_ORCHESTRATOR | `0x89aB428c437f23bAB9781ff8Db8D3848e27EeD6c` |
**Multicall / Oracle Aggregator (operator to confirm):** Address `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` is documented as both. **Action:** Open [explorer](https://explorer.d-bis.org/address/0x99b3511a2d315a497c8112c1fdd8d508d4b1e506), confirm which contract is at this slot (Multicall vs Oracle Aggregator), and document the result here (e.g. "Verified: Multicall" or "Verified: Oracle Aggregator"). See [CONTRACT_NEXT_STEPS_LIST](CONTRACT_NEXT_STEPS_LIST.md) and [OPERATOR_ACTIONS](OPERATOR_ACTIONS.md).
**Multicall / Oracle Aggregator (operator to confirm):** Address `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` is documented as both. **Action:** Open [explorer](https://explorer.d-bis.org/addresses/0x99b3511a2d315a497c8112c1fdd8d508d4b1e506), confirm which contract is at this slot (Multicall vs Oracle Aggregator), and document the result here (e.g. "Verified: Multicall" or "Verified: Oracle Aggregator"). See [CONTRACT_NEXT_STEPS_LIST](CONTRACT_NEXT_STEPS_LIST.md) and [OPERATOR_ACTIONS](OPERATOR_ACTIONS.md).
**Reconcile .env:** ~~Copy the canonical block from `.env.example` into `.env`.~~ **Done 2026-02-11.** One entry per variable; matches this table.
@@ -192,7 +192,7 @@ Chain 138 WETH9 bridges (LINK fee and native ETH fee) have mainnet destination s
2. **Oracle Proxy** address is the primary address for MetaMask price feeds
3. **CCIP Router** is required for cross-chain communication
4. All addresses are on ChainID 138
5. **On-chain confirmation:** Verify each contract at https://explorer.d-bis.org/address/<ADDRESS> and use [BLOCKSCOUT_VERIFICATION_GUIDE](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md) for source verification.
5. **On-chain confirmation:** Verify each contract at https://explorer.d-bis.org/addresses/<ADDRESS> and use [BLOCKSCOUT_VERIFICATION_GUIDE](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md) for source verification.
6. **.env:** Reconciled to single source of truth (one entry per variable). When adding new contract vars, keep one entry and align with this table and `.env.example`.
---

View File

@@ -94,7 +94,7 @@ source smom-dbis-138/.env 2>/dev/null
./scripts/verify/run-contract-verification-with-proxy.sh
```
Manual verification: https://explorer.d-bis.org/address/<ADDRESS>#verify-contract
Manual verification: https://explorer.d-bis.org/addresses/<ADDRESS>#verify-contract
---
@@ -163,7 +163,7 @@ Manual verification: https://explorer.d-bis.org/address/<ADDRESS>#verify-contrac
| **Deploy all phases (138)** | `cd smom-dbis-138 && ./scripts/deployment/deploy-all-phases.sh` — Skips when env set; `--all` run every phase; `--phase N` one phase; `--dry-run` preview. |
| **Run all commands on Proxmox via SSH** | `./scripts/run-on-proxmox-via-ssh.sh` (optionally `--sync` to rsync repo first). Runs: on-chain check, deploy-all-phases, phoenix-deploy-api install, Blockscout verification. Set PROXMOX_HOST, PROXMOX_REPO_PATH if needed. |
| Single contract bytecode check | `cast code <ADDRESS> --rpc-url https://rpc-core.d-bis.org` |
| Explorer link | https://explorer.d-bis.org/address/<ADDRESS> |
| Explorer link | https://explorer.d-bis.org/addresses/<ADDRESS> |
---

View File

@@ -48,7 +48,7 @@
**Last run summary:** [OPERATOR_RUN_SUMMARY](OPERATOR_RUN_SUMMARY.md) (2026-02-11). From a host without LAN/VPN: on-chain check and Blockscout were run but RPC/Blockscout unreachable; .env verified reconciled; Multicall/Oracle not confirmed (explorer timeout).
- [x] **On-chain check:** Run `./scripts/verify/check-contracts-on-chain-138.sh`**Done 2026-02-11** (26/26 OK). Re-run when new contracts are deployed.
- [ ] **Blockscout verification:** From host that can reach Blockscout: `source smom-dbis-138/.env 2>/dev/null; ./scripts/verify/run-contract-verification-with-proxy.sh`. Or verify each contract at https://explorer.d-bis.org/address/<ADDRESS>#verify-contract.
- [ ] **Blockscout verification:** From host that can reach Blockscout: `source smom-dbis-138/.env 2>/dev/null; ./scripts/verify/run-contract-verification-with-proxy.sh`. Or verify each contract at https://explorer.d-bis.org/addresses/<ADDRESS>#verify-contract.
- [x] **Reconcile .env:** Verified 2026-02-11: `smom-dbis-138/.env` has one entry per variable and matches [CONTRACT_ADDRESSES_REFERENCE § Canonical](CONTRACT_ADDRESSES_REFERENCE.md#-canonical-source-of-truth-chain-138). No change needed.
- [x] **Multicall vs Oracle at 0x99b3...:** **Done 2026-02-11.** Confirmed via RPC (`latestRoundData()` returns data, `getBlockNumber()` reverts): **Oracle Aggregator**. Documented in [CONTRACT_ADDRESSES_REFERENCE](CONTRACT_ADDRESSES_REFERENCE.md).

View File

@@ -0,0 +1,90 @@
# Cosmos ↔ Chain 138 — Gaps and Inconsistencies (full inventory)
**Last Updated:** 2026-05-09
**Companion:** [COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md](COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md), [`config/cosmos-chain138-optional/STATUS.md`](../../config/cosmos-chain138-optional/STATUS.md)
**Purpose:** Single list of **missing implementation**, **documentation conflicts**, and **operator/config drift** relevant to the optional Cosmos program and adjacent Chain 138 surfaces. Use this for remediation planning; do not treat archive paths as live authority.
---
## 1. Cosmos program — implementation gaps
| ID | Gap | Impact |
|----|-----|--------|
| C-01 | **No production IBC path** on Chain 138 (EVM only). No Noble, Axelar, Wormhole, or native light-client consumer contracts in the active `smom-dbis-138/contracts/` compile graph for Cosmos. | Streams AD cannot go “live” without new contracts + vendor stack. |
| C-02 | **`CosmosAdapter` is archived** (`smom-dbis-138/archive/solidity/.../CosmosAdapter.sol`), not deployed as production IBC; oracle-lock pattern only. | Any doc implying “Cosmos adapter shipped” is wrong unless scoped to archive/history. |
| C-03 | **No `forge` / bash deploy script** in repo for registering a Cosmos chain in `ChainRegistry` or deploying a revived Cosmos adapter. | Operators have no copy-paste deploy for stream A4. |
| C-04 | **No CI gate** for `config/cosmos-chain138-optional/*` (optional JSON/YAML schema validation). | Typos in future real configs may slip until manual review. |
| C-05 | **Route planner / `dbis_core`** has no checked-in Cosmos leg (Osmosis quotes, IBC denom parser) wired to the runbooks stream B/C. | Stream B2B4 are spec-only. |
| C-06 | **`NON_EVM_NETWORK_HEALTH_AND_LANE_STATUS`** covers Solana / Tron / XRPL only — not Cosmos Hub, Noble, or Osmosis RPC health. | Stream E3 observability gap for Cosmos legs. |
| C-07 | **Token lists / token-aggregation** have no ICS-20 denom schema or allowlist file consumed in CI (only human templates under `config/cosmos-chain138-optional/`). | Stream C governance is out-of-band. |
| C-08 | **No Keplr / Leap / Snap integration** in this monorepo for Cosmos UX. | Stream E2 remains documentation-only. |
| C-09 | **Hyperledger Phase 4** (Cacti/Fabric/Indy) still partially open per `MULTI_CHAIN_DEPLOYMENT_GUIDE.md`; CosmWasm stream D4 depends on an explicit decision. | D4 may be N/A or blocked on unrelated work. |
---
## 2. Cosmos program — documentation and naming inconsistencies
| ID | Inconsistency | Resolution hint |
|----|----------------|-----------------|
| D-01 | **Archive** `COMPLETE_MULTI_CHAIN_DEPLOYMENT.md` marks **CosmosAdapter** as “Complete” while **current** `MULTI_CHAIN_DEPLOYMENT_GUIDE.md` leaves Cosmos as unchecked Phase 3 and points to the optional runbook. | Treat archive as historical; add banner in archive file or link to runbook (optional cleanup). |
| D-02 | Runbook **§7 E6** says “adopted subset of **AD**” for closure; streams are now **AE** (E is closure). | Wording: “product streams AD + stream E closure” to avoid implying E is optional when anything is live. |
| D-03 | `config/cosmos-chain138-optional/cross-cutting.example.md` table still says “Streams adopted (subset of **AD**)”. | Align to AD product + E closure. |
| D-04 | **`.cursor/rules/project-doc-and-deployment-refs.mdc`** description line still says deployment phases **AD** only (Cosmos is optional, not a phase letter). | Cosmetic; optional edit to “AD + optional Cosmos runbook”. |
| D-05 | **GALATIC_SUMMARY** §1.2 table still lists **DODOPMMIntegration** at `0x5BDc62f1…` while workspace canonical token/PMM rule and on-chain probe narrative use **live traded** `0x86ADA6Ef…` (parallel stack `0x5BDc62f1…` documented as seeded / different role). | **Critical:** Reconcile `GALATIC_SUMMARY`, `POOL_ACCESS_DASHBOARD_API_MCP`, token-aggregation env examples, and `CONTRACT_ADDRESSES_REFERENCE` with [EXPLORER_TOKEN_LIST_CROSSCHECK.md](EXPLORER_TOKEN_LIST_CROSSCHECK.md) section 8 and [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md). |
---
## 3. Chain 138 global gaps (affects operator trust, not only Cosmos)
| ID | Issue | Evidence / notes |
|----|--------|------------------|
| G-01 | **`config/smart-contracts-master.json`** is referenced as the master JSON in `CONTRACT_ADDRESSES_REFERENCE.md` and `load-project-env.sh`, but the file is **often absent** from checkout (see `reports/inventory/deployed-contracts-by-network.md`). | Single-source-of-truth claim in docs is weaker than reality; `.env` drives most scripts. |
| G-02 | **`CCIP_SENDER` address drift:** canonical doc lists **`0x105F8A15b819948a89153505762444Ee9f324684`**; `smom-dbis-138/.env` may set **`CCIP_SENDER=0x958Ae39Fb387A3653402a7eDA6847629b6F6F195`**. Verification then skips CCIPSender (“no bytecode” at 958…). | Reconcile `.env` with `CONTRACT_ADDRESSES_REFERENCE.md` and `scripts/verify-contracts-blockscout.sh` defaults. |
| G-03 | **`CCIP_ROUTER`:** `CONTRACT_ADDRESSES_REFERENCE` lists **`0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817`**; canonical `.env` reconcile output (completable step) has shown **`0x89EC6574eeAC72Ed1b93DfCa4DB43547C8367FF0`**. | Same as G-02: pick canonical row and align docs + env. |
| G-04 | **`CCIPWETH9Bridge` on 138:** doc line `0xcacfd227…` vs reconcile snippet **`0x9cba0D04…`** (from operator env templates). | Confirm on explorer which address holds live WETH9 bridge; fix the other surface. |
| G-05 | **`CONTRACT_ADDRESSES_REFERENCE`** notes **Multicall** and **Oracle Aggregator** share **`0x99b3511a2d315a497c8112c1fdd8d508d4b1e506`** with a warning — operator confusion risk. | Explorer slot verification + doc clarification. |
| G-06 | **`OPERATOR_READY_CHECKLIST`** historical note: WETH10 “not a smart contract” vs later verification success. | May be stale; refresh or date-stamp. |
| G-07 | **61-address on-chain check** includes a fixed list; it does **not** assert consistency between that list and `CONTRACT_ADDRESSES_REFERENCE` / `.env` for every CCIP variant. | Add optional cross-check script or extend check script. |
---
## 4. In-repo contradictions (PMM “canonical” stack)
Two different “canonical” narratives coexist:
- **Narrative A (many deployment docs, GALATIC, CONTRACT_ADDRESSES, thirdweb insight examples):** `DODOPMMIntegration = 0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` as corrected stack; pools such as `0xff8d3b8f…`.
- **Narrative B (workspace rules, EXPLORER_TOKEN_LIST_CROSSCHECK section 8 on-chain table, cursor `chain138-tokens-and-pmm.mdc`):** **Live traded** integration **`0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895`** with listed pools; **`0x5BDc62f1…`** described as parallel / different immutables / not for dApp wiring.
Until reconciled, **any automation** (PMM mesh, liquidity scripts, MCP pool indexer env) may point at the wrong integration.
---
## 5. Optional Cosmos templates — limitations
| ID | Limitation |
|----|------------|
| T-01 | All `*.example.*` files use **TODO** placeholders — intentionally not production. |
| T-02 | No JSON Schema (`.schema.json`) for `denom-trace.example.json` — validation is manual. |
| T-03 | **STATUS.md** “Doc complete” for AE means **runbook + templates**, not mainnet IBC. |
---
## 6. Suggested remediation order (repo hygiene)
1. **Resolve PMM dual-canon (section 4)** in `CONTRACT_ADDRESSES_REFERENCE`, `GALATIC_SUMMARY`, env examples, and aggregation docs — align with `EXPLORER_TOKEN_LIST_CROSSCHECK.md` section 8 after one on-chain proof export.
2. **Reconcile CCIP** env vars vs `CONTRACT_ADDRESSES_REFERENCE` (G-02G-04).
3. **Restore or retire** `config/smart-contracts-master.json` claim (G-01).
4. **Fix wording** D-02, D-03, optional D-01 archive banner.
5. **Cosmos implementation** only after (1)(3): deploy path, then C-03 script, then C-04 CI.
---
## 7. Related documents
- [COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md](COSMOS_ECOSYSTEM_CHAIN138_OPTIONAL_INTEGRATIONS_RUNBOOK.md)
- [CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md](CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md)
- [CONTRACT_ADDRESSES_REFERENCE.md](CONTRACT_ADDRESSES_REFERENCE.md)
- [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md)
- [EXPLORER_TOKEN_LIST_CROSSCHECK.md](EXPLORER_TOKEN_LIST_CROSSCHECK.md)
- [NON_EVM_NETWORK_HEALTH_AND_LANE_STATUS.md](NON_EVM_NETWORK_HEALTH_AND_LANE_STATUS.md)
- [`config/cosmos-chain138-optional/STATUS.md`](../../config/cosmos-chain138-optional/STATUS.md)

View File

@@ -0,0 +1,154 @@
# Cosmos Ecosystem and Chain 138 — Optional Integrations Runbook
**Last Updated:** 2026-05-09
**Status:** Optional program — streams **AE** fully documented; live bridges remain operator-adopted (see `config/cosmos-chain138-optional/STATUS.md`)
**Audience:** Architecture, bridge operators, compliance, routing/backend owners
---
## 1. Scope and facts
- **Chain 138** is an **EVM (Besu)** network. It is **not** a Cosmos SDK zone and does **not** run the Cosmos stack natively.
- **“Full Cosmos integration”** therefore means **bridges, attestations, routing, wallets, and ops** that connect **IBC-capable chains** to **138 contracts and policies**, not enabling IBC on 138 itself.
- **Canonical Chain 138 tokens and PMM** remain per [EXPLORER_TOKEN_LIST_CROSSCHECK.md](EXPLORER_TOKEN_LIST_CROSSCHECK.md) (sections 5 and 8) and [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md). Any Cosmos-side asset must map to those policies explicitly.
- **Known cross-repo conflicts** (PMM addresses, CCIP env drift, missing `smart-contracts-master.json`): [COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md](COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md) (section 34 are global, not Cosmos-only).
- **On-chain today:** `ChainRegistry` includes `ChainType.Cosmos` for metadata registration. A historical **`CosmosAdapter`** stub lives under `smom-dbis-138/archive/solidity/contracts/bridge/adapters/non-evm/CosmosAdapter.sol` (oracle-confirmed lock pattern; **not** production IBC). See [MASTER_CONTRACTS_AND_INFRASTRUCTURE_LIST.md](../../smom-dbis-138/docs/MASTER_CONTRACTS_AND_INFRASTRUCTURE_LIST.md).
---
## 2. Preconditions (all streams)
Complete before treating any stream as “in progress”:
| # | Gate | Owner |
|---|------|--------|
| P1 | **Bridge class chosen** per corridor: trust-minimized (e.g. general-message bridge vendor), CCTP-style where applicable, or oracle/custodial (closest to archived adapter) | Architecture + risk |
| P2 | **Allowlist policy** for Cosmos denoms and bridge contracts (who may mint/list on 138) | Compliance + engineering |
| P3 | **Relayer / vendor SLA** or explicit “public relayer only” acceptance | Ops |
| P4 | **Incident playbooks** (stuck IBC packet, bridge pause, oracle disagreement) | Ops |
| P5 | **Explorer / indexer** plan: Blockscout covers 138 EVM only; Cosmos legs need Mintscan (or equivalent) and/or internal indexer | Platform |
---
## 3. Stream A — Noble (and similar) native Cosmos stable corridor
**Objective:** Recognized native Cosmos stablecoin (e.g. Noble-issued USDC) maps cleanly to **138 canonical stables** or wrapped representations, with auditability.
| Step | Task | Done when |
|------|------|-----------|
| A1 | Select **source chain** (e.g. Noble) and **bridge stack** (vendor contracts + supported routes) | Written decision + vendor docs linked in internal wiki |
| A2 | Define **138-side mint/burn or lock/mint** contract(s) and roles (admin, pauser, oracle or light-client consumer) | Spec reviewed; addresses reserved in deployment tracker |
| A3 | Map **denom → 138 token address** (single canonical mapping table; no duplicate “explorer” addresses) | Row in repo config or registry doc + CI check if applicable |
| A4 | Register **non-EVM metadata** in `ChainRegistry` (`ChainType.Cosmos`, `chainIdentifier`, `adapter`, `additionalData` for channel/bridge IDs) | On-chain tx executed; [CONTRACT_ADDRESSES_REFERENCE.md](CONTRACT_ADDRESSES_REFERENCE.md) updated |
| A5 | **Liquidity** plan: seed PMM/vault or rely on external DEX only | Funding signed off |
| A6 | **E2E dry path**: small amount round-trip (Cosmos → 138 → Cosmos or to declared sink) | Tx hashes recorded; monitoring dashboards live |
| A7 | Update [CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md](CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md) and [GALATIC_SUMMARY.md](../GALATIC_SUMMARY.md) | PR merged |
---
## 4. Stream B — Osmosis (and other Cosmos DEX) liquidity and routing
**Objective:** Quotes and optional **execution legs** on Cosmos DEXes appear in the same **route-planning** discipline as other non-EVM legs (compare [TEZOS_USDTZ_INTEGRATION.md](TEZOS_USDTZ_INTEGRATION.md): route classes, not native 138 DEX).
| Step | Task | Done when |
|------|------|-----------|
| B1 | Choose **read-only vs executable** integration (quotes only vs signed swaps on Osmosis) | Flag in route engine config |
| B2 | **Denom/path parser** for pool routes and IBC hops | Unit tests + sample traces |
| B3 | Integrate **slippage, timeout, and failure** handling for IBC + DEX latency | Documented limits in API/runbook |
| B4 | If using **aggregator stack**: align with existing Axelar/Squid-class patterns where applicable ([BRIDGE_CHAINS_IMPLEMENTATION_COMPLETE.md](BRIDGE_CHAINS_IMPLEMENTATION_COMPLETE.md)) | Code path reviewed |
| B5 | **Security review** for any server-side signing or custody | Sign-off recorded |
---
## 5. Stream C — Generic IBC token (ICS-20 / app tokens)
**Objective:** Any **allowlisted** IBC-traced asset can be registered and routed, not only USDC.
| Step | Task | Done when |
|------|------|-----------|
| C1 | Define **IBC hash / full trace** schema stored in `ChainMetadata.additionalData` (or off-chain registry mirrored on-chain) | Schema doc + one example on testnet |
| C2 | **Tiering:** Tier-1 (manual governance allowlist) vs Tier-2 (automated with stricter caps) | Policy published |
| C3 | Per-token: **bridge + DEX + 138 contract** triple documented | Matrix row per denom |
| C4 | **User-facing warnings** for non-Noble / long trace paths | UI/API copy merged |
| C5 | Align token list / explorer publication with [EXPLORER_TOKEN_LIST_CROSSCHECK.md](EXPLORER_TOKEN_LIST_CROSSCHECK.md) | No conflicting canonical rows |
---
## 6. Stream D — CosmWasm application ↔ Chain 138
**Objective:** One or more **named CosmWasm contracts** (e.g. DEX, lending, ID) integrate via explicit messages, not “all of CosmWasm.”
| Step | Task | Done when |
|------|------|-----------|
| D1 | Pin **contract address(es), code ID, migrate policy** | Version doc |
| D2 | Choose **control path**: ICA/ICQ, general-message bridge to EVM, or off-chain coordinator + oracle | Sequence diagrams stored |
| D3 | **138-side counterpart** (vault, adapter, settlement hook) deployed or extended | Addresses in CONTRACT_ADDRESSES_REFERENCE |
| D4 | **Hyperledger** path only if required: Cacti/Firefly alignment per [MULTI_CHAIN_DEPLOYMENT_GUIDE.md](../../smom-dbis-138/docs/deployment/MULTI_CHAIN_DEPLOYMENT_GUIDE.md) Phase 4 | Explicit decision recorded |
| D5 | Wasm **CI/build** and upgrade runbook (outside or inside monorepo) | Maintainer sign-off |
---
## 7. Stream E — Cross-cutting layers and program closure
**Objective:** Relayers, wallets, indexing, audits, rate limits, and **formal program closure** so Cosmos legs are operable and governable, not only contract code.
| Step | Task | Done when |
|------|------|-----------|
| E1 | **IBC relayers:** channels, fees, redundancy, key custody documented | Table in ops doc or [`config/cosmos-chain138-optional/cross-cutting.example.md`](../../config/cosmos-chain138-optional/cross-cutting.example.md) filled for live |
| E2 | **Wallets:** Keplr / Leap / MetaMask Snaps (if used) user flows documented | Links in cross-cutting doc |
| E3 | **Indexing:** Cosmos txs and IBC events in SIEM or internal logs | Dashboard or log path recorded |
| E4 | **Audits:** per bridge deployment and per new token class | Report URLs stored |
| E5 | **Rate limits:** API and on-chain caps for mint/burn | Limits published to integrators |
| E6 | **Program closure:** P1P5 signed; adopted **product streams AD** named; stream **E** (E1E6) complete for adopted scope; `CHAINS_AND_PROTOCOLS` + `GALATIC_SUMMARY` updated for **live only**; annual review owner | [`config/cosmos-chain138-optional/STATUS.md`](../../config/cosmos-chain138-optional/STATUS.md) reflects live vs doc-only |
**Templates (copy before live use):** [`config/cosmos-chain138-optional/README.md`](../../config/cosmos-chain138-optional/README.md)
---
## 8. Suggested implementation order (still optional)
1. Preconditions (section 2)
2. Stream A (one stable corridor end-to-end)
3. Stream C on top of the same bridge (allowlist + schema)
4. Stream B (quotes, then optional execution)
5. Stream D (first CosmWasm app as reference)
6. Stream E (relayers through program closure) — typically **last**, but E1E3 planning can start in parallel
---
## 9. Definition of “complete” for this program
The **program** is complete when:
- Every stream (**AE**) that the organization **chooses to adopt** has all its rows in sections 37 marked done, with **on-chain or operational evidence** (tx hashes, run URLs, audit PDFs) referenced from [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md) or a linked ops doc; and
- [CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md](CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md) reflects **live** vs **not used** for Cosmos-related bridges; and
- Deferred streams are explicitly listed as **out of scope** in [`config/cosmos-chain138-optional/STATUS.md`](../../config/cosmos-chain138-optional/STATUS.md) or in [PHASE_D_OPTIONAL_CHECKLIST.md](../03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md).
**Repo doc-and-template completion (no live bridge implied):** Streams AE are **fully specified** in this runbook plus `config/cosmos-chain138-optional/*`; see `STATUS.md` for doc vs live matrix.
Streams explicitly **not** adopted remain **optional**; no further work is required.
---
## 10. Repo map (quick)
| Item | Location |
|------|----------|
| Templates + status matrix | `config/cosmos-chain138-optional/` |
| `ChainType.Cosmos` | `smom-dbis-138/contracts/registry/ChainRegistry.sol` |
| Historical Cosmos adapter | `smom-dbis-138/archive/solidity/contracts/bridge/adapters/non-evm/CosmosAdapter.sol` |
| Multi-chain Phase 3 checklist | `smom-dbis-138/docs/deployment/MULTI_CHAIN_DEPLOYMENT_GUIDE.md` |
| Non-EVM adapter backlog | `smom-dbis-138/docs/deployment/REMAINING_TASKS_COMPLETE_LIST.md` (`BRG-DEP-005`) |
| Bridge reference (EVM-focused) | This directory, `CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md` |
| Tezos route pattern (analogy) | `TEZOS_USDTZ_INTEGRATION.md` |
---
## 11. Related documents
- [CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md](CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md)
- [TEZOS_USDTZ_INTEGRATION.md](TEZOS_USDTZ_INTEGRATION.md)
- [BRIDGE_CHAINS_IMPLEMENTATION_COMPLETE.md](BRIDGE_CHAINS_IMPLEMENTATION_COMPLETE.md)
- [NON_EVM_NETWORK_HEALTH_AND_LANE_STATUS.md](NON_EVM_NETWORK_HEALTH_AND_LANE_STATUS.md)
- [EXPLORER_TOKEN_LIST_CROSSCHECK.md](EXPLORER_TOKEN_LIST_CROSSCHECK.md)
- [COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md](COSMOS_CHAIN138_GAPS_AND_INCONSISTENCIES.md) — gaps, doc conflicts, env drift, PMM dual-canon

View File

@@ -2,20 +2,20 @@
**Purpose:** Single reference for all compliant wrapped tokens (cW*) and the networks where they are defined or deployed.
**Source of truth:** `config/token-mapping-multichain.json` (`cToCwSymbolMapping`), `smom-dbis-138/script/deploy/DeployCWTokens.s.sol`, and `smom-dbis-138/.env` (for recorded addresses).
**Source of truth:** `config/token-mapping-multichain.json` (`cToCwSymbolMapping`), `cross-chain-pmm-lps/config/deployment-status.json`, `reports/status/cw-mesh-deployment-matrix-latest.json`, `smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts`, `smom-dbis-138/script/deploy/DeployCWTokens.s.sol`, and `smom-dbis-138/.env` (for recorded addresses).
---
## 1. All cW* tokens and deployability
All 12 cW* tokens are deployable via `DeployCWTokens.s.sol` (env flags `DEPLOY_CWUSDT=1`, `DEPLOY_CWEURC=1`, etc.; default all 1). Set `DEPLOY_*=0` to skip a token.
All 12 primary GRU cW* tokens are deployable via `DeployCWTokens.s.sol` (env flags `DEPLOY_CWUSDT=1`, `DEPLOY_CWEURC=1`, etc.; default all 1). Set `DEPLOY_*=0` to skip a token.
| cW* Token | Deploy script | Networks deployable (script) | Deployed on (addresses in .env) |
|-----------|---------------|------------------------------|----------------------------------|
| **cWUSDT** | Yes | 1, 25, 56, 137, 100, 43114, 8453, 42161, 10 | All 9 chains (Mainnet, Cronos, BSC, Polygon, Gnosis, Avalanche, Base, Arbitrum, Optimism) |
| **cWUSDC** | Yes | 1, 25, 56, 137, 100, 43114, 8453, 42161, 10 | All 9 chains |
| **cWEURC** | Yes | 1, 25, 56, 137, 100, 43114, 8453, 42161, 10 | BSC, Polygon, Gnosis, Avalanche, Base, Optimism (Mainnet/Cronos/Arbitrum: deploy failed nonce/gas) |
| **cWEURT** | Yes | Same | Same as cWEURC |
| **cWUSDT** | Yes | 1, 10, 56, 100, 137, 8453, 42161, 42220, 43114 (+ optional tooling for `25`) | Active on nine promoted public mesh chains (excludes Cronos `25`) |
| **cWUSDC** | Yes | Same | Same |
| **cWEURC** | Yes | Same | Same |
| **cWEURT** | Yes | Same | Same |
| **cWGBPC** | Yes | Same | Same |
| **cWGBPT** | Yes | Same | Same |
| **cWAUDC** | Yes | Same | Same |
@@ -37,11 +37,12 @@ All 12 cW* tokens are deployable via `DeployCWTokens.s.sol` (env flags `DEPLOY_C
| 56 | BSC (BNB Chain) |
| 100 | Gnosis Chain |
| 137 | Polygon |
| 42220 | Celo |
| 43114 | Avalanche C-Chain |
| 8453 | Base |
| 42161 | Arbitrum One |
Chains **42220** (Celo) and **1111** (Wemix) are in the token-mapping file for c*→cW* mapping but are not in the current `deploy-tokens-and-weth-all-chains-skip-canonical.sh` chain list for cW* deployment. **651940** (ALL Mainnet) is env-validation only; no cW* deploy from this repo.
Chain **1111** (Wemix) is in the token-mapping file and has gas-scaffold entries, but it is not promoted as a live cW settlement surface because the current Chain 138 CCIP router still rejects the Wemix selector. **651940** (ALL Mainnet) is a separate Alltra corridor: bidirectional bridge inventory is published, but it is not a public cW mesh destination in the current canonical registry.
---
@@ -49,7 +50,7 @@ Chains **42220** (Celo) and **1111** (Wemix) are in the token-mapping file for c
| Chain(s) | Bridge / receiver | Bridge code mints cW*? | Notes |
|----------|-------------------|------------------------|-------|
| All (1, 25, 56, 137, 100, 43114, 8453, 42161, 10) | CCIPRelayBridge (Mainnet), CCIPWETH9_BRIDGE_* (others) | **No** | Current suite is WETH-only; `ccipReceive` only transfers the received token. Granting MINTER/BURNER to these addresses allows DeployCWTokens to run but does not enable cross-chain mint until the receiver is extended or a dedicated cW* receiver (e.g. TwoWayTokenBridgeL2) is deployed. See [CW_BRIDGE_APPROACH.md](../07-ccip/CW_BRIDGE_APPROACH.md) and [CW_BRIDGE_TASK_LIST.md](CW_BRIDGE_TASK_LIST.md). |
| Active cW mesh chains (nine-chain promoted surface: 1, 10, 56, 100, 137, 8453, 42161, 42220, 43114) | CCIPRelayBridge (Mainnet), CCIPWETH9_BRIDGE_* (others) | **No, for cW mint/burn semantics** | Current bridge suite is WETH-oriented; `ccipReceive` only transfers the received token. cW token contracts, roles, PMM pools, and Uniswap V2 mesh evidence are active on the nine-chain set, but do not claim full c*<->cW* mint/burn E2E until dedicated cW receivers are deployed and proof transfers pass. Cronos `25` may appear in legacy wave-1 artifacts; it is **not** part of the promoted nine-chain public `cW*` count. See [CW_BRIDGE_APPROACH.md](../07-ccip/CW_BRIDGE_APPROACH.md) and [CW_BRIDGE_TASK_LIST.md](CW_BRIDGE_TASK_LIST.md). |
| After Phase B or C | Extended bridge or TwoWayTokenBridgeL2 / CCIPReceiverCW | **Yes** (when implemented) | Per [CW_BRIDGE_APPROACH.md](../07-ccip/CW_BRIDGE_APPROACH.md), Option 2 (dedicated receiver) is chosen; deploy TwoWayTokenBridgeL2 or equivalent per chain and point `CW_BRIDGE_<CHAIN>` to it for cW* mint/burn. |
---
@@ -72,7 +73,7 @@ Chains **42220** (Celo) and **1111** (Wemix) are in the token-mapping file for c
## 4. References
- [C_TO_CW_MAPPER_MAPPING.md](../04-configuration/C_TO_CW_MAPPER_MAPPING.md) c*cW* symbol and address mapping for the mapper.
- [TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md](TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md) Deployer tokens on other chains; cW* deploy path.
- [config/token-mapping-multichain.json](../../config/token-mapping-multichain.json) `cToCwSymbolMapping` and per-pair `_cW` tokens.
- **[CW_BRIDGE_TASK_LIST.md](../00-meta/CW_BRIDGE_TASK_LIST.md)** Detailed task list: note review, checks performed, and phases (bridge extension vs dedicated receiver, deploy cW*, wire config, E2E).
- [C_TO_CW_MAPPER_MAPPING.md](../04-configuration/C_TO_CW_MAPPER_MAPPING.md) - c* to cW* symbol and address mapping for the mapper.
- [TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md](TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md) - Deployer tokens on other chains; cW* deploy path.
- [config/token-mapping-multichain.json](../../config/token-mapping-multichain.json) - `cToCwSymbolMapping` and per-pair `_cW` tokens.
- **[CW_BRIDGE_TASK_LIST.md](../00-meta/CW_BRIDGE_TASK_LIST.md)** - Detailed task list: note review, checks performed, and phases (bridge extension vs dedicated receiver, deploy cW*, wire config, E2E).

View File

@@ -0,0 +1,58 @@
# DefiLlama DODO adapter — `dfio_meta_main` TVL breakdown
**Purpose:** Explain why the DODO protocol TVL **per-chain breakdown** can show **`dfio_meta_main` (Chain 138, SDK key `dfio_meta_main`) as `0.00`** while other chains (BSC, Ethereum, Avax, …) show non-zero balances that still sum to a plausible **total** (for example ~12M when meta-main is missing from the priced subtotal).
**Operator replay (full procedure):** [../00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md](../00-meta/METAMASK_GRU_DEFILLAMA_CHAIN138_MASTER_REFERENCE.md) (section 3 — DefiLlama fork, test, PR tracking, post-merge updates).
**Upstream tracking (open PR):** [DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) — *Add dfio_meta_main (chain 138) to DODO adapter + token mappings* (head: `Defi-Oracle-Meta-Blockchain:feat/chain-138-dfio-meta-main-dodo`). **GitHub `state` was verified `OPEN` on 2026-05-10** — keep using the PR URL as source of truth; update this note when it merges or is replaced.
**Production `defillama.com` picks this up when that PR merges** (plus their usual indexer lag).
**Canonical DefiLlama ↔ Chain 138 map:** [../04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md](../04-configuration/defillama/CHAIN138_DEFILLAMA_ECOSYSTEM_MAP.md).
**Provider matrix row (DeFiLlama):** [../04-configuration/metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md](../04-configuration/metamask/METAMASK_ASSET_PRICE_PROVIDER_SUBMISSION_MATRIX.md) (external repos table, DeFiLlama row).
## Symptom
Example breakdown shape:
- `bsc`, `ethereum`, `avax`, … — non-zero.
- **`dfio_meta_main``0.00`.**
- **`total`** — equals the sum of the priced chains only (e.g. ~12.36M), so it **looks** as if meta-main contributes nothing.
That pattern usually means **Chain 138 was not fully wired into the DODO TVL path** (missing chain key, missing hub-stable **`fixBalancesTokens`** entries, or no DVM factory/`fromBlock` slice for 138), so **`dfio_meta_main` USD attribution is wrong or absent** — not that DODO necessarily has zero inventory on 138.
**CI / comment tables:** [PR #19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) notes that workflow summary tables can **abbreviate** per-chain USD; a small slice next to a large total may show as **`0.00`** in that summary even when the full log or a local run shows a non-zero **`dfio_meta_main`** line — use the full workflow log or local test below when auditing.
## Root cause (adapter)
Until **`dfio_meta_main`** is integrated end-to-end in [DefiLlama-Adapters](https://github.com/DefiLlama/DefiLlama-Adapters), DODO TVL on Chain 138 does not flow through the same **chain registry + token price/fix-up + pool discovery** path as the other networks. [PR #19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) adds, per its description:
- `projects/helper/chains.json`**`dfio_meta_main`**
- `projects/helper/tokenMapping.js`**`fixBalancesTokens.dfio_meta_main`** (canonical **cUSDT** / **cUSDC** → priced IDs for USD valuation)
- `projects/dodo/index.js` — DODO V2 **DVM** on **`dfio_meta_main`** (factory `0xc93870594C7f83A0aE076c2e30b494Efc526b68E`, **`fromBlock` `3510162`**)
The exact balance helper (`sumTokens` vs `sumTokens2`, etc.) is whatever lands in **`master`** after review; the important operator signal is **merge [PR #19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198)** for integrated 138 coverage.
## Fix (maintainer / fork)
Track and land **[DefiLlama/DefiLlama-Adapters#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198)** (or an equivalent maintainer commit that carries the same three files). Fork for pushes: [Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters](https://github.com/Defi-Oracle-Meta-Blockchain/DefiLlama-Adapters).
After the change is in your clone, a local check should show a dedicated **`dfio_meta_main`** line (magnitude depends on live on-chain DODO custody and Llama pricing):
```bash
cd DefiLlama-Adapters && node test.js projects/dodo/index.js
```
Look for `--- dfio_meta_main ---` in the output. A **very large** USD number can occur if large hub stable balances sit in counted contracts and price feeds resolve.
## “Resolved” for operators
| Surface | Meaning |
|--------|---------|
| **Fork / PR branch** matching [#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) | **Resolved** for local adapter output; **`dfio_meta_main` should not be missing** from the integrated DODO path for that reason. |
| **defillama.com** public UI | **Resolved** when [#19198](https://github.com/DefiLlama/DefiLlama-Adapters/pull/19198) is **merged** into [DefiLlama/DefiLlama-Adapters](https://github.com/DefiLlama/DefiLlama-Adapters) `master` (or whatever branch production indexes), then after their deploy lag. |
## Machine-readable touchpoints
[`config/defillama-chain138-touchpoints.json`](../../config/defillama-chain138-touchpoints.json) — includes **`upstreamPullRequest`**, **`upstreamPullRequestState`**, **`upstreamPullRequestStateAsOf`**, **`upstreamPullRequestLastGhCheckUtc`**, and under **`docs`**: **`dodoDfioMetaMainTvlNote`**, **`masterReference`**, **`repositoriesAndPrs`** (update when GitHub state or paths change).

View File

@@ -1,6 +1,6 @@
# Deployed Tokens, Bridges, DODO/Uniswap LPs — Status & Complete Routing Map
**Last Updated:** 2026-04-21
**Last Updated:** 2026-05-09
**Purpose:** Single reference for (1) deployed tokens/coins and bridges per destination network, (2) DODO and Uniswap LPs with addresses, and (3) a complete mapping of all possible routes for routing **to** and **from** each chain.
> Audit note (2026-04-19): this doc was synced against the current machine-readable deployment graph and generated mesh reports. When this doc disagrees with older narrative runbooks, prefer `cross-chain-pmm-lps/config/deployment-status.json`, `reports/status/cw-mesh-deployment-matrix-latest.json`, and `reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json`. See `reports/status/MULTI_NETWORK_DEPLOYMENT_AUDIT_20260419.md`.
@@ -14,8 +14,8 @@
| **Chain 138 tokens** | ✅ Live | Chain 138 inventory is broader than older summaries implied: cUSDT, cUSDC, WETH, WETH10, LINK, the 10 compliant fiat additions, cXAUC/cXAUT, and `cAUSDT` are all evidenced in current repo-backed inventories. |
| **Chain 138 DODO PMM** | ✅ Live | DODOPMMIntegration + 6 public pools are live on Chain 138: stable pairs plus the three public XAU pools. Official mirror `USDT/USDC` pools were corrected and funded locally. DODOPMMProvider remains deployed; routing cUSDT↔cUSDC and the live local direct/ XAU paths are active. |
| **Chain 138 → destination bridges** | ✅ CCIP + Alltra with one blocked lane | CCIP WETH9/WETH10 routing is evidenced to Ethereum, BSC, Polygon, Arbitrum, Optimism, Avalanche, Cronos, Gnosis, and Celo; AlltraAdapter 138↔651940 is live. Wemix contracts are deployed and wired, but the current Chain 138 CCIP router still rejects the Wemix selector (`CCIPRouter: chain not supported`), so the lane is not sendable yet. |
| **Destination tokens (cW\*)** | ✅ Active on 10 public chains, scaffold-only on Wemix | `deployment-status.json` records active public-chain `cW*` inventory on `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`; `1111` currently remains `planned_gas_scaffold` with `bridgeAvailable=false`, not a promoted live settlement surface. |
| **Destination DODO/Uniswap LPs** | ⚠️ Mixed by venue and confidence | Public-chain deployment evidence is no longer design-only: `deployment-status.json` records PMM pool inventories on the active public chains, and generated Uniswap V2 reports confirm a complete wave-1 wrapped-mesh rollout on `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`. Explorer publication is still blocked in some cases. |
| **Destination tokens (cW\*)** | ✅ Active on 9 public chains, scaffold-only on Wemix | `deployment-status.json` records active public-chain `cW*` inventory on `1, 10, 56, 100, 137, 8453, 42161, 42220, 43114` (Cronos `25` is **not** counted here: no promoted live `cW*` surface); `1111` currently remains `planned_gas_scaffold` with `bridgeAvailable=false`, not a promoted live settlement surface. |
| **Destination DODO/Uniswap LPs** | ⚠️ Mixed by venue and confidence | Public-chain deployment evidence is no longer design-only: `deployment-status.json` records PMM pool inventories on the active public chains, and generated Uniswap V2 reports confirm wave-1 wrapped-mesh rollout on the same nine-chain `cW*` set (excluding Cronos). Explorer publication is still blocked in some cases. |
| **Uniswap on 138** | ❌ | No Uniswap V2/V3 factory on Chain 138. |
| **Uniswap on ALL Mainnet (651940)** | ⚠️ Documentation only | HYDX token and other Alltra ecosystem tokens are present on-chain, but Uniswap V2/V3, DODO, HYDX router/factory, and pool inventory are still not committed in canonical deployment status. |
@@ -41,7 +41,7 @@
| Chain ID | Name | Tokens / bridges |
|----------|------|-------------------|
| **1** | Ethereum Mainnet | WETH, USDT, USDC, DAI; CCIP WETH9/WETH10 bridges; relay router. cW* deployable. |
| **25** | Cronos | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. |
| **25** | Cronos | CCIP WETH9/WETH10; **no** promoted public `cW*` inventory (excluded from the nine-chain `cW*` count). |
| **56** | BSC | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. |
| **100** | Gnosis | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. |
| **137** | Polygon | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. |
@@ -118,7 +118,7 @@
| DODO PMM | ⚠️ Env | `CHAIN_651940_DODO_POOL_MANAGER`, `_DODO_VENDING_MACHINE` |
| HYDX | Present | Token `0x0d9793861AEB9244AD1B34375a83A6730F6AdD38`; no pool addresses in repo. |
### 4.3 Public chains (1, 56, 137, 10, 100, 25, 42161, 8453, 43114, 42220, 1111) — cW* edge pools
### 4.3 Public chains (1, 56, 137, 10, 100, 42161, 8453, 43114, 42220, 1111) — cW* edge pools
**Designed (pool-matrix.json):** Per chain, first-tier pools: cWUSDT/USDC or cWUSDT/USDT, cWUSDC/USDC or cWUSDC/USDT, plus cWAUSDT, cWEURC, cWEURT, cWUSDW vs hub stable. Optional: cW*/USDT, cW*/DAI, cW*/BUSD, cW*/mUSD.
@@ -184,7 +184,7 @@
| 138 | DeFi Oracle | cUSDT, cUSDC, cEURT, cXAUC, cXAUT, WETH, WETH10, LINK, official mirrors | — | — | DODO: 6 public pools live + 3 private XAU pools live |
| 1 | Ethereum | WETH, USDT, USDC, DAI | ✅ CCIP WETH9/10 | ✅ CCIP relay | Native DEX; cW* design |
| 651940 | ALL Mainnet | AUSDT, USDC, WETH, WALL | ✅ AlltraAdapter | ✅ AlltraAdapter | Documentation-only same-chain surface; no canonical router/factory/pool inventory committed yet |
| 25 | Cronos | cW* active | ✅ CCIP | ✅ CCIP | Wave-1 wrapped-mesh complete; explorer publication still partial |
| 25 | Cronos | No promoted `cW*` | ✅ CCIP | ✅ CCIP | WETH CCIP live; `cW*` not counted in nine-chain public surface |
| 56, 100, 137, 10, 42161, 8453, 43114 | BSC, Gnosis, Polygon, Optimism, Arbitrum, Base, Avalanche | cW* active | ✅ CCIP | ✅ CCIP | Active cW* inventory plus generated wrapped-mesh rollout evidence |
| 42220 | Celo | cW* active | ✅ CCIP | ✅ CCIP | Active cW* inventory plus generated wrapped-mesh rollout evidence |
| 1111 | Wemix | planned_gas_scaffold | ⏳ | ⏳ | Contracts exist and destinations are wired, but the current Chain 138 CCIP router still rejects the Wemix selector, so proof transfer/promotion cannot proceed yet |

View File

@@ -171,7 +171,7 @@ Files that contain smart contract addresses or deployment configuration:
1. **Chain 138:** From a host that can reach Blockscout (e.g. LAN), run:
- `./scripts/verify/run-contract-verification-with-proxy.sh` to submit verification for contracts in the verification config.
- Open https://explorer.d-bis.org/address/<ADDRESS> for each contract and confirm “Contract source code verified” (or equivalent).
- Open https://explorer.d-bis.org/addresses/<ADDRESS> for each contract and confirm “Contract source code verified” (or equivalent).
2. **This doc:** Set **Verified** to **Yes** or **No** for each contract after checking. Leave **Unknown** until checked.
---

View File

@@ -12,7 +12,7 @@
| Item | Value |
|------|--------|
| **Address** | `0x4A666F96fC8764181194447A7dFdb7d471b301C8` |
| **Chain 138 Explorer** | https://explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8 |
| **Chain 138 Explorer** | https://explorer.d-bis.org/addresses/0x4A666F96fC8764181194447A7dFdb7d471b301C8 |
| **Other chains (e.g. Mainnet)** | https://blockscan.com/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8 |
This address is the **documented deployer/admin** for Chain 138 (contracts, pools, and operations). The same address may hold assets or be used for deployments on other networks.

View File

@@ -11,7 +11,7 @@
| Chain | Explorer | Example (deployer address) |
|-------|----------|----------------------------|
| **Ethereum mainnet, etc.** | **https://blockscan.com** | [blockscan.com/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8](https://blockscan.com/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8) — use to check balances on mainnet and other supported chains |
| **Chain 138 (SMOM-DBIS-138)** | **https://explorer.d-bis.org** | [explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8](https://explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8) — use for Chain 138 only |
| **Chain 138 (SMOM-DBIS-138)** | **https://explorer.d-bis.org** | [explorer.d-bis.org/addresses/0x4A666F96fC8764181194447A7dFdb7d471b301C8](https://explorer.d-bis.org/addresses/0x4A666F96fC8764181194447A7dFdb7d471b301C8) — use for Chain 138 only |
- **To check balances on other chains:** Use **blockscan.com** (or etherscan.io) and select the chain; same address, different chain = different balance.
- **To check balances on Chain 138:** Use **explorer.d-bis.org** only; Blockscan does not show Chain 138.
@@ -21,7 +21,7 @@
## Deployer / Admin address
- **Address:** `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
- **Chain 138 (balance, txs, contracts):** https://explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8
- **Chain 138 (balance, txs, contracts):** https://explorer.d-bis.org/addresses/0x4A666F96fC8764181194447A7dFdb7d471b301C8
- **Other chains (e.g. Ethereum mainnet):** https://blockscan.com/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8
- **RPC (Chain 138):** https://rpc-core.d-bis.org or http://192.168.11.211:8545

View File

@@ -49,7 +49,7 @@ defi_oracle_meta_mainnet: {
ethereumLikeInfo: { chainId: 138 },
explorerViews: [
{
address: "https://explorer.d-bis.org/address/$address",
address: "https://explorer.d-bis.org/addresses/$address",
tx: "https://explorer.d-bis.org/tx/$hash",
token: "https://explorer.d-bis.org/token/$contractAddress?a=$address",
},

View File

@@ -32,7 +32,7 @@ forge verify-contract 0x105F8A15b819948a89153505762444Ee9f324684 \
- Other contracts and full manual commands: [BLOCKSCOUT_VERIFICATION_GUIDE](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md) and script `scripts/verify-contracts-blockscout.sh` (addresses/paths).
**Option C — Manual UI:**
Open https://explorer.d-bis.org/address/<ADDRESS>#verify-contract and use "Verify & Publish" with Standard JSON or flattened source.
Open https://explorer.d-bis.org/addresses/<ADDRESS>#verify-contract and use "Verify & Publish" with Standard JSON or flattened source.
---

View File

@@ -31,7 +31,7 @@
**Result:** Proxy runs and submits to Blockscout. Submission for CCIPSender can fail with `Invalid JSON, result=None` (Blockscout API response). When Blockscout is unreachable from the host, run times out.
**To complete:** Run from a host that can reach Blockscout. If submission returns Invalid JSON, try manual verification at https://explorer.d-bis.org/address/&lt;ADDRESS&gt;#verify-contract or check [BLOCKSCOUT_VERIFICATION_GUIDE](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md).
**To complete:** Run from a host that can reach Blockscout. If submission returns Invalid JSON, try manual verification at https://explorer.d-bis.org/addresses/&lt;ADDRESS&gt;#verify-contract or check [BLOCKSCOUT_VERIFICATION_GUIDE](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md).
---
@@ -45,7 +45,7 @@
## 4. Multicall vs Oracle at 0x99b3...
**Action:** Attempted to fetch the contract page at https://explorer.d-bis.org/address/0x99b3511a2d315a497c8112c1fdd8d508d4b1e506 to determine which contract (Multicall or Oracle Aggregator) is deployed at that slot.
**Action:** Attempted to fetch the contract page at https://explorer.d-bis.org/addresses/0x99b3511a2d315a497c8112c1fdd8d508d4b1e506 to determine which contract (Multicall or Oracle Aggregator) is deployed at that slot.
**Result:** **Done 2026-02-11.** Confirmed via RPC: `latestRoundData()` returns data, `getBlockNumber()` reverts — **Oracle Aggregator**. Documented in [CONTRACT_ADDRESSES_REFERENCE](CONTRACT_ADDRESSES_REFERENCE.md).

View File

@@ -42,7 +42,7 @@
**Full next steps, operator checklist, and all recommendations:** [CONTRACT_NEXT_STEPS_AND_RECOMMENDATIONS_COMPLETE](CONTRACT_NEXT_STEPS_AND_RECOMMENDATIONS_COMPLETE.md).
1. **Confirm on-chain** — Run `./scripts/verify/check-contracts-on-chain-138.sh` (36 addresses) or open each address at https://explorer.d-bis.org/address/<ADDRESS>.
1. **Confirm on-chain** — Run `./scripts/verify/check-contracts-on-chain-138.sh` (36 addresses) or open each address at https://explorer.d-bis.org/addresses/<ADDRESS>.
2. **Verify source on Blockscout** — Use [BLOCKSCOUT_VERIFICATION_GUIDE](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md) and `scripts/verify/run-contract-verification-with-proxy.sh`.
3. **Do not use deprecated bridge** — Use **CCIPWETH9Bridge** at `0xcacfd227A040002e49e2e01626363071324f820a` only.
4. **If deploying more contracts** — Use **`--with-gas-price 1000000000`** for all `forge script`/`forge create` on Chain 138. Phased core: [CONTRACTS_TO_DEPLOY](CONTRACTS_TO_DEPLOY.md), [CONTRACT_DEPLOYMENT_RUNBOOK](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md). RPC: Set `RPC_URL_138` in `smom-dbis-138/.env` (e.g. `http://192.168.11.211:8545` or `https://rpc-core.d-bis.org`). Set `PRIVATE_KEY` there too.

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