Explorer
The XE block explorer
The XE block explorer is the read-only half of the web UI embedded in every node. It connects to a node's HTTP API to display accounts, blocks, pending sends, frontiers, leases, providers, peers, conflicts and state chain data.
The explorer and the web wallet are two sections of the same application, shipped inside the xe binary -- there is no separate explorer deployment.
Design
The UI uses a TUI-inspired monospace aesthetic with a dark colour scheme, laid out as a two-tier navigation: a section switcher (explorer / wallet) above a per-section page list.
The explorer is read-only -- it holds no keys and signs nothing.
Features
- Network dashboard with live counters (peers, accounts, blocks, pending, leases, providers), sparklines, a block-rate chart and a recent-blocks table
- Account explorer -- sortable account list, plus per-account balances, multisig keyset, pending receives and recent chain
- Block lookup by hash, rendering every field on the block plus the raw JSON
- Pending transaction tracking across all accounts
- Frontier listing with per-account depth, type and representative
- Conflict view listing open conflicts
- Lease list and detail with consumer, provider, cost, stake, resources and status
- Provider list with capacity and utilisation
- Peer list with peer ID, address, agent version and connection time
- State chain inspector -- tip, recent epochs, recent blocks, block detail, and a KV lookup/browser
- Sortable tables across the list views
- Copy-to-clipboard for addresses and hashes
All monetary values are rendered from uint64 micro-units through helpers that mirror
core/amount.go, so the UI shows the same decimal strings as the node and the CLI.
Tech stack
There is no build step and no framework. The web/ directory in xeprotocol/core is
both the source and the embedded artefact.
| Component | Purpose |
|---|---|
| Plain HTML | One index.html per page |
ES modules (assets/*.js) | Page logic, served as-is |
CSS (assets/style.css) | Styling |
Go embed.FS | Packs the directory into the xe binary |
Serving the UI
The UI is served by the node itself:
xe node --ui --ui-port 8000 --ui-bind 127.0.0.1The UI handler serves the static files and reverse-proxies /api/* to the node's HTTP
API, so the browser stays same-origin:
Browser → UI server (:8000) → /api/* → node HTTP API (:8080)
→ /* → embedded static filesGET /features.json reports which optional features are enabled (wallet, faucet) so
the navigation can hide links that would not work. --wallet=false serves 404 for
/wallet and /wallet/*, leaving only the explorer.
[!TIP] Developing against the UI
--ui-dir <path>serves the UI from disk instead of the embedded filesystem, so edits are picked up on reload without rebuilding the binary.
Both --api-bind and --ui-bind default to 127.0.0.1. Public deployments put a
reverse proxy in front rather than binding the node directly to a public interface.
See also
- Explorer Pages -- detailed page-by-page reference
- API Reference -- HTTP endpoints the explorer consumes
- Web Wallet -- the wallet section of the same UI