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.

ComponentPurpose
Plain HTMLOne index.html per page
ES modules (assets/*.js)Page logic, served as-is
CSS (assets/style.css)Styling
Go embed.FSPacks 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.1

The 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 files

GET /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