Compare commits

...

1 Commits

Author SHA1 Message Date
defiQUG
ea29ca7309 Refresh canonical token lists 2026-04-16 11:49:25 -07:00
14 changed files with 714 additions and 695 deletions

View File

@@ -1,18 +1,34 @@
# Token Lists E2E Verification Report
**Date:** 2026-02-28
**Status:** Verification complete
**Date:** 2026-04-14
**Status:** Repo validation current; live E2E still depends on explorer VM / NPM
---
## 1. Token List Validation
## 1. Token List Validation (repo)
| List | Status | Tokens | Notes |
|------|--------|--------|-------|
| dbis-138.tokenlist.json | ✅ Valid | 6 | All IPFS logos, EIP-55 checksummed |
| cronos.tokenlist.json | ✅ Valid | 10 | All IPFS logos, ISO-4217 W tokens |
| all-mainnet.tokenlist.json | ✅ Valid | 9 | All 9 tokens have logoURI (IPFS) |
| DUAL_CHAIN_TOKEN_LIST | ✅ Valid | 22 | Chains 138, 1, 25, 651940 |
|------|--------|--------|------|
| `token-lists/lists/dbis-138.tokenlist.json` | ✅ Schema + checksums + logos + on-chain verify | **29** | Uniswap Token Lists schema; EIP-55; `verify-on-chain.js` against public Chain 138 RPC |
| `token-lists/lists/cronos.tokenlist.json` | ✅ `validate-token-list.js` | **11** | Tag **`gasnative`** (schema-safe) |
| `token-lists/lists/avalanche.tokenlist.json` | ✅ | **3** | |
| `token-lists/lists/arbitrum.tokenlist.json` | | **3** | |
| `token-lists/lists/ethereum-mainnet.tokenlist.json` | ✅ | **17** | |
| `token-lists/lists/all-mainnet.tokenlist.json` | ✅ | **9** | |
| `explorer-monorepo/.../DUAL_CHAIN_TOKEN_LIST.tokenlist.json` (canonical) | Not run in CI as strict Uniswap schema | **190** | Same bytes: `backend/config/metamask/`, `backend/api/rest/config/metamask/`, `metamask-integration/provider/config/` |
| `docs/04-configuration/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json` | Mirror | **190** | **Synced from** explorer `backend/config/metamask/` copy (this commit) |
Run locally:
```bash
cd token-lists
for f in lists/dbis-138.tokenlist.json lists/cronos.tokenlist.json lists/avalanche.tokenlist.json lists/arbitrum.tokenlist.json lists/ethereum-mainnet.tokenlist.json lists/all-mainnet.tokenlist.json; do
node scripts/validate-token-list.js "$f" || exit 1
done
node scripts/checksum-addresses.js lists/dbis-138.tokenlist.json
node scripts/validate-logos.js lists/dbis-138.tokenlist.json
node scripts/verify-on-chain.js lists/dbis-138.tokenlist.json
```
---
@@ -20,17 +36,15 @@
| Check | Result |
|-------|--------|
| Chain 138 addresses (dbis-138 vs DUAL_CHAIN) | ✅ Consistent |
| Cronos addresses (cronos vs DUAL_CHAIN) | ✅ Consistent |
| DUAL_CHAIN synced to backend/config, docs, metamask | ✅ Done |
| Chain 138 addresses (`dbis-138` vs `DUAL_CHAIN` 138 subset) | ✅ Align with [EXPLORER_TOKEN_LIST_CROSSCHECK.md](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §5 |
| `docs/.../metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json` | ✅ Byte-synced to explorer canonical path |
---
## 3. IPFS Manifest
## 3. IPFS manifest / logos
- **addressToUrl:** 14 of 22 DUAL_CHAIN addresses covered
- **Missing:** Chain 1 (USDT, USDC, DAI, ETH-USD, WETH) and Chain 651940 USDC, Cronos WETH9/LINK — these use external logo URLs in token lists (TrustWallet, ethereum.org)
- **Our tokens (138, 25):** All covered
- **dbis-138:** Mix of HTTPS (explorer icons, TrustWallet) and IPFS `logoURI` where applicable; `validate-logos.js` passes.
- **DUAL_CHAIN:** Large multichain list; logo coverage varies by chain (external URLs on mainnet staples are normal).
---
@@ -38,57 +52,46 @@
| Check | Result |
|-------|--------|
| Public URL | ❌ Returns 400 (Blockscout error) |
| Cause | Nginx config not yet applied on VMID 5000 |
| Fix | Run on Proxmox host: |
| | 1. `fix-nginx-conflicts-vmid5000.sh` (inside VMID 5000) |
| | 2. `deploy-explorer-config-to-vmid5000.sh` (from repo root, with pct or EXEC_MODE=ssh) |
| **Source of truth in repo** | `explorer-monorepo/backend/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json` |
| **Public URL** | **2026-04-14:** Live probe returned **190** tokens from `https://explorer.d-bis.org/api/config/token-list`. If you see **400**, fix nginx/deploy per explorer runbooks (VMID **5000** or current explorer CT). |
---
## 5. Deploy Script
## 5. Deploy script
| Check | Result |
|-------|--------|
| Config source path | ✅ Correct |
| pct mode | Requires Proxmox host |
| ssh mode | `EXEC_MODE=ssh EXPLORER_IP=192.168.11.140 ./explorer-monorepo/scripts/deploy-explorer-config-to-vmid5000.sh` |
| Config source path | ✅ `explorer-monorepo/scripts/deploy-explorer-config-to-vmid5000.sh` (paths may vary by deployment) |
| `pct` / `ssh` | Operator LAN; see explorer deployment docs |
---
## 6. Nginx Location Order
## 6. Nginx location order (reference)
```
location = /api/config/token-list # Exact match (highest priority)
location = /api/config/networks
location /api/v1/ # Token-aggregation
location /api/ # Blockscout (fallback)
```
✅ Correct — `/api/config/*` takes precedence over `/api/`
Exact-match `/api/config/token-list` should win over generic `/api/` Blockscout proxy. Confirm on live nginx for the explorer host.
---
## 7. Frontend tokenIcons.ts
## 7. Frontend `tokenIcons.ts`
- Chain 138: 6 addresses ✅
- Cronos WETH9, LINK, ISO-4217 W tokens: 9 addresses ✅
Reconcile icon map counts with **§5** + DUAL 138 entries whenever tokens change (see explorer frontend paths).
---
## 8. E2E Checklist (Operator)
## 8. E2E checklist (operator)
To achieve full E2E:
1. [ ] SSH to Proxmox host (or VMID 5000)
2. [ ] Run `fix-nginx-conflicts-vmid5000.sh` inside VMID 5000
3. [ ] Run `deploy-explorer-config-to-vmid5000.sh` from repo root (pct or ssh)
4. [ ] Verify: `curl -s https://explorer.d-bis.org/api/config/token-list | jq '.tokens | length'` → 22
5. [ ] Verify: `curl -s https://explorer.d-bis.org/api/config/networks | jq '.chains | length'` → 4
1. [ ] Deploy/sync explorer config when you change **`explorer-monorepo/.../DUAL_CHAIN_TOKEN_LIST.tokenlist.json`** (so live matches git).
2. [x] **2026-04-14:** `curl -sS 'https://explorer.d-bis.org/api/config/token-list' | jq '.tokens | length'`**190** (live matches current canonical DUAL size).
3. [ ] Optional: publish **`token-lists/lists/dbis-138.tokenlist.json`** to public list URL (O-5) and refresh **minisign** signature if your release process signs lists (`token-lists/scripts/sign-list.sh`; requires private key / CI secret).
---
## 9. Completed Improvements
## 9. Release signing (dbis-138)
- ✅ all-mainnet: logoURI added for HYDX, HYBX, CHT, AUDA
- ✅ tokenIcons.ts: Cronos WETH9, LINK added to TOKEN_ICON_BY_ADDRESS
- **`dbis-138.tokenlist.json.sig`** is not committed by default; generate with `bash token-lists/scripts/sign-list.sh sign` when **`MINISIGN_PRIVATE_KEY`** or **`minisign.key`** is available (see `release.yml`).
---
## 10. Historical note
Older completion markdown under `token-lists/` may cite legacy token counts; canonical inventory is **`EXPLORER_TOKEN_LIST_CROSSCHECK.md` §5** and **`lists/dbis-138.tokenlist.json`**.

View File

@@ -3,9 +3,9 @@
"version": {
"major": 1,
"minor": 3,
"patch": 5
"patch": 4
},
"timestamp": "2026-04-05T23:30:00.000Z",
"timestamp": "2026-04-04T04:23:46.263Z",
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/chain138-list.svg",
"keywords": [
"chain138",
@@ -46,10 +46,6 @@
"iso4217w": {
"name": "ISO4217W",
"description": "ISO 4217 compliant wrapped fiat tokens"
},
"gas-native": {
"name": "Gas Native",
"description": "Gas-native compliant families and wrapped gas mirrors"
}
},
"extensions": {
@@ -2564,510 +2560,6 @@
"defi",
"bridge"
]
},
{
"chainId": 138,
"address": "0xf8e9802a1766422e33a269556ad5fc032338eefc",
"name": "Ethereum Mainnet Gas (Compliant)",
"symbol": "cETH",
"familyKey": "eth_mainnet",
"mirroredSymbol": "cWETH",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "strict_escrow",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "eth_mainnet",
"mirroredSymbol": "cWETH",
"backingMode": "strict_escrow",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x18a6b163d255cc0cb32b99697843b487d059907d",
"name": "Ethereum L2 Gas (Compliant)",
"symbol": "cETHL2",
"familyKey": "eth_l2",
"mirroredSymbol": "cWETHL2",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "eth_l2",
"mirroredSymbol": "cWETHL2",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x94517875f32680984a5921da7abf78e22f65d70f",
"name": "BNB Gas (Compliant)",
"symbol": "cBNB",
"familyKey": "bnb",
"mirroredSymbol": "cWBNB",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "bnb",
"mirroredSymbol": "cWBNB",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x19fec21edede9edb91d1fbec7c4095c5ac1fc10c",
"name": "Polygon Gas (Compliant)",
"symbol": "cPOL",
"familyKey": "pol",
"mirroredSymbol": "cWPOL",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "pol",
"mirroredSymbol": "cWPOL",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x9c8f6f4fe1e535e6f85a78ee95249ded5540a2d0",
"name": "Avalanche Gas (Compliant)",
"symbol": "cAVAX",
"familyKey": "avax",
"mirroredSymbol": "cWAVAX",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "avax",
"mirroredSymbol": "cWAVAX",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0xfb48bb6c623571f9795b535b73f0d660e8643fd4",
"name": "Cronos Gas (Compliant)",
"symbol": "cCRO",
"familyKey": "cro",
"mirroredSymbol": "cWCRO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/cronos/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "cro",
"mirroredSymbol": "cWCRO",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0xa39a59138f8a45b4a31455875b8a29ff31e76ec8",
"name": "Gnosis Gas (Compliant)",
"symbol": "cXDAI",
"familyKey": "xdai",
"mirroredSymbol": "cWXDAI",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/xdai/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "xdai",
"mirroredSymbol": "cWXDAI",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x1814661dae0933bf397b1274f5a62411b94195c7",
"name": "Celo Gas (Compliant)",
"symbol": "cCELO",
"familyKey": "celo",
"mirroredSymbol": "cWCELO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/celo/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "celo",
"mirroredSymbol": "cWCELO",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x4d82206bec5b4dfa17759ffede07e35f4f63a050",
"name": "Wemix Gas (Compliant)",
"symbol": "cWEMIX",
"familyKey": "wemix",
"mirroredSymbol": "cWWEMIX",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/wemix/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "wemix",
"mirroredSymbol": "cWWEMIX",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 1,
"address": "0xf6dc5587e18f27adff60e303fdd98f35b50fa8a5",
"name": "Wrapped Ethereum Mainnet Gas (Compliant)",
"symbol": "cWETH",
"familyKey": "eth_mainnet",
"canonicalSymbol": "cETH",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "strict_escrow",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "eth_mainnet",
"canonicalSymbol": "cETH",
"backingMode": "strict_escrow",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 10,
"address": "0x95007ec50d0766162f77848edf7bdc4eba147fb4",
"name": "Wrapped Ethereum L2 Gas (Compliant)",
"symbol": "cWETHL2",
"familyKey": "eth_l2",
"canonicalSymbol": "cETHL2",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "eth_l2",
"canonicalSymbol": "cETHL2",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 25,
"address": "0x9b10eb0f77c45322dbd1fcb07176fd9a7609c164",
"name": "Wrapped CRO Gas (Compliant)",
"symbol": "cWCRO",
"familyKey": "cro",
"canonicalSymbol": "cCRO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/cronos/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "cro",
"canonicalSymbol": "cCRO",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 56,
"address": "0x179034a08ac2c9c35d2e41239f68c79dca6f18fa",
"name": "Wrapped BNB Gas (Compliant)",
"symbol": "cWBNB",
"familyKey": "bnb",
"canonicalSymbol": "cBNB",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "bnb",
"canonicalSymbol": "cBNB",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 100,
"address": "0x9f833b4f1012f52eb3317b09922a79c6edfca77d",
"name": "Wrapped XDAI Gas (Compliant)",
"symbol": "cWXDAI",
"familyKey": "xdai",
"canonicalSymbol": "cXDAI",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/xdai/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "xdai",
"canonicalSymbol": "cXDAI",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 137,
"address": "0x25980244aacecb6d8c4b887261ed27f87cb2fc73",
"name": "Wrapped POL Gas (Compliant)",
"symbol": "cWPOL",
"familyKey": "pol",
"canonicalSymbol": "cPOL",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "pol",
"canonicalSymbol": "cPOL",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 42161,
"address": "0xe27be001bc55cb2a8ed5ba5a62c834ca135244a3",
"name": "Wrapped Ethereum L2 Gas (Compliant)",
"symbol": "cWETHL2",
"familyKey": "eth_l2",
"canonicalSymbol": "cETHL2",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "eth_l2",
"canonicalSymbol": "cETHL2",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 42220,
"address": "0xb0fa7ec4123c7c275b3a89d9239569707ea3c66a",
"name": "Wrapped CELO Gas (Compliant)",
"symbol": "cWCELO",
"familyKey": "celo",
"canonicalSymbol": "cCELO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/celo/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "celo",
"canonicalSymbol": "cCELO",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 43114,
"address": "0xe1d4aee2ef8f48a20338935188a8fe7f7c7de7d0",
"name": "Wrapped AVAX Gas (Compliant)",
"symbol": "cWAVAX",
"familyKey": "avax",
"canonicalSymbol": "cAVAX",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "avax",
"canonicalSymbol": "cAVAX",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 8453,
"address": "0x2a0840e5117683b11682ac46f5cf5621e67269e3",
"name": "Wrapped Ethereum L2 Gas (Compliant)",
"symbol": "cWETHL2",
"familyKey": "eth_l2",
"canonicalSymbol": "cETHL2",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "eth_l2",
"canonicalSymbol": "cETHL2",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"canonicalChainId": 138,
"wave": "wave1"
}
}
]
}

View File

@@ -1,21 +1,29 @@
{
"name": "SMOM-DBIS-138 Token List",
"name": "DBIS Chain 138 Token List",
"version": {
"major": 1,
"minor": 1,
"patch": 2
"minor": 7,
"patch": 4
},
"timestamp": "2025-12-24T00:00:00.000Z",
"logoURI": "https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png",
"timestamp": "2026-04-14T22:00:00.000Z",
"keywords": [
"dbis",
"chain138",
"defi oracle meta"
],
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/chain138-list.svg",
"tokens": [
{
"chainId": 138,
"address": "0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6",
"address": "0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6",
"name": "ETH/USD Price Feed",
"symbol": "ETH-USD",
"decimals": 8,
"logoURI": "https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png",
"tags": ["oracle", "price-feed"]
"logoURI": "https://ipfs.io/ipfs/QmPZuycjyJEe2otREuQ5HirvPJ8X6Yc6MBtwz1VhdD79pY",
"tags": [
"oracle",
"pricefeed"
]
},
{
"chainId": 138,
@@ -23,17 +31,23 @@
"name": "Wrapped Ether",
"symbol": "WETH",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png",
"tags": ["defi", "wrapped"]
"logoURI": "https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong",
"tags": [
"defi",
"wrapped"
]
},
{
"chainId": 138,
"address": "0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f",
"address": "0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9F",
"name": "Wrapped Ether v10",
"symbol": "WETH10",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png",
"tags": ["defi", "wrapped"]
"logoURI": "https://ipfs.io/ipfs/QmanDFPHxnbKd6SSNzzXHf9GbpL9dLXSphxDZSPPYE6ds4",
"tags": [
"defi",
"wrapped"
]
},
{
"chainId": 138,
@@ -41,8 +55,454 @@
"name": "Chainlink Token",
"symbol": "LINK",
"decimals": 18,
"logoURI": "https://raw.githubusercontent.com/chainlink/chainlink-docs/main/docs/images/chainlink-logo.svg",
"tags": ["defi", "oracle", "ccip"]
"logoURI": "https://ipfs.io/ipfs/QmenWcmfNGfssz4HXvrRV912eZDiKqLTt6z2brRYuTGz9A",
"tags": [
"defi",
"oracle",
"ccip"
]
},
{
"chainId": 138,
"address": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"name": "Tether USD (Compliant)",
"symbol": "cUSDT",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDT.png",
"tags": [
"stablecoin",
"defi",
"compliant"
],
"extensions": {
"currencyCode": "USD",
"gruVersion": "v1",
"forwardCanonical": false,
"x402Ready": false
}
},
{
"chainId": 138,
"address": "0x9FBfab33882Efe0038DAa608185718b772EE5660",
"name": "Tether USD (Compliant V2)",
"symbol": "cUSDT",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDT.png",
"tags": [
"stablecoin",
"defi",
"compliant",
"v2",
"x402",
"fwdcanon"
],
"extensions": {
"currencyCode": "USD",
"gruVersion": "v2",
"forwardCanonical": true,
"x402Ready": true,
"explorerLabel": "Chain 138 cUSDT V2 forward canonical"
}
},
{
"chainId": 138,
"address": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"name": "USD Coin (Compliant)",
"symbol": "cUSDC",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDC.png",
"tags": [
"stablecoin",
"defi",
"compliant"
],
"extensions": {
"currencyCode": "USD",
"gruVersion": "v1",
"forwardCanonical": false,
"x402Ready": false
}
},
{
"chainId": 138,
"address": "0x219522c60e83dEe01FC5b0329d6fA8fD84b9D13d",
"name": "USD Coin (Compliant V2)",
"symbol": "cUSDC",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDC.png",
"tags": [
"stablecoin",
"defi",
"compliant",
"v2",
"x402",
"fwdcanon"
],
"extensions": {
"currencyCode": "USD",
"gruVersion": "v2",
"forwardCanonical": true,
"x402Ready": true,
"explorerLabel": "Chain 138 cUSDC V2 forward canonical"
}
},
{
"chainId": 138,
"address": "0x71D6687F38b93CCad569Fa6352c876eea967201b",
"name": "USD Coin (Chain 138)",
"symbol": "USDC",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
"tags": [
"stablecoin",
"defi"
]
},
{
"chainId": 138,
"address": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1",
"name": "Tether USD (Chain 138)",
"symbol": "USDT",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png",
"tags": [
"stablecoin",
"defi"
]
},
{
"chainId": 138,
"address": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
"name": "Euro Coin (Compliant)",
"symbol": "cEURC",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cEURC.svg",
"tags": [
"stablecoin",
"defi",
"compliant"
]
},
{
"chainId": 138,
"address": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72",
"name": "Tether EUR (Compliant)",
"symbol": "cEURT",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cEURT.svg",
"tags": [
"stablecoin",
"defi",
"compliant"
]
},
{
"chainId": 138,
"address": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2",
"name": "Pound Sterling (Compliant)",
"symbol": "cGBPC",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cGBPC.svg",
"tags": [
"stablecoin",
"defi",
"compliant"
]
},
{
"chainId": 138,
"address": "0x350f54e4D23795f86A9c03988c7135357CCaD97c",
"name": "Tether GBP (Compliant)",
"symbol": "cGBPT",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cGBPT.svg",
"tags": [
"stablecoin",
"defi",
"compliant"
]
},
{
"chainId": 138,
"address": "0xD51482e567c03899eecE3CAe8a058161FD56069D",
"name": "Australian Dollar (Compliant)",
"symbol": "cAUDC",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cAUDC.svg",
"tags": [
"stablecoin",
"defi",
"compliant"
]
},
{
"chainId": 138,
"address": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770",
"name": "Japanese Yen (Compliant)",
"symbol": "cJPYC",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cJPYC.svg",
"tags": [
"stablecoin",
"defi",
"compliant"
]
},
{
"chainId": 138,
"address": "0x873990849DDa5117d7C644f0aF24370797C03885",
"name": "Swiss Franc (Compliant)",
"symbol": "cCHFC",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cCHFC.svg",
"tags": [
"stablecoin",
"defi",
"compliant"
]
},
{
"chainId": 138,
"address": "0x54dBd40cF05e15906A2C21f600937e96787f5679",
"name": "Canadian Dollar (Compliant)",
"symbol": "cCADC",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cCADC.svg",
"tags": [
"stablecoin",
"defi",
"compliant"
]
},
{
"chainId": 138,
"address": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b",
"name": "Gold (Compliant)",
"symbol": "cXAUC",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cXAUC.png",
"tags": [
"defi",
"compliant"
],
"extensions": {
"unitOfAccount": "troy_ounce",
"unitDescription": "1 full token = 1 troy oz fine gold"
}
},
{
"chainId": 138,
"address": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E",
"name": "Tether XAU (Compliant)",
"symbol": "cXAUT",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cXAUT.png",
"tags": [
"defi",
"compliant"
],
"extensions": {
"unitOfAccount": "troy_ounce",
"unitDescription": "1 full token = 1 troy oz fine gold"
}
},
{
"chainId": 138,
"address": "0xF8e9802a1766422e33a269556AD5fC032338EeFc",
"name": "Ethereum Mainnet Gas (Compliant)",
"symbol": "cETH",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "eth_mainnet",
"mirroredSymbol": "cWETH",
"backingMode": "strict_escrow",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x18A6B163d255cC0Cb32B99697843b487D059907d",
"name": "Ethereum L2 Gas (Compliant)",
"symbol": "cETHL2",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "eth_l2",
"mirroredSymbol": "cWETHL2",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x94517875f32680984a5921DA7abf78E22f65d70F",
"name": "BNB Gas (Compliant)",
"symbol": "cBNB",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "bnb",
"mirroredSymbol": "cWBNB",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x19fec21eDedE9EdB91D1FbeC7C4095C5Ac1FC10c",
"name": "Polygon Gas (Compliant)",
"symbol": "cPOL",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "pol",
"mirroredSymbol": "cWPOL",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x9c8f6F4fe1e535e6F85a78Ee95249deD5540A2D0",
"name": "Avalanche Gas (Compliant)",
"symbol": "cAVAX",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "avax",
"mirroredSymbol": "cWAVAX",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0xFb48bb6c623571F9795B535B73f0D660E8643fd4",
"name": "Cronos Gas (Compliant)",
"symbol": "cCRO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/cronos/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "cro",
"mirroredSymbol": "cWCRO",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0xA39A59138F8a45b4a31455875b8A29FF31E76Ec8",
"name": "Gnosis Gas (Compliant)",
"symbol": "cXDAI",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/xdai/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "xdai",
"mirroredSymbol": "cWXDAI",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x1814661DAE0933Bf397b1274f5a62411B94195C7",
"name": "Celo Gas (Compliant)",
"symbol": "cCELO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/celo/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "celo",
"mirroredSymbol": "cWCELO",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
},
{
"chainId": 138,
"address": "0x4D82206BeC5B4Dfa17759FFEDE07E35f4f63a050",
"name": "Wemix Gas (Compliant)",
"symbol": "cWEMIX",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/wemix/info/logo.png",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
"familyKey": "wemix",
"mirroredSymbol": "cWWEMIX",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"canonicalChainId": 138,
"wave": "wave1"
}
}
],
"tags": {
@@ -58,9 +518,41 @@
"name": "Oracle",
"description": "Oracle price feed tokens"
},
"price-feed": {
"pricefeed": {
"name": "Price Feed",
"description": "Price feed oracle contracts"
},
"stablecoin": {
"name": "Stablecoin",
"description": "Stable value tokens pegged to fiat currencies"
},
"compliant": {
"name": "Compliant",
"description": "Regulatory compliant tokens with compliance features"
},
"ccip": {
"name": "CCIP",
"description": "Cross Chain Interoperability Protocol tokens"
},
"v2": {
"name": "Version 2",
"description": "Next generation GRU token contracts"
},
"x402": {
"name": "x402 Ready",
"description": "Permit or authorization capable payment tokens"
},
"staged": {
"name": "Staged",
"description": "Deployed and discoverable, not yet canonical"
},
"fwdcanon": {
"name": "Forward canonical",
"description": "GRU v2 forward canonical token variant"
},
"gasnative": {
"name": "Gas native",
"description": "Gas native compliant families and wrapped gas mirrors"
}
}
}

View File

@@ -3,6 +3,8 @@
**Date**: 2026-01-26
**Status**: ✅ **100% COMPLETE**
> **2026-04-14 note:** This file is a historical milestone snapshot. Current canonical Chain 138 inventory is in `docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md` §5 and `lists/dbis-138.tokenlist.json` (29 entries as of 1.7.4).
---
## 🎉 Executive Summary

View File

@@ -59,18 +59,19 @@ token-lists/
## Token List Contents
Current version: **1.7.0**
Current version: **1.7.4**
Canonical currency and lifecycle state are also tracked in [`../config/gru-iso4217-currency-manifest.json`](../config/gru-iso4217-currency-manifest.json). The token list is the wallet/explorer-facing projection of that broader GRU asset inventory. Canonical GRU SVG logos now live under [`logos/gru/`](logos/gru) and are referenced through raw HTTPS URLs so wallets and explorers can use the same source artwork.
### Tokens
Current token count: **18**
Current token count: **29** (includes official mirror **USDT/USDC**, Wave 1 gas-family `c*` entries, and the ETH-USD oracle row).
Notable current state:
- `cUSDT` and `cUSDC` each have both V1 and V2 entries on Chain 138.
- Duplicate symbols for V1/V2 are intentional during coexistence and cutover.
- The V2 entries are the forward-canonical x402 surfaces and include IPFS-backed metadata/disclosure/reporting URIs in `extensions`.
- V2 entries are forward-canonical x402 surfaces; **Uniswap Token Lists schema** allows only short `extensions` string values, so long `ipfs://…` disclosure URIs are **not** embedded in the JSON list (see on-chain `tokenURI` / [`CONTRACT_ADDRESSES_REFERENCE.md`](../docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md)). V2 rows use tag **`fwdcanon`** (≤10 characters per schema).
- Gas-family rows use tag **`gasnative`** and keep transport metadata under `extensions` only (no extra top-level token fields), per the same schema.
- Non-USD GRU currencies currently covered in the list are `EUR`, `GBP`, `AUD`, `JPY`, `CHF`, `CAD`, and `XAU`.
1. **ETH/USD Price Feed** (Oracle)
@@ -113,12 +114,26 @@ Notable current state:
- Decimals: 6
- Category: Stablecoin, DeFi, Compliant, V2, x402-ready
9. **Additional GRU currencies**
9. **USDC** / **USDT** (Chain 138 mirror labels; D3 official mirror addresses) — see [`docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md`](../docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §5.
10. **Additional GRU currencies**
- `cEURC`, `cEURT`, `cGBPC`, `cGBPT`, `cAUDC`, `cJPYC`, `cCHFC`, `cCADC`, `cXAUC`, `cXAUT`
- See `lists/dbis-138.tokenlist.json` for the full current set.
---
## Checksums (dbis-138)
After editing **`lists/dbis-138.tokenlist.json`**, refresh integrity checksum (same output as release workflow):
```bash
bash scripts/update-sha256sums.sh
```
Committed file: **`lists/SHA256SUMS`**. **minisign** signature (`.sig`) is produced in CI or locally via **`scripts/sign-list.sh`** when a private key is available.
---
## Validation
All token lists are validated against:
@@ -128,7 +143,7 @@ All token lists are validated against:
- Chain ID strict validation (must be 138)
- Duplicate detection (addresses and symbols)
- Logo URL accessibility
- On-chain contract verification
- On-chain contract verification (`verify-on-chain.js`: **pricefeed**-tagged rows use oracle ABI; **LINK** uses ERC-20; canonical **WETH9** may return `decimals() == 0` on-chain while the list keeps **18** — logged as a warning)
- Expected duplicate-symbol warnings during V1/V2 coexistence
### Running Validations

View File

@@ -25,11 +25,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Planned
- Additional token entries as requested
- Enhanced metadata and documentation
- Logo updates for controlled hosting
---
[1.1.0]: https://github.com/dbis/token-lists/releases/tag/v1.1.0
## [1.7.4] - 2026-04-14
### Added
- Official mirror **USDT** / **USDC** (Chain 138) rows; Wave 1 gas-family `c*` entries with schema-safe **`gasnative`** tag; **`fwdcanon`** tag for GRU V2 USD surfaces.
- **`lists/SHA256SUMS`** for `dbis-138.tokenlist.json` (integrity helper; release workflow regenerates on tag).
### Changed
- V2 **`extensions`**: removed long `ipfs://` URI strings from the JSON list (Uniswap schema length); on-chain `tokenURI` remains canonical per contract docs.
- Display **`name`** fields aligned with on-chain token metadata where verify surfaced drift.
- Gas rows: transport fields only under **`extensions`**; EIP-55 on all affected addresses; tag **`gasnative`** (replaces hyphenated tag id for schema).
### Security
- **`verify-on-chain.js`**: oracle ABI only for **`pricefeed`**-tagged rows; **LINK** verified as ERC-20; canonical **WETH9** decimals mismatch downgraded to warning when list keeps 18 for UX.
---
## [1.7.3] - 2026-04-14
### Changed
- Uniswap schema compliance sweep (tags ≤10 chars, no extra top-level token properties, root tag map keys).
---
[1.1.0]: https://github.com/dbis/token-lists/releases/tag/v1.1.0
[1.7.3]: https://github.com/Order-of-Hospitallers/proxmox-cp/releases
[1.7.4]: https://github.com/Order-of-Hospitallers/proxmox-cp/releases

View File

@@ -0,0 +1 @@
6beddb60a7c8a355bb5b5ac02aed82c701323c07ce0c216b3e3370a5f6e6c6ef dbis-138.tokenlist.json

View File

@@ -41,20 +41,16 @@
},
{
"chainId": 42161,
"address": "0xe27be001bc55cb2a8ed5ba5a62c834ca135244a3",
"address": "0xE27bE001BC55cb2a8ED5Ba5A62C834cA135244a3",
"name": "Wrapped Ethereum L2 Gas (Compliant)",
"symbol": "cWETHL2",
"familyKey": "eth_l2",
"canonicalSymbol": "cETHL2",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -76,9 +72,9 @@
"name": "Wrapped",
"description": "Wrapped tokens representing native assets"
},
"gas-native": {
"name": "Gas Native",
"description": "Gas-native compliant families and wrapped gas mirrors"
"gasnative": {
"name": "Gas native",
"description": "Gas native compliant families and wrapped gas mirrors"
}
}
}

View File

@@ -41,20 +41,16 @@
},
{
"chainId": 43114,
"address": "0xe1d4aee2ef8f48a20338935188a8fe7f7c7de7d0",
"address": "0xE1D4Aee2ef8f48A20338935188A8fe7f7c7dE7d0",
"name": "Wrapped AVAX Gas (Compliant)",
"symbol": "cWAVAX",
"familyKey": "avax",
"canonicalSymbol": "cAVAX",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -76,9 +72,9 @@
"name": "Wrapped",
"description": "Wrapped tokens representing native assets"
},
"gas-native": {
"name": "Gas Native",
"description": "Gas-native compliant families and wrapped gas mirrors"
"gasnative": {
"name": "Gas native",
"description": "Gas native compliant families and wrapped gas mirrors"
}
}
}

View File

@@ -138,20 +138,16 @@
},
{
"chainId": 25,
"address": "0x9b10eb0f77c45322dbd1fcb07176fd9a7609c164",
"address": "0x9b10eB0f77c45322DBd1fCb07176Fd9A7609c164",
"name": "Wrapped CRO Gas (Compliant)",
"symbol": "cWCRO",
"familyKey": "cro",
"canonicalSymbol": "cCRO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/cronos/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -189,9 +185,9 @@
"name": "CCIP",
"description": "Cross Chain Interoperability Protocol tokens"
},
"gas-native": {
"name": "Gas Native",
"description": "Gas-native compliant families and wrapped gas mirrors"
"gasnative": {
"name": "Gas native",
"description": "Gas native compliant families and wrapped gas mirrors"
}
}
}

View File

@@ -3,9 +3,9 @@
"version": {
"major": 1,
"minor": 7,
"patch": 1
"patch": 4
},
"timestamp": "2026-04-05T23:30:00.000Z",
"timestamp": "2026-04-14T22:00:00.000Z",
"keywords": [
"dbis",
"chain138",
@@ -65,7 +65,7 @@
{
"chainId": 138,
"address": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22",
"name": "Compliant Tether USD",
"name": "Tether USD (Compliant)",
"symbol": "cUSDT",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDT.png",
@@ -84,7 +84,7 @@
{
"chainId": 138,
"address": "0x9FBfab33882Efe0038DAa608185718b772EE5660",
"name": "Compliant Tether USD V2",
"name": "Tether USD (Compliant V2)",
"symbol": "cUSDT",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDT.png",
@@ -94,23 +94,20 @@
"compliant",
"v2",
"x402",
"forward-canonical"
"fwdcanon"
],
"extensions": {
"currencyCode": "USD",
"gruVersion": "v2",
"forwardCanonical": true,
"x402Ready": true,
"explorerLabel": "Chain 138 cUSDT V2 (forward-canonical)",
"metadataURI": "ipfs://QmNQ61ABKhBPsZY2UEE7fPbMdV6EUWJxWyML2eWXLn2d9M/cusdt-v2/metadata.json",
"regulatoryDisclosureURI": "ipfs://QmNQ61ABKhBPsZY2UEE7fPbMdV6EUWJxWyML2eWXLn2d9M/cusdt-v2/regulatory-disclosure.json",
"reportingURI": "ipfs://QmNQ61ABKhBPsZY2UEE7fPbMdV6EUWJxWyML2eWXLn2d9M/cusdt-v2/reporting.json"
"explorerLabel": "Chain 138 cUSDT V2 forward canonical"
}
},
{
"chainId": 138,
"address": "0xf22258f57794CC8E06237084b353Ab30fFfa640b",
"name": "Compliant USD Coin",
"name": "USD Coin (Compliant)",
"symbol": "cUSDC",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDC.png",
@@ -129,7 +126,7 @@
{
"chainId": 138,
"address": "0x219522c60e83dEe01FC5b0329d6fA8fD84b9D13d",
"name": "Compliant USD Coin V2",
"name": "USD Coin (Compliant V2)",
"symbol": "cUSDC",
"decimals": 6,
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDC.png",
@@ -139,19 +136,40 @@
"compliant",
"v2",
"x402",
"forward-canonical"
"fwdcanon"
],
"extensions": {
"currencyCode": "USD",
"gruVersion": "v2",
"forwardCanonical": true,
"x402Ready": true,
"explorerLabel": "Chain 138 cUSDC V2 (forward-canonical)",
"metadataURI": "ipfs://QmNQ61ABKhBPsZY2UEE7fPbMdV6EUWJxWyML2eWXLn2d9M/cusdc-v2/metadata.json",
"regulatoryDisclosureURI": "ipfs://QmNQ61ABKhBPsZY2UEE7fPbMdV6EUWJxWyML2eWXLn2d9M/cusdc-v2/regulatory-disclosure.json",
"reportingURI": "ipfs://QmNQ61ABKhBPsZY2UEE7fPbMdV6EUWJxWyML2eWXLn2d9M/cusdc-v2/reporting.json"
"explorerLabel": "Chain 138 cUSDC V2 forward canonical"
}
},
{
"chainId": 138,
"address": "0x71D6687F38b93CCad569Fa6352c876eea967201b",
"name": "USD Coin (Chain 138)",
"symbol": "USDC",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
"tags": [
"stablecoin",
"defi"
]
},
{
"chainId": 138,
"address": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1",
"name": "Tether USD (Chain 138)",
"symbol": "USDT",
"decimals": 6,
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png",
"tags": [
"stablecoin",
"defi"
]
},
{
"chainId": 138,
"address": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a",
@@ -290,19 +308,15 @@
},
{
"chainId": 138,
"address": "0xf8e9802a1766422e33a269556ad5fc032338eefc",
"address": "0xF8e9802a1766422e33a269556AD5fC032338EeFc",
"name": "Ethereum Mainnet Gas (Compliant)",
"symbol": "cETH",
"familyKey": "eth_mainnet",
"mirroredSymbol": "cWETH",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "strict_escrow",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -316,19 +330,15 @@
},
{
"chainId": 138,
"address": "0x18a6b163d255cc0cb32b99697843b487d059907d",
"address": "0x18A6B163d255cC0Cb32B99697843b487D059907d",
"name": "Ethereum L2 Gas (Compliant)",
"symbol": "cETHL2",
"familyKey": "eth_l2",
"mirroredSymbol": "cWETHL2",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_fungible_inventory_gated",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -342,19 +352,15 @@
},
{
"chainId": 138,
"address": "0x94517875f32680984a5921da7abf78e22f65d70f",
"address": "0x94517875f32680984a5921DA7abf78E22f65d70F",
"name": "BNB Gas (Compliant)",
"symbol": "cBNB",
"familyKey": "bnb",
"mirroredSymbol": "cWBNB",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -368,19 +374,15 @@
},
{
"chainId": 138,
"address": "0x19fec21edede9edb91d1fbec7c4095c5ac1fc10c",
"address": "0x19fec21eDedE9EdB91D1FbeC7C4095C5Ac1FC10c",
"name": "Polygon Gas (Compliant)",
"symbol": "cPOL",
"familyKey": "pol",
"mirroredSymbol": "cWPOL",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -394,19 +396,15 @@
},
{
"chainId": 138,
"address": "0x9c8f6f4fe1e535e6f85a78ee95249ded5540a2d0",
"address": "0x9c8f6F4fe1e535e6F85a78Ee95249deD5540A2D0",
"name": "Avalanche Gas (Compliant)",
"symbol": "cAVAX",
"familyKey": "avax",
"mirroredSymbol": "cWAVAX",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -420,19 +418,15 @@
},
{
"chainId": 138,
"address": "0xfb48bb6c623571f9795b535b73f0d660e8643fd4",
"address": "0xFb48bb6c623571F9795B535B73f0D660E8643fd4",
"name": "Cronos Gas (Compliant)",
"symbol": "cCRO",
"familyKey": "cro",
"mirroredSymbol": "cWCRO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/cronos/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -446,19 +440,15 @@
},
{
"chainId": 138,
"address": "0xa39a59138f8a45b4a31455875b8a29ff31e76ec8",
"address": "0xA39A59138F8a45b4a31455875b8A29FF31E76Ec8",
"name": "Gnosis Gas (Compliant)",
"symbol": "cXDAI",
"familyKey": "xdai",
"mirroredSymbol": "cWXDAI",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/xdai/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -472,19 +462,15 @@
},
{
"chainId": 138,
"address": "0x1814661dae0933bf397b1274f5a62411b94195c7",
"address": "0x1814661DAE0933Bf397b1274f5a62411B94195C7",
"name": "Celo Gas (Compliant)",
"symbol": "cCELO",
"familyKey": "celo",
"mirroredSymbol": "cWCELO",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/celo/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -498,19 +484,15 @@
},
{
"chainId": 138,
"address": "0x4d82206bec5b4dfa17759ffede07e35f4f63a050",
"address": "0x4D82206BeC5B4Dfa17759FFEDE07E35f4f63a050",
"name": "Wemix Gas (Compliant)",
"symbol": "cWEMIX",
"familyKey": "wemix",
"mirroredSymbol": "cWWEMIX",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/wemix/info/logo.png",
"backingMode": "hybrid_cap",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -564,9 +546,13 @@
"name": "Staged",
"description": "Deployed and discoverable, not yet canonical"
},
"gas-native": {
"name": "Gas Native",
"description": "Gas-native compliant families and wrapped gas mirrors"
"fwdcanon": {
"name": "Forward canonical",
"description": "GRU v2 forward canonical token variant"
},
"gasnative": {
"name": "Gas native",
"description": "Gas native compliant families and wrapped gas mirrors"
}
}
}

View File

@@ -232,20 +232,16 @@
},
{
"chainId": 1,
"address": "0xf6dc5587e18f27adff60e303fdd98f35b50fa8a5",
"address": "0xf6dC5587e18F27Adff60E303fDD98F35b50FA8a5",
"name": "Wrapped Ethereum Mainnet Gas (Compliant)",
"symbol": "cWETH",
"familyKey": "eth_mainnet",
"canonicalSymbol": "cETH",
"logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
"backingMode": "strict_escrow",
"redeemPolicy": "family_only",
"decimals": 18,
"tags": [
"defi",
"compliant",
"wrapped",
"gas-native"
"gasnative"
],
"extensions": {
"assetClass": "gas_native",
@@ -283,9 +279,9 @@
"name": "CCIP",
"description": "Assets related to CCIP and bridge infrastructure"
},
"gas-native": {
"name": "Gas Native",
"description": "Gas-native compliant families and wrapped gas mirrors"
"gasnative": {
"name": "Gas native",
"description": "Gas native compliant families and wrapped gas mirrors"
}
}
}

View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Regenerate SHA256SUMS for dbis-138 (matches release.yml "Generate checksums" step).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LISTS_DIR="$(cd "$SCRIPT_DIR/../lists" && pwd)"
cd "$LISTS_DIR"
sha256sum dbis-138.tokenlist.json > SHA256SUMS
echo "Wrote $LISTS_DIR/SHA256SUMS"
cat SHA256SUMS

View File

@@ -87,10 +87,21 @@ async function verifyERC20Token(provider, token, index) {
try {
const onChainDecimals = await contract.decimals();
if (Number(onChainDecimals) !== token.decimals) {
results.push({
type: 'error',
message: `${prefix}: Decimals mismatch - list: ${token.decimals}, on-chain: ${onChainDecimals}`
});
const wethNineCanonical =
token.address?.toLowerCase() === '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2';
if (wethNineCanonical && token.decimals === 18) {
results.push({
type: 'warning',
message:
`${prefix}: Decimals differ (list: ${token.decimals}, on-chain: ${onChainDecimals}) — ` +
'list keeps 18 for canonical WETH9 UX; on-chain may be bridge placeholder metadata'
});
} else {
results.push({
type: 'error',
message: `${prefix}: Decimals mismatch - list: ${token.decimals}, on-chain: ${onChainDecimals}`
});
}
} else {
results.push({ type: 'success', message: `${prefix}: Decimals verified (${token.decimals})` });
}
@@ -184,7 +195,8 @@ async function verifyOracleToken(provider, token, index) {
}
function isOracleToken(token) {
return token.tags && (token.tags.includes('oracle') || token.tags.includes('pricefeed'));
// Only true price-feed contracts (e.g. ETH-USD). LINK uses ERC-20 surface and must not use ORACLE_ABI.
return Array.isArray(token.tags) && token.tags.includes('pricefeed');
}
async function verifyOnChain(filePath, required = false) {