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
172 lines
7.2 KiB
Markdown
172 lines
7.2 KiB
Markdown
# 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
|
||
|
||
### 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
|
||
```
|