255 lines
6.2 KiB
Markdown
255 lines
6.2 KiB
Markdown
|
|
# Adding Token List to Chainlist Configuration
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
This document explains how to add token list references to ChainID 138's Chainlist configuration.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Token List Support in Chainlist
|
||
|
|
|
||
|
|
### Schema Status
|
||
|
|
|
||
|
|
The official Chainlist JSON schema you provided does **NOT** include a `tokenLists` field in the required or optional properties. However:
|
||
|
|
|
||
|
|
1. **Chainlist may accept additional fields** not in the strict schema (using `additionalProperties: false` might be flexible)
|
||
|
|
2. **Token lists are typically separate** from chain configurations
|
||
|
|
3. **Some chains include token list URLs** as custom properties
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Current Token List Status
|
||
|
|
|
||
|
|
**Token List Location**:
|
||
|
|
- ✅ **Hosted**: https://raw.githubusercontent.com/Defi-Oracle-Meta-Blockchain/metamask-integration/main/config/token-list.json
|
||
|
|
- ✅ **Contains**: WETH9, WETH10, ETH/USD Oracle (3 tokens)
|
||
|
|
- ✅ **Format**: Uniswap Token Lists Specification
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Options for Adding Token List
|
||
|
|
|
||
|
|
### Option 1: Add as Custom Field (Not in Schema)
|
||
|
|
|
||
|
|
Even though `tokenLists` is not in the schema, you can try adding it:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"name": "DBIS Chain",
|
||
|
|
"chain": "DBIS",
|
||
|
|
"chainId": 138,
|
||
|
|
"networkId": 138,
|
||
|
|
"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",
|
||
|
|
"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",
|
||
|
|
"tokenLists": [
|
||
|
|
"https://raw.githubusercontent.com/Defi-Oracle-Meta-Blockchain/metamask-integration/main/config/token-list.json"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Pros**:
|
||
|
|
- Makes token list discoverable from chainlist.org
|
||
|
|
- Users can find tokens when adding network
|
||
|
|
|
||
|
|
**Cons**:
|
||
|
|
- Not in official schema (may be rejected)
|
||
|
|
- Chainlist maintainers may remove it
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Option 2: Keep Separate (Recommended)
|
||
|
|
|
||
|
|
Keep token list separate from chain configuration:
|
||
|
|
|
||
|
|
1. **Chain configuration** (in Chainlist):
|
||
|
|
- Network metadata only
|
||
|
|
- RPC URLs, explorer, currency info
|
||
|
|
|
||
|
|
2. **Token list** (separate):
|
||
|
|
- Hosted at GitHub
|
||
|
|
- Users add manually in MetaMask
|
||
|
|
- Or linked in documentation
|
||
|
|
|
||
|
|
**Pros**:
|
||
|
|
- Follows standard practice
|
||
|
|
- Token lists are typically separate
|
||
|
|
- No schema conflicts
|
||
|
|
|
||
|
|
**Cons**:
|
||
|
|
- Less discoverable
|
||
|
|
- Users need to add token list manually
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Option 3: Update Schema (Advanced)
|
||
|
|
|
||
|
|
If Chainlist accepts schema updates, you could propose adding `tokenLists`:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"tokenLists": {
|
||
|
|
"type": "array",
|
||
|
|
"items": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "URL to token list JSON file"
|
||
|
|
},
|
||
|
|
"description": "Optional array of token list URLs for this chain"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Pros**:
|
||
|
|
- Official support
|
||
|
|
- Better discoverability
|
||
|
|
|
||
|
|
**Cons**:
|
||
|
|
- Requires schema change approval
|
||
|
|
- Longer process
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Recommended Approach
|
||
|
|
|
||
|
|
### For Chainlist PR (Immediate)
|
||
|
|
|
||
|
|
**Do NOT include `tokenLists` in the PR** because:
|
||
|
|
1. It's not in the schema
|
||
|
|
2. Chainlist maintainers may reject it
|
||
|
|
3. Token lists are typically separate
|
||
|
|
|
||
|
|
**Focus on**:
|
||
|
|
- ✅ Updating RPC URLs
|
||
|
|
- ✅ Verifying explorer URL
|
||
|
|
- ✅ Ensuring all required fields are correct
|
||
|
|
|
||
|
|
### For Token List Discovery
|
||
|
|
|
||
|
|
**Use these methods**:
|
||
|
|
|
||
|
|
1. **Documentation**:
|
||
|
|
- Link token list in chain description
|
||
|
|
- Add to `infoURL` website
|
||
|
|
- Include in PR description
|
||
|
|
|
||
|
|
2. **MetaMask Integration**:
|
||
|
|
- Users can add token list URL manually
|
||
|
|
- Or use programmatic addition in dApps
|
||
|
|
|
||
|
|
3. **Separate Token List Registry**:
|
||
|
|
- Submit to Uniswap Token Lists registry
|
||
|
|
- List on token list aggregators
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Updated chain-138.json (Without tokenLists)
|
||
|
|
|
||
|
|
**Recommended for Chainlist PR**:
|
||
|
|
|
||
|
|
```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"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Note**: No `tokenLists` field - keep it schema-compliant.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## PR Description Template (Including Token List Info)
|
||
|
|
|
||
|
|
Even though we don't include `tokenLists` in the JSON, we can mention it in the PR description:
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## Update ChainID 138 RPC Endpoints
|
||
|
|
|
||
|
|
### Summary
|
||
|
|
Updates RPC endpoints for ChainID 138 (DBIS Chain) to use the new public and permissioned endpoints.
|
||
|
|
|
||
|
|
### Changes
|
||
|
|
- Updated RPC URLs:
|
||
|
|
- From: `https://rpc.defi-oracle.io`
|
||
|
|
- To: `https://rpc-http-pub.d-bis.org`, `https://rpc-http-prv.d-bis.org`
|
||
|
|
|
||
|
|
### Token List
|
||
|
|
A token list for ChainID 138 is available at:
|
||
|
|
- **URL**: https://raw.githubusercontent.com/Defi-Oracle-Meta-Blockchain/metamask-integration/main/config/token-list.json
|
||
|
|
- **Tokens**: WETH9, WETH10, ETH/USD Oracle
|
||
|
|
- **Format**: Uniswap Token Lists Specification
|
||
|
|
|
||
|
|
Users can add this token list in MetaMask Settings → Security & Privacy → Token Lists.
|
||
|
|
|
||
|
|
### 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
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Summary
|
||
|
|
|
||
|
|
**Answer**: There is **NO official `tokenLists` field** in the Chainlist schema.
|
||
|
|
|
||
|
|
**Recommendation**:
|
||
|
|
1. ✅ **Do NOT add `tokenLists` to chain.json** (not in schema)
|
||
|
|
2. ✅ **Mention token list in PR description** (for discoverability)
|
||
|
|
3. ✅ **Keep token list separate** (standard practice)
|
||
|
|
4. ✅ **Link token list in documentation** (on infoURL website)
|
||
|
|
|
||
|
|
**Token List Discovery**:
|
||
|
|
- Users add token list URL manually in MetaMask
|
||
|
|
- Or dApps can programmatically reference it
|
||
|
|
- Or link it in chain documentation/website
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Last Updated**: 2025-12-24
|
||
|
|
**Status**: Token list should be kept separate from chain configuration
|
||
|
|
|