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

171 lines
8.7 KiB
Markdown
Raw Normal View History

# Explorer + MetaMask Technical Response — 5 Items for Exact Config
**Purpose:** Reply to the technical review so you get exact “do this / set that” config values for the explorer and MetaMask.
---
## Ready-to-send reply (copy-paste all below)
**5 items (send as-is)**
**1) RPC URL used by MetaMask**
- Public (MetaMask / dApps): `https://rpc-http-pub.d-bis.org`
- WebSocket: `wss://rpc-ws-pub.d-bis.org`
- Internal: `http://192.168.11.221:8545`
**2) ChainId**
- Decimal: `138`
- Hex: `0x8a`
**3) Explorer backend stack**
- Backend: **Blockscout** (Docker container on VMID 5000, API on port 4000)
- Frontend: **SolaceScanScout** SPA served by nginx on VMID 5000; frontend calls `/api` (nginx proxy to `http://127.0.0.1:4000`) and uses the same RPC for wallet/fallback
**4) Intended wrapped-native (WETH9) on chain (Chain 138)**
- WETH9: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` (same as Ethereum mainnet **by design**; canonical bytecode verified on 138)
- WETH10: `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f`
- Bridges:
- WETH9 Bridge: `0xcacfd227A040002e49e2e01626363071324f820a`
- WETH10 Bridge: `0xe0E93247376aa097dB308B92e6Ba36bA015535D0`
**5) EIP-1559**
- Yes — blocks include `baseFeePerGas`
**Summary table (paste-friendly)**
| # | Item | Value |
| - | ---------------------- | -------------------------------------------------------------------------- |
| 1 | RPC URL (MetaMask) | `https://rpc-http-pub.d-bis.org` (WS: `wss://rpc-ws-pub.d-bis.org`) |
| 2 | ChainId | Decimal: **138** — Hex: **0x8a** |
| 3 | Explorer backend stack | **Blockscout** (VMID 5000:4000) + **SolaceScanScout** (nginx on VMID 5000) |
| 4 | Wrapped-native (WETH9) | **`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`** |
| 5 | EIP-1559 | **Yes**`baseFeePerGas` present |
**Optional: Backend RPC and API wiring (for "Loading…" fixes)**
- Blockscout env (VMID 5000):
- `ETHEREUM_JSONRPC_HTTP_URL=http://192.168.11.221:8545`
- `ETHEREUM_JSONRPC_WS_URL=ws://192.168.11.221:8546`
- `ETHEREUM_JSONRPC_VARIANT=besu`
- `CHAIN_ID=138`
- Frontend: calls `/api` (same origin on `https://explorer.d-bis.org`); nginx proxies `/api` → Blockscout `:4000`
- TRACE API: enabled on public RPC node (VMID 2201) so Blockscout can index internals/block rewards
---
## 1. RPC URL used by MetaMask
- **Public (recommended for MetaMask / dApps):**
- **HTTPS:** `https://rpc-http-pub.d-bis.org`
- **WebSocket:** `wss://rpc-ws-pub.d-bis.org`
- **Internal (same backend, HTTP only):** `http://192.168.11.221:8545` (VMID 2201, besu-rpc-public-1)
MetaMask and the explorer frontend use the **HTTPS** URL when the site is served over `https://explorer.d-bis.org`; otherwise they fall back to the HTTP URL. The explorer **backend** (Blockscout) uses `http://192.168.11.221:8545` (same node).
---
## 2. ChainId (hex and decimal)
- **Decimal:** `138`
- **Hex:** `0x8a` (also written `0x8A` in some UIs)
---
## 3. Explorer backend stack
- **Backend:** **Blockscout** (Docker container on VMID 5000, API on port 4000).
- **Frontend:** Custom SPA **“SolaceScanScout”** (static HTML/JS in `explorer-monorepo/frontend/public/`), served by nginx on VMID 5000. The frontend calls:
- **Blockscout API** at `/api` (proxied by nginx to `http://127.0.0.1:4000`).
- **RPC** (for fallback / wallet) at `https://rpc-http-pub.d-bis.org` or `http://192.168.11.221:8545` as above.
So: **Blockscout** is the indexer/API; **SolaceScanScout** is the custom frontend branding and UI.
**Screenshots (live UI):** See [../images/README.md](../images/README.md) for image list. Reference images (replace with live captures from https://explorer.d-bis.org/ if desired):
| View | Image |
|------|--------|
| Home (stats, Gas & Network, Latest Blocks/Transactions) | ![Explorer home](../images/explorer-home.png) |
| Blocks list | ![Explorer blocks](../images/explorer-blocks.png) |
| Transactions list | ![Explorer transactions](../images/explorer-transactions.png) |
---
## 4. Intended wrapped-native contract addresses (Chain 138)
Chain 138 intentionally uses the **same addresses as Ethereum mainnet** for WETH9/WETH10 (deployed-at-same-address / CREATE2-style setup). They exist on Chain 138 and are the intended wrapped-native contracts.
| Token / Bridge | Address (Chain 138) | Notes |
|-----------------------|---------------------|--------|
| **WETH9** (wrapped-native) | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | Same as mainnet; canonical WETH9 bytecode verified on 138 (see `smom-dbis-138/scripts/verify-weth9-canonical.js`). |
| **WETH10** | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | Same as mainnet. |
| **WETH9 Bridge** (CCIP) | `0xcacfd227A040002e49e2e01626363071324f820a` | In `config/contract-addresses.conf` as `ADDR_CCIPWETH9_BRIDGE`. |
| **WETH10 Bridge** (CCIP) | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | In `config/contract-addresses.conf` as `ADDR_CCIPWETH10_BRIDGE`. |
So the **intended wrapped-native (WETH9-equivalent) address** on Chain 138 is **`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`**. The explorer is correct to show it; the chain is not “mainnet” but uses that address by design.
---
## 5. EIP-1559 (baseFeePerGas)
- **Yes.** The chain uses EIP-1559; blocks include **baseFeePerGas**.
- Deployment and gas scripts (e.g. in `scripts/archive/consolidated/deploy/`) use `eth_getBlockByNumber("latest", false)` and read `baseFeePerGas` for gas pricing.
- Docs state EIP-1559 is supported (e.g. `docs/11-references/DEFI_ORACLE_META_MAINNET_PROJECT_DESCRIPTION.md`, `docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md`).
---
## Summary table (paste-friendly)
| # | Item | Value |
|---|------|--------|
| 1 | **RPC URL (MetaMask)** | `https://rpc-http-pub.d-bis.org` (WS: `wss://rpc-ws-pub.d-bis.org`) |
| 2 | **ChainId** | Decimal: **138** — Hex: **0x8a** |
| 3 | **Explorer backend stack** | **Blockscout** (API on VMID 5000:4000) + custom frontend **SolaceScanScout** (nginx on VMID 5000) |
| 4 | **Wrapped-native (WETH9) on chain** | **`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`** (same as mainnet by design) |
| 5 | **EIP-1559** | **Yes** — baseFeePerGas present in blocks |
---
## Optional: Backend RPC and API wiring (for “Loading…” fixes)
- **Blockscout env (VMID 5000):**
- `ETHEREUM_JSONRPC_HTTP_URL=http://192.168.11.221:8545`
- `ETHEREUM_JSONRPC_WS_URL=ws://192.168.11.221:8546`
- `ETHEREUM_JSONRPC_VARIANT=besu`
- `CHAIN_ID=138`
- **Frontend:** Calls `/api` (same origin when on `https://explorer.d-bis.org`); nginx proxies `/api` to Blockscout on port 4000.
- **TRACE API:** Enabled on the public RPC node (VMID 2201) so Blockscout can index internal transactions and block rewards (see `explorer-monorepo/docs/RPC_FUNCTIONALITY_AND_BLOCKSCOUT_TRACE.md`).
You can paste the **Summary table** plus the **Optional** paragraph (if they need backend details) into your reply to get the exact explorer env/config, WETH9/WETH10/bridge wiring, and RPC checklist.
---
## Verification: explorer vs this doc
Verification run: config and live endpoints checked against the values above.
### Codebase (matches doc)
| Item | Source | Status |
|------|--------|--------|
| RPC URL (HTTPS/WS) | `explorer-monorepo/frontend/public/explorer-spa.js` | `RPC_FQDN` = `https://rpc-http-pub.d-bis.org`, `RPC_WS_FQDN` = `wss://rpc-ws-pub.d-bis.org`, `RPC_IP` = `http://192.168.11.221:8545` |
| ChainId | same file | `CHAIN_ID = 138`, MetaMask `chainId: '0x8A'` |
| WETH9 / WETH10 | same file | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`, `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` |
| WETH9/WETH10 bridges | same file | `0xcacfd227A040002e49e2e01626363071324f820a`, `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
| Blockscout env | `scripts/run-blockscout-config-direct.sh` | `ETHEREUM_JSONRPC_HTTP_URL=http://192.168.11.221:8545`, `CHAIN_ID=138`, `ETHEREUM_JSONRPC_VARIANT=besu` |
| API proxy | `explorer-monorepo/scripts/fix-nginx-serve-custom-frontend.sh` | `location /api/``proxy_pass http://127.0.0.1:4000` |
### Live endpoints
| Check | Command / URL | Result |
|-------|----------------|--------|
| Explorer API | `GET https://explorer.d-bis.org/api/v2/stats` | 200; `total_blocks`, `total_transactions`, `gas_prices` present |
| RPC chainId | `POST https://rpc-http-pub.d-bis.org` `eth_chainId` | `"result":"0x8a"` (138) |
| EIP-1559 | `POST https://rpc-http-pub.d-bis.org` `eth_getBlockByNumber("latest", false)` | `baseFeePerGas` present in block (e.g. `"0x7"`) |
**Conclusion:** Explorer config and live behaviour match this doc. Use the “Ready-to-send reply” section to respond to the technical review.