Files
proxmox/docs/04-configuration/PR_ADDITIONS_VALIDATION_REPORT.md

172 lines
7.2 KiB
Markdown
Raw Normal View History

# 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, 130 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, 110000 items | 6 tokens | ✅ |
| **token.chainId** | integer, min 1 | 138 | ✅ |
| **token.address** | checksummed 0x hex or Solana | Must be EIP-55 | ⚠️ Verify |
| **token.decimals** | 0255 | 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
### 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
1. **networkId** — Currently `1`. Most EVM mainnets use `networkId === chainId`. Chain 138 may use networkId 138; verify from chain config. If wrong, change to `138`.
2. **icon** — Using `"icon": "defioraclemeta"` requires `_data/icons/defioraclemeta.json` to exist. Format:
```json
[{"url":"ipfs://Qm...","width":1000,"height":1628,"format":"png"}]
```
The URL must be IPFS and retrievable via `ipfs get`. **Option:** Remove `icon` field to avoid needing the icon file (some chains omit it).
3. **explorers[].icon** — We don't use explorer icon; OK.
4. **Prettier** — Run `npx prettier --write _data/chains/eip155-138.json` before PR.
### 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
```