# 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.