Files
explorer-monorepo/docs/CHAINLIST_METAMASK_BLOCKSCOUT_RELATIONSHIP.md

289 lines
11 KiB
Markdown
Raw Normal View History

# Chainlist, MetaMask, and Blockscout Relationship for ChainID 138
## 🎯 Quick Answer
**Where does ChainID 138 metadata live for MetaMask?**
1. **Chainlist.org** (Primary) - Network metadata (RPC URLs, explorer, chain name)
- **Status**: ⚠️ **NOT YET SUBMITTED** to Chainlist.org
- **Local File**: `token-lists/chainlists/chain-138.json`
- **Location**: Should be at `https://chainlist.org` after submission
2. **RPC Endpoint** (VMID 2500) - Blockchain data only
- **Internal**: `http://192.168.11.250:8545` (VMID 2500 - internal only, not public)
- **Public**: `https://rpc-http-pub.d-bis.org` (public RPC endpoint)
- **Permissioned**: `https://rpc-http-prv.d-bis.org` (permissioned/private RPC endpoint)
- **Provides**: Chain ID verification (`eth_chainId``0x8a`)
- **Does NOT Provide**: Network name, currency symbol, explorer URL
3. **Blockscout** (VMID 5000) - Block explorer and API
- **Location**: `https://explorer.d-bis.org`
- **Role**: Referenced in chainlist config as the explorer
- **Does NOT Provide**: Chain metadata or chainlist data
4. **Token Lists** (GitHub) - Token metadata
- **Local File**: `token-lists/lists/dbis-138.tokenlist.json`
- **Status**: ✅ **HOSTED** at: https://raw.githubusercontent.com/Defi-Oracle-Meta-Blockchain/metamask-integration/main/config/token-list.json
- **Purpose**: Token names, symbols, decimals, logos
---
## 📊 Data Flow Diagram
```
┌─────────────────────────────────────────────────────────────┐
│ MetaMask Wallet │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Network Info │ │ Token Lists │ │ Explorer │ │
│ │ (from │ │ (from │ │ (from │ │
│ │ Chainlist) │ │ Token List) │ │ Blockscout) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Chainlist.org │ │ Token List │ │ Blockscout │
│ │ │ (GitHub) │ │ (VMID 5000) │
│ - RPC URLs │ │ │ │ │
│ - Chain Name │ │ - WETH9 │ │ - Block API │
│ - Explorer URL │ │ - WETH10 │ │ - Tx API │
│ - Currency │ │ - Oracle │ │ - Address API │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ │ │
└────────────────────┴────────────────────┘
┌─────────────────┐
│ RPC Node │
│ (VMID 2500) │
│ │
│ - eth_chainId │
│ - eth_balance │
│ - eth_call │
│ - eth_sendTx │
└─────────────────┘
```
---
## 🔍 Detailed Breakdown
### 1. Chainlist.org - The Source of Truth
**What It Is**: Public registry of EVM networks that MetaMask uses to discover networks
**Current Status for ChainID 138**:
- ✅ Configuration file exists: `token-lists/chainlists/chain-138.json`
-**NOT YET SUBMITTED** to Chainlist.org
- ❌ ChainID 138 does NOT appear on chainlist.org yet
**What's in chain-138.json**:
```json
{
"name": "DBIS Chain",
"chainId": 138,
"rpc": [
"https://rpc-http-pub.d-bis.org",
"https://rpc-http-prv.d-bis.org"
],
"explorers": [{
"name": "Blockscout",
"url": "https://explorer.d-bis.org", ← Blockscout URL here
"standard": "EIP3091"
}],
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
}
}
```
**How MetaMask Uses It**:
1. User visits chainlist.org
2. Searches for "DBIS" or "138"
3. Clicks "Add to MetaMask"
4. MetaMask reads the JSON config
5. Network is added with all settings
**Key Point**: Blockscout is **referenced** in the chainlist config, but Blockscout itself doesn't provide the chainlist data.
---
### 2. RPC Endpoint - Blockchain Data Provider
**Location**:
- Internal: `http://192.168.11.250:8545` (VMID 2500 - internal only, not public)
- Public: `https://rpc-http-pub.d-bis.org` (public RPC endpoint)
- Permissioned: `https://rpc-http-prv.d-bis.org` (permissioned/private RPC endpoint)
**What RPC Provides**:
- ✅ Chain ID: `eth_chainId` → Returns `0x8a` (138 in hex)
- ✅ Block data: `eth_getBlockByNumber`
- ✅ Transaction data: `eth_getTransactionByHash`
- ✅ Account balances: `eth_getBalance`
- ✅ Contract calls: `eth_call`
- ✅ Transaction submission: `eth_sendTransaction`
**What RPC Does NOT Provide**:
- ❌ Network name ("DBIS Chain")
- ❌ Currency symbol ("ETH")
- ❌ Block explorer URL
- ❌ Token lists
- ❌ Chain metadata
**Key Point**: RPC only provides **blockchain data**, not **network metadata**. MetaMask needs chainlist to know the network name and other metadata.
---
### 3. Blockscout - Block Explorer
**Location**: `https://explorer.d-bis.org` (VMID 5000)
**What Blockscout Provides**:
- ✅ Block explorer UI
- ✅ API endpoints: `/api/v2/blocks`, `/api/v2/transactions`, `/api/v2/addresses`
- ✅ Token information: `/api/v2/tokens`
- ✅ Stats: `/api/v2/stats`
**What Blockscout Does NOT Provide**:
- ❌ Chain metadata (name, RPC URLs, etc.)
- ❌ Chainlist configuration
- ❌ Token lists (Uniswap format)
**How Blockscout Relates to Chainlist**:
1. Blockscout URL is **stored in** `chain-138.json` as the explorer
2. When MetaMask adds the network, it uses this URL for "View on Explorer"
3. Blockscout itself doesn't know about chainlist or provide chain metadata
**Blockscout Token Data**:
- Blockscout has token data in its database (from indexing)
- Format: Blockscout API format (different from Uniswap token list format)
- Example: `/api/v2/tokens/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`
**Key Point**: Blockscout is the **explorer**, not the **source of chain metadata**. It's referenced in chainlist, but doesn't provide chainlist data.
---
### 4. Token Lists - Token Metadata
**Location**:
- Local: `token-lists/lists/dbis-138.tokenlist.json`
- Public: ✅ **HOSTED** at: https://raw.githubusercontent.com/Defi-Oracle-Meta-Blockchain/metamask-integration/main/config/token-list.json
**What Token Lists Provide**:
- ✅ Token names (e.g., "Wrapped Ether")
- ✅ Token symbols (e.g., "WETH")
- ✅ Decimals (e.g., 18)
- ✅ Logo URLs
- ✅ Token tags/categories
**Current Tokens in List**:
1. WETH9: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`
2. WETH10: `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f`
3. ETH/USD Oracle: `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6`
**How MetaMask Uses It**:
1. User adds token list URL in MetaMask Settings
2. MetaMask fetches the JSON file
3. Tokens appear automatically when on ChainID 138
4. Token balances come from RPC, metadata from token list
**Key Point**: Token lists are **separate** from chain metadata. They provide token information, not network information.
---
## 🔗 How They Work Together
### Scenario 1: User Adds Network to MetaMask
**Without Chainlist Submission** (Current):
```
User → MetaMask → Add Network Manually
→ Enters: RPC URL, Chain ID, Network Name, Explorer URL
→ MetaMask connects to RPC (http://192.168.11.250:8545)
→ Verifies Chain ID matches (0x8a)
→ Stores network config locally
→ Uses Blockscout URL for "View on Explorer"
```
**With Chainlist Submission** (Future):
```
User → chainlist.org → Search "DBIS" → Click "Add to MetaMask"
→ MetaMask reads chain-138.json from Chainlist
→ Adds network with all settings
→ Connects to RPC (https://rpc-http-pub.d-bis.org)
→ Verifies Chain ID matches
→ Uses Blockscout URL from chainlist config
```
### Scenario 2: User Views Transaction
```
User → MetaMask → Click "View on Explorer"
→ MetaMask opens: https://explorer.d-bis.org/tx/{hash}
→ Blockscout displays transaction details
→ Blockscout API provides the data
```
### Scenario 3: User Sees Token Balance
```
User → MetaMask → View Token Balance
→ Token metadata (name, symbol, logo) from Token List
→ Token balance from RPC (eth_call to token contract)
→ Click "View on Explorer" → Opens Blockscout
```
---
## 📍 Where Each Piece Lives
| Component | Location | Status | Purpose |
|-----------|----------|--------|---------|
| **Chain Metadata** | Chainlist.org | ❌ Not submitted | Network name, RPC URLs, explorer |
| **Chain Config File** | `token-lists/chainlists/chain-138.json` | ✅ Ready | Local copy, needs submission |
| **RPC Endpoint** | VMID 2500 (port 8545) | ✅ Running | Blockchain data |
| **Blockscout** | VMID 5000 (port 4000) | ✅ Running | Block explorer |
| **Token List** | `token-lists/lists/dbis-138.tokenlist.json` | ✅ Ready | Token metadata |
| **Token List URL** | (Not yet hosted) | ❌ Missing | Public URL for MetaMask |
---
## 🎯 Key Takeaways
1. **Chainlist.org is the primary source** for network metadata that MetaMask uses
2. **RPC provides blockchain data**, not network metadata
3. **Blockscout is referenced** in chainlist as the explorer, but doesn't provide chain metadata
4. **Token lists are separate** from chain metadata and provide token information
5. **ChainID 138 is NOT yet on Chainlist.org** - needs to be submitted
6. **Token list is NOT yet hosted** - needs public URL
---
## 🚀 Next Steps to Complete Integration
1. **Submit to Chainlist.org**
- Fork https://github.com/ethereum-lists/chains
- Add `chain-138.json` to repository
- Create pull request
- Once merged, ChainID 138 will be discoverable
2. **Host Token List**
- Deploy `dbis-138.tokenlist.json` to public URL
- Options: GitHub Pages, GitHub Raw, or custom domain
- Add URL to MetaMask Settings → Token Lists
3. **Link Token List in Chainlist** (Optional)
- Add `tokenLists` field to `chain-138.json`
- Users can discover tokens when adding network
---
**Last Updated**: 2025-12-24
**Status**: Analysis Complete