Docs / Status

Status

What is actually producing blocks and serving this explorer. Refreshes every 15 seconds.

All watched components are up.

Explorer

up

This UI.

Version
v0.2.42
SHA
80424f59
Memory
175.5 MiB
API cache
0

Metrics

2d

up

Producing blocks.

Version
v2026.9.25
SHA
e33f1b9e
Block
776077
Tip age
1 s
Producer tick
1 s
PQ NIF
loaded

Metrics

tx generator

up

Submitting from the local gen_txs pool.

Interval
0 ms
Eth pool
100
Tron pool
100
Max inflight
20
Max tx raw
1
Submitted
474799
Skips
12303
In flight
3853
Last ok
0 s

Metrics

2d-hsm

up

Armed; producer UDS is up on the 2d host (host-side SIGN_BLOCK, not in-enclave).

Version
v0.1.0
SHA
e0705a664044
Armed
yes
Producer UDS
yes
Last SIGN_BLOCK
1 s

Metrics

OPA

up

HTTP policy API (v1/data). Not Go runtime.

v1/data 200
7
v1/data non-2xx
0

Metrics

Explorer metrics
MetricValueMeansExpect
frontend_ex_cache_swr_entries 0 Entries in the stale-while-revalidate cache. small integer. 0 is OK.
frontend_ex_cache_api_entries 0 Entries in the explorer API cache. small integer. 0 is OK on a quiet box.
vm_memory_total_bytes 175.5 MiB BEAM memory for this explorer VM. hundreds of MiB, not climbing without bound.
2d metrics
MetricValueMeansExpect
chain_producer_blocks_total 1756 Blocks this producer process has committed since boot. rising. freeze = not mining (see stalled/idle).
chain_producer_health_poll_ok yes Last producer-health poll (the thing that writes these gauges) succeeded. yes. no = gauges may be stale.
chain_producer_tick_age_seconds 0.0 s Seconds since the last produce_block tick (even if it mined nothing). under 10s on a 2s slot. 1e9 = never ticked this boot.
chain_producer_idle no Producer is ticking but the tip is older than 10s (empty mempool skips empty blocks). no while gen_txs should be landing. yes = generator skip/empty, not a dead producer.
chain_producer_stalled no Producer tick is older than 10s — the GenServer is not looping. no. yes = chain.service hung or not running.
chain_latest_block_age_seconds 0.0 s Seconds since the tip block timestamp. under 10s while traffic is flowing. 1e9 = no blocks.
chain_latest_block_number 776074 Highest history.blocks.number on this node. monotonic, matching the explorer home tip.
chain_pq_verifier_available yes libmldsa65_verify.so is loaded so the producer can check enclave signatures before commit. yes. no = armed producer fail-closes every block (2026-09-21 cutover).
bridge_intent_watcher_last_tick_seconds 24.2 s Seconds since the last IntentWatcher tick. under 60s (interval 30s). 1e9 = never ticked.
bridge_intent_watcher_first_tick_completed yes Watcher has completed at least one successful tick this boot. yes after ~30s. no = watcher never started.
bridge_intent_watcher_stall_ticks 0 Consecutive failed watcher ticks on the same from_block. 0. ≥5 used to fire the stall alert.
bridge_intent_watcher_cursor_lag_blocks 0 ETH finalized head minus IntentWatcher cursor. 0. growing = getLogs/RPC stall (public dRPC 400).
bridge_watchdog_tripped no Bridge watchdog auto-halt fired this process lifetime. no / 0.
tx generator metrics
MetricValueMeansExpect
gen_txs_interval_ms 0 Sleep between gen_txs submissions. 0 = as fast as RPC RTT. 0 on aya (pack toward ~100 TPS).
gen_txs_max_inflight 20 Unmined txs allowed per pool sender. 20 on aya with 100+100 pool.
gen_txs_eth_pool 100 eth_sendRawTransaction sender count. 100 on aya.
gen_txs_tron_pool 100 Tron protobuf sender count. 100 on aya.
gen_txs_max_tx_raw 1 Max raw USDC per transfer (1 recirculates dust). 1 on aya.
gen_txs_log_every 1000 Print one success line every N broadcasts. 1000 with --quiet.
gen_txs_http_only yes Generator is HTTP-only (no second chain supervision tree). yes on aya.
gen_txs_no_faucet yes Generator will not mint; senders must already hold dust. yes on aya.
gen_txs_forever yes Run until SIGTERM. yes for 2d-tx-generator.service.
gen_txs_agent no Also POST /agent/v1/transfers (HSM SIGN_TRANSFER). no until operator.agent_identities is populated.
gen_txs_submitted_total{surface="eth"} 237725 Successful broadcasts this boot, by surface (eth / tron / agent). rising while the unit is packing blocks.
gen_txs_submitted_total{surface="tron"} 237074 Successful broadcasts this boot, by surface (eth / tron / agent). rising while the unit is packing blocks.
gen_txs_submitted_total{surface="agent"} 0 Successful broadcasts this boot, by surface (eth / tron / agent). rising while the unit is packing blocks.
gen_txs_skip_total 12303 Loops with no spendable sender (dust / inflight cap). can rise; a freeze plus last-ok age growing means the pool is dry.
gen_txs_inflight 3853 Local unmined reservations still held. under max-inflight × pool. 0 between blocks is OK.
gen_txs_empty_streak 0 Consecutive empty loops since the last successful broadcast. 0 while submitting. climbing = skip.
gen_txs_last_ok_age_seconds 0.0 s Seconds since last successful gen_txs broadcast. under 15s while packing. 1e9 = none this boot.
2d-hsm metrics
MetricValueMeansExpect
chain_hsm_sign_ok_total 1756 Successful host-side SIGN_BLOCK round-trips this boot. rising while blocks land.
chain_hsm_last_sign_ok_age_seconds 0.0 s Seconds since last successful SIGN_BLOCK on this 2d node. small while producing. 1e9 = none this boot (OK if the producer is idle).
chain_hsm_producer_socket_up yes Host-side producer signer UDS exists (proxy to 2d-hsm). Not an in-enclave scrape. yes when armed. no = SIGN_BLOCK cannot reach the enclave.
chain_hsm_armed yes This 2d node has PRODUCER_HSM_SIGNING_ARMED=true. yes on aya. no = producer fail-closes once a producer is registered.
OPA metrics
MetricValueMeansExpect
http_request_duration_seconds_count{code="200",handler="v1/data",method="get"} 3 OPA HTTP requests to the policy Data API (v1/data). Not Go runtime. v1/data POST 200 rising with bridge/gas-EOA decisions. 5xx = policy HTTP failure.
http_request_duration_seconds_count{code="200",handler="v1/data",method="post"} 4 OPA HTTP requests to the policy Data API (v1/data). Not Go runtime. v1/data POST 200 rising with bridge/gas-EOA decisions. 5xx = policy HTTP failure.

Scrapes stay on loopback (2d /admin/metrics, explorer :9568, OPA :8181, gen_txs :4011). Generator falls back to 2d idle if that scrape is unset. 2d-hsm gauges are host-side from 2d (no in-enclave scrape). OPA shows HTTP policy (v1/data) only.