Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- Config, docs, scripts, and backup manifests - Submodule refs unchanged (m = modified content in submodules) Made-with: Cursor
7.2 KiB
7.2 KiB
PR Additions Validation Report — Format and Content Checks
Last Updated: 2026-02-28
Purpose: Double-check formatting and content for each PR addition before submission.
1. Token List (dbis-138.tokenlist.json) — tokenlists.org / Uniswap schema
Schema requirements (from tokenlist.schema.json)
| Field | Requirement | Our value | Status |
|---|---|---|---|
| name | string, 1–30 chars, pattern ^[\w ]+$ |
"DBIS Chain 138 Token List" (24 chars) | ✅ |
| timestamp | date-time format | "2026-02-16T00:00:00.000Z" | ✅ |
| version | { major, minor, patch } | { 1, 3, 0 } | ✅ |
| tokens | array, 1–10000 items | 6 tokens | ✅ |
| token.chainId | integer, min 1 | 138 | ✅ |
| token.address | checksummed 0x hex or Solana | Must be EIP-55 | ⚠️ Verify |
| token.decimals | 0–255 | 6, 8, 18 | ✅ |
| token.name | max 60 chars | All valid | ✅ |
| token.symbol | max 20 chars, ^\S+$ |
ETH-USD, WETH, etc. | ✅ |
| tags (in tokens) | must exist in list-level tags | oracle, pricefeed, defi, wrapped, stablecoin, compliant, ccip | ✅ |
| logoURI | format uri | https://... | ✅ |
Issues to fix
- ETH/USD Price Feed — Oracle contract at
0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6is not a standard ERC20; tokenlists.org typically lists ERC20 tokens. Consider removing or confirming it's acceptable. - Address checksums — Run
cast to-checksum-addressfor each address to ensure EIP-55. WETH10: CHAIN138_TOKEN_ADDRESSES has0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f(lowercase f); token list has0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9F(uppercase F). One is wrong. - tokenMap — Schema allows optional
tokenMap; our list omits it. Optional, no change needed.
Validation command
cd /home/intlc/projects/token-lists && npm install && npx ajv validate -s src/tokenlist.schema.json -d /home/intlc/projects/proxmox/token-lists/lists/dbis-138.tokenlist.json
2. Chainlist (eip155-138.json) — ethereum-lists/chains
Schema requirements (chainSchema.json)
| Field | Required | Our value | Status |
|---|---|---|---|
| name | ✅ | "Defi Oracle Meta Mainnet" | ✅ |
| shortName | ✅ | "dfio-meta-main" — pattern ^[A-Za-z0-9-_]{1,64}$ |
✅ |
| chain | ✅ | "dfiometa" | ✅ |
| chainId | ✅ | 138 | ✅ |
| networkId | ✅ | 1 | ⚠️ Verify |
| rpc | ✅ | array of strings | ✅ |
| faucets | ✅ | [] | ✅ |
| infoURL | ✅ | "https://d-bis.org" | ✅ |
| nativeCurrency | ✅ | { name, symbol, decimals } | ✅ |
| icon | ❌ | "defioraclemeta" | ⚠️ Requires icon file |
Issues to fix
- networkId — Currently
1. Most EVM mainnets usenetworkId === chainId. Chain 138 may use networkId 138; verify from chain config. If wrong, change to138. - icon — Using
"icon": "defioraclemeta"requires_data/icons/defioraclemeta.jsonto exist. Format:The URL must be IPFS and retrievable via[{"url":"ipfs://Qm...","width":1000,"height":1628,"format":"png"}]ipfs get. Option: Removeiconfield to avoid needing the icon file (some chains omit it). - explorers[].icon — We don't use explorer icon; OK.
- Prettier — Run
npx prettier --write _data/chains/eip155-138.jsonbefore PR.
Validation command
cd /home/intlc/projects/chains
cp /home/intlc/projects/proxmox/docs/04-configuration/pr-ready/eip155-138.json _data/chains/
./gradlew run
npx prettier --write _data/chains/eip155-138.json
3. Trust Wallet (trust-wallet-registry-chain138.json) — wallet-core
Registry format (from registry-fields.md)
| Field | Requirement | Our value | Status |
|---|---|---|---|
| id | lowercase, never change | "dfiometa" | ✅ |
| name | readable | "Defi Oracle Meta Mainnet" | ✅ |
| coinId | 10000000 + chainId for EVM clones | 10000138 | ✅ |
| symbol | native coin | "ETH" | ✅ |
| decimals | 18 | 18 | ✅ |
| blockchain | "Ethereum" for EVM | "Ethereum" | ✅ |
| derivation | path m/44'/60'/0'/0/0 | ✅ | ✅ |
| chainId | string | "138" | ✅ |
| explorer.sampleTx | Real tx hash for URL validation | "" | ❌ MUST FIX |
| explorer.sampleAccount | Real address for URL validation | "" | ❌ MUST FIX |
Issues to fix
- sampleTx — Must be a real transaction hash from Chain 138. Get from https://explorer.d-bis.org (any recent tx).
- sampleAccount — Must be a real address. Use any address that has had activity.
From registry-fields.md: "Note that the sample values should include existing IDs, so that the resulting full URL is valid."
How to get sample values
# From explorer or RPC
curl -s "https://explorer.d-bis.org/api/v2/transactions" | jq '.items[0].hash'
curl -s "https://explorer.d-bis.org/api/v2/addresses/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" | jq '.hash'
# Or use a known address: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 (WETH)
4. DefiLlama-Adapters — Protocol TVL
Not a token list
DefiLlama adapters return TVL (total value locked), not token lists. Each protocol (e.g. DODO) has an index.js exporting tvl(api) per chain.
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.jsor similar. - If adding DODO on Chain 138, you must:
- Confirm DefiLlama supports chain 138 (may need PR to add chain first)
- Add config entry and tvl logic for the chain key they use (e.g.
chain138ordefi-oracle-meta)
No PR-ready file
We do not have a DefiLlama adapter file. Create one only after confirming chain support.
Summary — Action Items
| Addition | File | Status |
|---|---|---|
| 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 |
Verification commands (run before PR)
# Token list (from token-lists repo)
cd /home/intlc/projects/token-lists
npm install
# Validate schema (if ajv available)
node -e "
const schema = require('./src/tokenlist.schema.json');
const list = require('/home/intlc/projects/proxmox/token-lists/lists/dbis-138.tokenlist.json');
console.log('name length:', list.name.length, '(max 30)');
console.log('tokens:', list.tokens.length);
list.tokens.forEach(t => console.log(t.symbol, t.address));
"
# Chains
cd /home/intlc/projects/chains
cp ../../proxmox/docs/04-configuration/pr-ready/eip155-138.json _data/chains/
npx prettier --write _data/chains/eip155-138.json
./gradlew run
# Trust Wallet - use registry id, not chainId
# Add entry from pr-ready/trust-wallet-registry-chain138.json to registry.json first
. "$HOME/.cargo/env" # if Rust installed via rustup
cd /home/intlc/projects/wallet-core
./tools/new-evmchain dfiometa # use registry id, NOT 138