Files
explorer-monorepo/docs/CHAINLIST_SCHEMA_VALIDATION.md

227 lines
5.6 KiB
Markdown
Raw Normal View History

# Chainlist Schema Validation for ChainID 138
## Schema Requirements
Based on the Chainlist JSON schema, here are the required and optional fields:
### Required Fields
-`name` - Name of the Network
-`shortName` - Short identifier (pattern: `^[A-Za-z0-9-_]{1,64}$`)
-`chain` - Name of the Network
-`chainId` - Chain ID (number)
-`networkId` - Network ID (number)
-`rpc` - Array of RPC URLs (strings)
-`faucets` - Array of faucet URLs (strings)
-`infoURL` - Information URL (string)
-`nativeCurrency` - Object with `name`, `symbol`, `decimals`
### Optional Fields
- `title` - Optional title for the Network
- `icon` - Icon type/URL
- `features` - Array of feature objects (e.g., EIP155)
- `slip44` - Slip44 number
- `ens` - ENS registry configuration
- `explorers` - Array of explorer objects
- `parent` - Parent chain information
- `status` - Chain status
- `redFlags` - Array of red flags (e.g., "reusedChainId")
---
## Our chain-138.json Validation
### Current Configuration
```json
{
"name": "DBIS Chain",
"chain": "DBIS",
"rpc": [
"https://rpc-http-pub.d-bis.org",
"https://rpc-http-prv.d-bis.org"
],
"faucets": [],
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"infoURL": "https://d-bis.org",
"shortName": "dbis",
"chainId": 138,
"networkId": 138,
"explorers": [
{
"name": "Blockscout",
"url": "https://explorer.d-bis.org",
"standard": "EIP3091"
}
],
"icon": "https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png"
}
```
### Validation Results
**All Required Fields Present**:
-`name`: "DBIS Chain"
-`shortName`: "dbis" (matches pattern `^[A-Za-z0-9-_]{1,64}$`)
-`chain`: "DBIS"
-`chainId`: 138
-`networkId`: 138
-`rpc`: Array with 2 URLs
-`faucets`: Empty array (valid)
-`infoURL`: "https://d-bis.org"
-`nativeCurrency`: Object with name, symbol, decimals
**Optional Fields**:
-`explorers`: Array with Blockscout explorer
-`icon`: Icon URL
**Schema Compliance**: **PASSED**
---
## Comparison with Current Chainlist Entry
### Current Entry in ethereum-lists/chains
Based on the curl test, the current entry shows:
```json
{
"name": "Defi Oracle Meta Mainnet",
"chain": "dfiometa",
"rpc": ["https://rpc.defi-oracle.io", "wss://wss.defi-oracle.io"]
}
```
### Differences
| Field | Current (Chainlist) | Our Config | Action |
|-------|---------------------|------------|--------|
| `name` | "Defi Oracle Meta Mainnet" | "DBIS Chain" | ⚠️ **Decision needed** |
| `chain` | "dfiometa" | "DBIS" | ⚠️ **Decision needed** |
| `rpc` | `rpc.defi-oracle.io` | `rpc-http-pub.d-bis.org` | ✅ **Must update** |
| `shortName` | Unknown | "dbis" | ⚠️ **Check current** |
| `explorers` | Unknown | Blockscout | ⚠️ **Verify/Add** |
---
## Recommended PR Strategy
### Option 1: Update RPC URLs Only (Safest)
- Keep existing name: "Defi Oracle Meta Mainnet"
- Keep existing chain: "dfiometa"
- **Only update RPC URLs** to new endpoints
- **Add/verify explorer** if missing
**PR Changes**:
```json
{
"rpc": [
"https://rpc-http-pub.d-bis.org",
"https://rpc-http-prv.d-bis.org"
]
}
```
### Option 2: Full Update (More Comprehensive)
- Update name to "DBIS Chain" (if preferred)
- Update chain to "DBIS"
- Update RPC URLs
- Ensure all fields match our config
**PR Changes**:
- Update `name`, `chain`, `rpc`, `explorers`, etc.
---
## Validation Checklist
Before creating PR, verify:
- [ ] All required fields are present
- [ ] `shortName` matches pattern: `^[A-Za-z0-9-_]{1,64}$`
- [ ] `rpc` array contains valid URLs
- [ ] `nativeCurrency` has `name`, `symbol`, `decimals`
- [ ] `chainId` is 138
- [ ] `networkId` is 138
- [ ] JSON is valid (no syntax errors)
- [ ] RPC URLs are accessible
- [ ] Explorer URL is accessible
---
## Testing Commands
### Validate JSON Structure
```bash
cat token-lists/chainlists/chain-138.json | jq .
```
### Test RPC Endpoints
```bash
# Public RPC
curl -X POST https://rpc-http-pub.d-bis.org \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
# Permissioned RPC
curl -X POST https://rpc-http-prv.d-bis.org \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
```
### Check Current Chainlist Entry
```bash
curl -s "https://raw.githubusercontent.com/ethereum-lists/chains/master/_data/chains/eip155-138/chain.json" | jq .
```
---
## PR File Path
**Target File**: `_data/chains/eip155-138/chain.json`
**Full Path in Repository**:
```
ethereum-lists/chains/_data/chains/eip155-138/chain.json
```
---
## Recommended PR Description
```markdown
## Update ChainID 138 RPC Endpoints
### Summary
Updates RPC endpoints for ChainID 138 to use the new public and permissioned endpoints.
### Changes
- Updated RPC URLs:
- From: `https://rpc.defi-oracle.io`, `wss://wss.defi-oracle.io`
- To: `https://rpc-http-pub.d-bis.org`, `https://rpc-http-prv.d-bis.org`
### Reason
The previous RPC endpoints have been deprecated. The new endpoints provide:
- Public access for general use (MetaMask, dApps)
- Permissioned access for authorized services
### Testing
- ✅ Verified RPC endpoints return Chain ID 138 (0x8a)
- ✅ Tested `eth_chainId` method on both endpoints
- ✅ Verified JSON schema compliance
- ✅ Validated all required fields are present
### Related
- Explorer: https://explorer.d-bis.org
- Token List: https://raw.githubusercontent.com/Defi-Oracle-Meta-Blockchain/metamask-integration/main/config/token-list.json
```
---
**Last Updated**: 2025-12-24
**Status**: ✅ Schema Validation Complete - Ready for PR