2026-03-02 11:37:34 -08:00
# 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
1. **ETH/USD Price Feed ** — Oracle contract at `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` is not a standard ERC20; tokenlists.org typically lists ERC20 tokens. Consider removing or confirming it's acceptable.
2. **Address checksums ** — Run `cast to-checksum-address` for each address to ensure EIP-55. WETH10: CHAIN138_TOKEN_ADDRESSES has `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` (lowercase f); token list has `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9F` (uppercase F). One is wrong.
3. **tokenMap ** — Schema allows optional `tokenMap` ; our list omits it. Optional, no change needed.
### Validation command
```bash
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
2026-04-12 06:12:20 -07:00
**Upstream:** Merged [chains#8124 ](https://github.com/ethereum-lists/chains/pull/8124 ) / [cb4c47b ](https://github.com/ethereum-lists/chains/commit/cb4c47b0345fa8688dbc0133e0aa1cd3fb211a80 ). This repo’ s [pr-ready/eip155-138.json ](pr-ready/eip155-138.json ) tracks [upstream `master` ](https://github.com/ethereum-lists/chains/blob/master/_data/chains/eip155-138.json ).
2026-03-02 11:37:34 -08:00
### 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 | ✅ |
2026-04-12 06:12:20 -07:00
| **networkId ** | ✅ | 138 | ✅ |
| **rpc ** | ✅ | public HTTPS + WSS (d-bis.org + defi-oracle.io mirrors) | ✅ |
2026-03-02 11:37:34 -08:00
| **faucets ** | ✅ | [] | ✅ |
| **infoURL ** | ✅ | "https://d-bis.org" | ✅ |
| **nativeCurrency ** | ✅ | { name, symbol, decimals } | ✅ |
2026-04-12 06:12:20 -07:00
| **features ** | optional | EIP155, EIP1559, EIP2718, EIP2930 | ✅ |
| **icon ** | ❌ | (omitted upstream) | ✅ |
2026-03-02 11:37:34 -08:00
2026-04-12 06:12:20 -07:00
### Follow-up PRs only
2026-03-02 11:37:34 -08:00
2026-04-12 06:12:20 -07:00
1. **Prettier ** — Run `npx prettier --write _data/chains/eip155-138.json` before any new PR to ethereum-lists/chains.
2. **Icon ** — If adding `"icon"` , supply matching `_data/icons/<id>.json` per upstream rules.
2026-03-02 11:37:34 -08:00
### Validation command
```bash
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
1. **sampleTx ** — Must be a real transaction hash from Chain 138. Get from https://explorer.d-bis.org (any recent tx).
2. **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
```bash
# 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.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` )
### 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)
```bash
# 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
```