Zeqron

Explorer

Architecture · Pre-testnet·Env: dev (Dev)

Explorer API

Routes that exist in this app. Partial = bridge may return empty / error pre-testnet.

Lab base

http://localhost:3055

Format

JSON / Prometheus text

Auth

None (lab / controlled access)

Endpoints

Response shapes

Canonical TypeScript lives in zeqron-explorer/src/lib/types.ts. Field presence depends on the bridge — partial is expected.

Vertex (Block)

id, height, round, hash, proposer, parentIds[], txCount, status: pending|finalized|anchor, signature

Validator

id, name?, status, stake?, uptime?, blocksProposed?, version?, peerCount?

LabMetrics

online, total, aggregate{maxRound,sumPeers,maxUptimeSeconds}, nodes[{port,ok,peers,round,…}]

SSE stream

GET /api/stream/vertices polls the bridge and emits initial then incremental events. Disconnects if the bridge is down — not a guaranteed pub/sub bus.

// Browser EventSource against Explorer SSE proxy
const es = new EventSource('http://localhost:3055/api/stream/vertices');
es.addEventListener('initial', (e) => {
  const batch = JSON.parse(e.data);
  console.log('initial', batch.length);
});
es.addEventListener('vertex', (e) => {
  const v = JSON.parse(e.data);
  console.log('new', v.round ?? v.height, v.vertex_id ?? v.hash);
});
es.onerror = () => console.warn('SSE disconnected — bridge/poll may be down');

Builder links

Lab runbookStart 4 nodes + explorerTypes sourcesrc/lib/types.ts (in repo)Proto (node)zeqron-protocol crates · explorer gRPC
gRPC / proto

Repo: zeqron-protocol/crates (explorer services) · client bridge: zeqron-explorer/src/lib/grpc-client.ts · SDK stubs: zeqron-explorer/src/lib/sdk/

Quick start
// JavaScript / Node.js
const res = await fetch('http://localhost:3055/api/vertices?limit=10');
const vertices = await res.json();
console.log(vertices);

Spec: zeqron-explorer/openapi.yaml. Dashboard stats are composed client-side; /api/anchors is heuristic only.

Operator runbook → /lab