blockyard 0.0.1 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +679 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +4 -0
  4. package/README.md +172 -4
  5. package/SECURITY.md +38 -0
  6. package/bin/blockyard.js +40 -0
  7. package/config/pool-map.json +2620 -0
  8. package/docs/API.md +1575 -0
  9. package/docs/ARCHITECTURE.md +1307 -0
  10. package/docs/AUTO-UPDATE.md +269 -0
  11. package/docs/CONFIGURATION.md +840 -0
  12. package/docs/DEFECTS.md +813 -0
  13. package/docs/EFFECTS-AGENTS.md +448 -0
  14. package/docs/GETTING-STARTED.md +202 -0
  15. package/docs/INSTALL.md +490 -0
  16. package/docs/MEASUREMENTS.md +1254 -0
  17. package/docs/PRIVATE-LEADERBOARD.md +230 -0
  18. package/docs/RULES.md +681 -0
  19. package/docs/SECURITY-AUDIT-2026-09-14.md +177 -0
  20. package/docs/SECURITY-AUDIT.md +258 -0
  21. package/docs/SECURITY.md +195 -0
  22. package/docs/STATE-2026-09-09.md +200 -0
  23. package/docs/TROUBLESHOOTING.md +298 -0
  24. package/docs/USER-GUIDE.md +1022 -0
  25. package/package.json +53 -5
  26. package/public/404.html +9 -0
  27. package/public/css/app.css +1785 -0
  28. package/public/index.html +893 -0
  29. package/public/js/about.js +112 -0
  30. package/public/js/agents.js +964 -0
  31. package/public/js/app.js +1312 -0
  32. package/public/js/arkanoid.js +806 -0
  33. package/public/js/blockanoid.js +347 -0
  34. package/public/js/blockout.js +347 -0
  35. package/public/js/blockpack.js +428 -0
  36. package/public/js/blockscene3d.js +2678 -0
  37. package/public/js/breakout.js +224 -0
  38. package/public/js/charts.js +635 -0
  39. package/public/js/depthchart.js +311 -0
  40. package/public/js/details3d.js +2957 -0
  41. package/public/js/explorer.js +405 -0
  42. package/public/js/feepalette.js +149 -0
  43. package/public/js/fmt.js +162 -0
  44. package/public/js/goggles.js +886 -0
  45. package/public/js/kiosk.js +41 -0
  46. package/public/js/login.js +83 -0
  47. package/public/js/markets.js +357 -0
  48. package/public/js/mining.js +1138 -0
  49. package/public/js/panels.js +966 -0
  50. package/public/js/pricechart.js +188 -0
  51. package/public/js/settings.js +1014 -0
  52. package/public/js/tetris.js +226 -0
  53. package/public/js/tetrust.js +356 -0
  54. package/public/js/tetsound.js +175 -0
  55. package/public/login.html +33 -0
  56. package/scripts/blockfile-measure.js +156 -0
  57. package/scripts/browser-check.mjs +286 -0
  58. package/scripts/check.js +173 -0
  59. package/scripts/decode-check.js +81 -0
  60. package/scripts/doc-counts.js +109 -0
  61. package/scripts/donate-qr.py +20 -0
  62. package/scripts/fake-node.js +534 -0
  63. package/scripts/index-bench.js +216 -0
  64. package/scripts/index-benchmark.js +117 -0
  65. package/scripts/index-build.js +40 -0
  66. package/scripts/live-render-check.mjs +89 -0
  67. package/scripts/manage-users.js +132 -0
  68. package/scripts/motion-check.mjs +138 -0
  69. package/scripts/pool-map.js +157 -0
  70. package/scripts/setup.js +410 -0
  71. package/scripts/shots.mjs +272 -0
  72. package/scripts/smoke.sh +327 -0
  73. package/scripts/ui.js +174 -0
  74. package/server/auth/sessions.js +221 -0
  75. package/server/auth/users.js +243 -0
  76. package/server/chain/blockfile.js +234 -0
  77. package/server/chain/index/build.js +193 -0
  78. package/server/chain/index/heights.js +36 -0
  79. package/server/chain/index/live.js +276 -0
  80. package/server/chain/index/rows.js +145 -0
  81. package/server/chain/index/store.js +154 -0
  82. package/server/chain/index/worker.js +109 -0
  83. package/server/chain/tx.js +310 -0
  84. package/server/collect/gbt.js +229 -0
  85. package/server/collect/logparse.js +765 -0
  86. package/server/collect/logtail.js +189 -0
  87. package/server/collect/markets.js +333 -0
  88. package/server/collect/mining.js +333 -0
  89. package/server/collect/monitor.js +2516 -0
  90. package/server/collect/nextblock.js +275 -0
  91. package/server/collect/sync.js +386 -0
  92. package/server/config.js +620 -0
  93. package/server/http/api.js +1275 -0
  94. package/server/http/explorer.js +418 -0
  95. package/server/http/server.js +412 -0
  96. package/server/http/sse.js +176 -0
  97. package/server/http/static.js +212 -0
  98. package/server/main.js +628 -0
  99. package/server/netinfo.js +253 -0
  100. package/server/rpc/allowlist.js +130 -0
  101. package/server/rpc/client.js +414 -0
  102. package/server/store/audit.js +148 -0
  103. package/server/store/history.js +220 -0
  104. package/server/store/ledger.js +290 -0
  105. package/server/store/ring.js +173 -0
  106. package/server/util/fmt.js +29 -0
  107. package/systemd/blockyard.service +100 -0
@@ -0,0 +1,1022 @@
1
+ # BlockYard user guide
2
+
3
+ This guide covers what you see after opening BlockYard in a browser: what each tab
4
+ shows, how to read it, and which controls do what. For installation, configuration
5
+ and the security posture, see the [README](../README.md).
6
+
7
+ BlockYard is read-only. Nothing in this guide changes your node. The only exceptions
8
+ are node actions, which are off unless an operator explicitly enables them (see
9
+ [Admin](#admin)).
10
+
11
+ - [The first five minutes](#the-first-five-minutes)
12
+ - [The header](#the-header)
13
+ - [Overview](#overview)
14
+ - [Block space](#block-space)
15
+ - [Chain & Sync](#chain--sync)
16
+ - [Mempool](#mempool)
17
+ - [Explorer](#explorer)
18
+ - [Markets](#markets)
19
+ - [Kiosk](#kiosk)
20
+ - [Tetrust](#tetrust)
21
+ - [Blockout](#blockout)
22
+ - [Blockanoid](#blockanoid)
23
+ - [Peers](#peers)
24
+ - [Network](#network)
25
+ - [Mining](#mining)
26
+ - [Events](#events)
27
+ - [Node & RPC](#node--rpc)
28
+ - [Admin](#admin)
29
+ - [Reading the data honestly](#reading-the-data-honestly)
30
+ - [Links, URLs and keyboard tips](#links-urls-and-keyboard-tips)
31
+ - [Display settings](#display-settings)
32
+
33
+ ---
34
+
35
+ ## The first five minutes
36
+
37
+ 1. **Check the header.** The `stream` badge should say **live**. Next to it, `rpc`
38
+ shows how long the node took to answer the last call, and `up` shows how long the
39
+ monitor has been running. If the badge says `reconnecting` or `stale`, the numbers
40
+ on screen are not current. See [The header](#the-header).
41
+ 2. **Read the sync strip** at the top of Overview. It names the node, gives its state
42
+ (Synced, Initial block download, Catching up, Stalled, Reorganising, Unknown) and
43
+ shows one progress figure. If the node is syncing, the strip shows the throughput
44
+ and an ETA that states which measurement window it came from.
45
+ 3. **Look at Block flow and Block space**, the two panels at the top of Overview.
46
+ Block flow is the chain as a row of cards: projected blocks, the block being built,
47
+ then the blocks already mined. Block space is a 3D picture of what the next block
48
+ would contain if a miner took the best-paying transactions right now.
49
+ 4. **Hover over things.** Most cards, cubes, candles and chart points have a tooltip
50
+ with the exact figures behind them.
51
+ 5. **Click a block height.** Heights in Block flow, the Last blocks table and elsewhere
52
+ open the block in the [Explorer](#explorer), and every explorer page has its own
53
+ URL you can share.
54
+
55
+ ![The Overview tab](images/overview.jpg)
56
+
57
+ ---
58
+
59
+ ## The header
60
+
61
+ | Item | What it tells you |
62
+ |---|---|
63
+ | **BlockYard v… · build** | The version and build this tab is running. |
64
+ | **Tabs** | One button per page. The Admin tab appears only when accounts are enabled and you are signed in as an admin. The three games live at the end, under the **Diversions** pop-down. |
65
+ | **Node picker** | With one node configured, this is the node's name, with a dot coloured by its state. With several, it is a drop-down listing every node with its sync percentage, so you can see which one needs attention before you pick it. On first load the monitor opens on a node that is syncing, if there is one, and otherwise on the primary node. |
66
+ | **stream** | The live link to the server. `connecting` on load, then `live`. `reconnecting` means the link dropped and the browser is retrying. `stale` means the link is up but no fresh data has arrived for more than 90 seconds. |
67
+ | **rpc** | The node's last RPC round-trip time. It turns red when the average climbs above five seconds. |
68
+ | **up** | How long the monitor process has been running. |
69
+ | **open access** | Shown when the monitor runs without accounts. Anyone who can reach it reads it as a viewer. Hover for details. |
70
+ | **stale build — reload** | Shown when the server has been updated since you loaded the page. Reload to run the current code. |
71
+ | **pause / resume** | Freezes live updates so you can read a moving figure. Charts and panels stop updating and the Block space countdown shows `refresh paused`. **Shift-click** also freezes the event feed. Click again to resume. |
72
+ | **sign out** | Only present when accounts are enabled. |
73
+
74
+ A red bar under the header means the node is not answering RPC, or nothing has
75
+ arrived for the selected node. It says which, and makes clear that everything below
76
+ it is the last state received, not current data.
77
+
78
+ ### The sync strip
79
+
80
+ The sync strip appears at the top of Overview and Chain & Sync. It has one row of
81
+ figures and a thin progress bar.
82
+
83
+ - **The bar's fill** is *blocks held ÷ announced headers*. It is the only figure that
84
+ drives the fill.
85
+ - **The marker on the bar** is the node's own `verificationprogress`, which is
86
+ difficulty-weighted. The two figures measure different things, so they are shown
87
+ separately and never averaged.
88
+ - **The ETA** comes with the measured rate it was computed from. During initial block
89
+ download there is no fallback based on the ten-minute block cadence, and a window
90
+ with less than 60 seconds of history is refused. When the measurement windows
91
+ disagree, the ETA is given as a range.
92
+ - **`detail`** expands the full derivation: height, headers, blocks behind, every rate
93
+ window, the ETA and its basis, tip age, chain size, and every caveat in full.
94
+ **`N notes · show`** does the same.
95
+ - **`also syncing`** buttons appear when another configured node is syncing. Click
96
+ one to switch to it.
97
+ - **Stalled** is claimed only when the connected peers report a tip above the node's
98
+ (`getpeerinfo`). A long gap with the peers agreeing on this tip stays **Synced**, with a
99
+ caveat saying it is a gap on the network rather than a fault of this node. With no peer
100
+ heights at all, the strip says Stalled only after two hours without a block, and the caveat
101
+ says a long gap and a node cut off from its peers cannot be told apart yet.
102
+
103
+ ---
104
+
105
+ ## Overview
106
+
107
+ The landing page. It shows the most important panels from the other tabs in two
108
+ columns.
109
+
110
+ | Panel | What it shows |
111
+ |---|---|
112
+ | **Block flow** | The chain as a row of cards. See [Reading Block flow](#reading-block-flow). |
113
+ | **Block space** | The 3D block-space viewer: the same viewer as the [Block space](#block-space) tab, in a square panel. |
114
+ | **Mempool** | Transaction count, bytes and memory used against the limit, a one-hour sparkline, and the queue measured in blocks: "≈ N blocks at the average size of the last M mined". It divides by blocks actually mined, not by an assumed size. |
115
+ | **Fees** | `estimatesmartfee` targets for 1, 2, 6, 24 and 144 blocks, the pool's minimum fee, and a history chart. A target the estimator has no answer for reads `unset`. |
116
+ | **Last blocks** | Height (links to the explorer), age, the gap since the previous block (amber over 20 minutes, red over an hour), transaction count, size, vsize, fees, minimum fee rate, and the peer that served the block when that is known. |
117
+ | **Monitor events** | The newest events this monitor observed. These are the monitor's own observations, not node log lines. The full feed is on [Events](#events). |
118
+ | **Mined by** | Blocks in the recent window grouped by pool, from coinbase text and a curated label map. See [Mining](#mining). |
119
+ | **What this panel cannot tell you** | Every known data gap for this node, stated. If there are none, it says so. While the server is building the address index, one line here is its progress: the phase, blocks or files done of the total, rows so far, the time left, and `paused while the node's RPC is slow` when the build is holding back for the node. If a build fails, the line says so and gives the command to run by hand. |
120
+
121
+ ### Reading Block flow
122
+
123
+ Block flow reads left to right, from the future into the past.
124
+
125
+ ![Block flow and the block-space viewer](images/overview.jpg)
126
+
127
+ - **Projected blocks** (far left, dashed, labelled `+1`, `+2` …) are the mempool
128
+ sorted by fee rate, with the block currently being built skipped and the rest cut
129
+ into 1,000,000 vB blocks. Each card shows the median fee rate, the fee range, total
130
+ fees, transaction count and an ETA from the measured average block interval. The
131
+ last card (`+N…`) is the rest of the pool. These cards are inference, which is why
132
+ they are dashed and flat. A child paying for its parent can show up one block late,
133
+ because this node's mempool carries no ancestor data.
134
+ - **The block being built** sits just left of the divider. It shows the template's
135
+ height, its age and how long the node took to answer, and a 40-segment meter that
136
+ fills as weight is selected. Each lit segment is coloured by the fee rate of the
137
+ transactions at that point in the block, richest first. The card also shows the
138
+ transaction count, how full the block is, fees, free space, median and maximum
139
+ fee rate, and chips for the marginal fee rate, the spill and how much of the pool
140
+ fits. A **coloured ring** shows how long this block has been accumulating: green
141
+ within the chain's measured average interval, amber beyond it, red once a block is
142
+ due (1.5 times the average). The legend under the row gives the thresholds and the
143
+ minutes since the last block. If the template is behind the tip, the card says
144
+ `stale template`.
145
+ - **The divider** (`pending ⇆ done`) separates work in progress from work the network
146
+ has accepted.
147
+ - **The chain tip and history** run to the right, linked like a chain, because every
148
+ block commits to the one before it. Each card shows the pool, the height (click it
149
+ to open the block in the explorer), how far behind the tip it is, when it was mined
150
+ and the gap before it, size, transactions, fees, sats per transaction, average and
151
+ median fee rate, and a fill bar against the 4,000,000 WU cap. A light block is
152
+ visibly shorter than a full one. The tip has the accent-coloured ring. Hover a card
153
+ for the coinbase text, the label that matched, the hash, and more.
154
+ - A card reading **`awaiting attribution`** or **`not attributed`** is a height whose
155
+ coinbase has not been read yet. Attribution reads one block per poll, so it trails
156
+ the tip. These cards are drawn as placeholders rather than skipped.
157
+
158
+ On first load the row scrolls so that the nearest projected blocks, the block being
159
+ built and the divider are all on screen. After that it keeps wherever you scroll it.
160
+ With `prefers-reduced-motion` set, the numbers stay and nothing animates.
161
+
162
+ ---
163
+
164
+ ## Block space
165
+
166
+ The block-space viewer at full size. Next to it are the block being built, the chain
167
+ tip and a colour legend.
168
+
169
+ ![Block space, Simple](images/block-space-mode1.jpg)
170
+
171
+ ### What the board shows
172
+
173
+ The board shows **the next block's worth of the mempool**: the best-paying
174
+ transactions, up to one block (1,000,000 vB), laid out richest first on a 3D grid.
175
+
176
+ - **Area is vbytes.** Every transaction is a square whose side is a whole number of
177
+ grid units, packed first-fit, richest first.
178
+ - **Colour is fee rate**, in 128 bands from under 0.1 to 2,000 sat/vB and over: sky blue for the
179
+ cheapest, through teal, green, yellow, orange and red, to purple. The **Feerate** legend in
180
+ the side panel gives the bands in sat/vB, from under 0.1 up to 500 and over.
181
+ - **Hover a block** for its transaction id, size and fee rate. Hover works when the
182
+ board is at rest. While blocks are moving, their positions do not match their
183
+ footprints, so the tooltip stays hidden instead of naming the wrong transaction.
184
+
185
+ ### Refreshes and the control bar
186
+
187
+ The board refreshes every **30 seconds**, and a refresh is animated rather than
188
+ redrawn. Blocks rise off the grid, move to their new places in separate height lanes
189
+ so they never collide, and fall back under gravity with a few bounces. The board and
190
+ the camera stay fixed, so the view itself never moves. If a new layout arrives while
191
+ the animation is still running, it waits until the current one has landed.
192
+
193
+ The control bar in the corner of the panel has:
194
+
195
+ - **The countdown**: `next refresh m:ss`, with a fill that shows how much of the wait
196
+ has passed. It shows `refreshing…` while a fetch is under way and `refresh paused`
197
+ while updates are paused.
198
+ - **refresh now**: fetches immediately. It is enabled only when the board is at rest,
199
+ updates are not paused and no refresh is already running. Hover it to see why it
200
+ is disabled.
201
+ - **The mode switch**: see below.
202
+
203
+ ### Viewer modes
204
+
205
+ | Mode | What it draws |
206
+ |---|---|
207
+ | **Simple** | The richest ~400 transactions as cubes, as tall as they are wide, with the rest of the block as equal smaller pieces. The best view for seeing which transactions dominate. |
208
+ | **Detailed** | Every transaction in the next block, one square each on a 96-unit grid, drawn as low slabs so that thousands of them stay readable. The best view for the block's texture. |
209
+
210
+ ![Block space, Detailed](images/block-space-mode2.jpg)
211
+
212
+ Your choice is remembered in this browser and applies to every Block space viewer:
213
+ Overview, Block space, Mempool, Mining and Kiosk. When you switch to Detailed, the Simple
214
+ picture stays on screen until the first full read arrives. Transactions present in
215
+ both modes move to their new places rather than disappearing and reappearing.
216
+
217
+ ### Idle effects
218
+
219
+ While the board is at rest, one effect plays every seven to thirteen seconds — the first
220
+ about a second after the board lands — and never one that has played within the last twelve
221
+ (**No repeats within**, 0 up to the length of that board's list). There are **30**, and each has its own switch. **Each board
222
+ has its own list**: the Block space board's switches are the **Space effects** tab, the
223
+ Markets board's are the **Market effects** tab, and each tab has its own no-repeat window, so
224
+ trimming one board's effects leaves the other's alone.
225
+
226
+ | | |
227
+ |---|---|
228
+ | **Ripple**, **Outline sweep**, **Scan line**, **Tide** | fronts crossing the board: a spreading ring, traced edges, a tight line, a swell that lifts the cubes it passes under |
229
+ | **Cascade**, **Twinkle**, **Sparkle** | the blocks light in fee-rate order; scattered flashes; a constellation, each block its own colour |
230
+ | **Light cycles** | a TRON-style race in blue and orange from opposite edges, leaving light walls, until one crashes and de-rezzes |
231
+ | **Lightning ball** | a pale plasma ball entering from off-screen, tracing the grid, throwing bolts and trailing electrical dust |
232
+ | **Shockwave**, **Nova**, **Fireworks**, **Solar flare** | a hard ring that throws blocks into the air; an implosion then a brighter blast; three bursts; one block going supernova |
233
+ | **Wave**, **Quake**, **Checkerboard**, **Combo chain** | crests rolling across; the board shaking itself out; squares flipping against each other; a chain reaction down the diagonal |
234
+ | **Code rain**, **Radar**, **Vortex** | a drop falling down every column; a sweep hand with a phosphor tail; spiral arms draining inward |
235
+ | **Power-up**, **Aurora**, **Plasma** | the board charging from the floor up in gold; drifting curtains of colour; the demoscene plasma |
236
+ | **Centipede**, **Interception**, **Collapse** | a body that weaves down the board and splits in two; arcs raining down against interceptors rising to meet them; the board giving way from a point, cubes collapsing outward |
237
+ | **Tractor beam** | a UFO that draws the tallest transaction up into its beam, flies off with it and drops it back under gravity |
238
+ | **Ball lightning** | a plasma sphere in a nebula drifting across the whole view from off-screen to off-screen, its arcs electrifying the blocks they strike — and half the arcs chain on from the struck block to another as a green discharge, half of those on to a third; on Markets it flies through the chart, striking candles and charging the price line where it passes |
239
+ | **Energy pulse** | the surge that runs the neon price line on Markets, electric blue behind its head |
240
+ | **Pipe bulge** | on Markets: a ball forced through the price line, the tube swelling around it with a stretched skin; it enters at the line's start at the tube's own size, leaves at its end, and runs quicker downhill than up |
241
+
242
+ They are decoration only: they carry no data, they never play during a refresh, and they
243
+ are switched off entirely under `prefers-reduced-motion`. The Block space list is every effect
244
+ but the two drawn on a price line (**Energy pulse**, **Pipe bulge**). The Markets board is eight
245
+ units deep and as wide as the hours, so everything there moves **along the hours, left or right,
246
+ never toward you**, and lights the candles or the line. Its list is the **twelve** that
247
+ translate to a chart: **Ripple**, **Outline sweep**, **Tide**, **Cascade**, **Twinkle**, **Scan
248
+ line**, **Fireworks**, **Solar flare**, **Wave**, and the price line's own **Energy pulse**,
249
+ **Pipe bulge** and **Ball lightning** (half its Block space size there). Fronts run along the
250
+ chart, rings start on the candle row, the candles light where they stand. Nothing on it waits
251
+ its turn: the pulse, the bulge and ball lightning are picks like any other, and how often you
252
+ see one is the length of the list you leave switched on.
253
+
254
+ The more you leave switched on, the less often you see any particular one — there is still
255
+ only one effect every seven to thirteen seconds. The **all off** button on that tab leaves
256
+ the board completely still without touching anything else.
257
+
258
+ ### The side panel
259
+
260
+ - **Being built**: the template's height and a clock showing minutes since the last
261
+ block (coloured like the Block flow ring), the 40-segment meter, the percentage
262
+ full, the marginal fee rate, transactions, fees, weight, median and maximum fee
263
+ rate, the queued bytes, the queue depth in blocks, and the template's age and cost.
264
+ - **Chain tip**: the pool that mined it and when, a fill bar, the percentage full,
265
+ size, transactions, fees, average and median fee rate, the gap before it and the
266
+ chain's average gap.
267
+ - **Feerate**: the colour legend.
268
+
269
+ ---
270
+
271
+ ## Chain & Sync
272
+
273
+ The chain in detail. The sync strip is at the top, followed by charts and state
274
+ cards three to a row.
275
+
276
+ | Panel | What it shows |
277
+ |---|---|
278
+ | **Block interval** | Seconds between blocks over the last 24 hours, with the 10-minute target marked. The note gives the median and how many gaps exceeded 20 minutes. |
279
+ | **Block size** | `getblockstats` `total_size`, the sum of transaction sizes, not the serialized block. The note says which basis applies. |
280
+ | **Fees per block**, **Transactions per block** | One point per block. |
281
+ | **Transaction rate** | `getchaintxstats` tx/s, with the window size, transactions in the window and the all-time count. |
282
+ | **Tip progression** | Blocks applied against announced headers. Once the node is synced this is a flat line. |
283
+ | **Chain state** | Chain, height, headers, best hash, tip time and age, progress, size on disk, pruned, chain work, IBD flag. |
284
+ | **UTXO set** | Coins, height, total amount and muhash, with a history chart. These are read only from a node whose `getindexinfo` reports a synced `coinstatsindex`; on any other node `gettxoutsetinfo` would walk the whole UTXO set every minute, so the card says the figures are unindexed instead. |
285
+ | **Difficulty & work** | Difficulty, estimated network hash rate, average interval and reorgs seen. During initial block download the hash rate is withheld and the card gives the reason. |
286
+ | **Block drill-down** | Type a height or block hash, or leave the box blank for the tip, and press **inspect** or Enter. It shows the header and statistics plus the block's txids as buttons. Click one to decode that transaction. Both views link into the explorer. |
287
+ | **Indexes** | Each index the node keeps, its height, and whether it is synced. |
288
+ | **Chain tips** | `getchaintips`: height, branch length, status. |
289
+
290
+ ---
291
+
292
+ ## Mempool
293
+
294
+ | Panel | What it shows |
295
+ |---|---|
296
+ | **Pool usage** | A gauge of memory used against `maxmempool`, next to the transaction count, serialized bytes, memory, limit, pool fees, minimum fee rate, minimum relay fee, unbroadcast count and the OP_RETURN size limit. |
297
+ | **Mempool size** | Transaction count (left axis) and memory (right axis) over time. |
298
+ | **Fee rate distribution** | A histogram of waiting transactions by sat/vB on a log scale. The green bar marks the pool's minimum fee rate. The note gives the median, 90th percentile and maximum. |
299
+ | **Block space** | The same viewer as the Block space tab, smaller, with the same modes and countdown. |
300
+ | **Fee rate vs age** | A sampled scatter of fee rate (log) against time in the pool. Dot area is proportional to vsize. Transactions reporting no entry time are left out and counted in the note. |
301
+ | **Age distribution** | How long transactions have been waiting. |
302
+ | **Fee estimates over time** | Estimates for 1, 2, 6, 24 and 144 blocks, and the pool minimum. |
303
+ | **Fields this node does not report** | The Core `getrawmempool` fields this node leaves out. They are listed by name, and not drawn as empty charts. |
304
+
305
+ ---
306
+
307
+ ## Explorer
308
+
309
+ A block, transaction and address explorer that reads directly from your node. Every
310
+ page has its own URL, so it can be bookmarked or shared.
311
+
312
+ | Route | Page |
313
+ |---|---|
314
+ | `#explorer` | Search box and the latest blocks |
315
+ | `#explorer/block/<height or hash>` | A block. Add `/<page>` for later pages of its transactions. |
316
+ | `#explorer/tx/<txid>` | A transaction |
317
+ | `#explorer/address/<address>` | An address. Add `/<page>` for later pages. |
318
+
319
+ ### Search and the home page
320
+
321
+ Type a **block height, block hash, transaction id or address** and press Enter or
322
+ **Search**. If nothing matches, a message says so.
323
+
324
+ The home page shows the latest blocks as a row of **cubes coloured by median fee
325
+ rate**. Each cube shows the median and fee range, size, transaction count, age and the
326
+ pool that mined it. Below the cubes is a table of recent blocks with height, time
327
+ mined, pool, transactions, weight and fees. Click a cube or a height to open the
328
+ block.
329
+
330
+ ![Explorer home](images/explorer-home.jpg)
331
+
332
+ ### Transaction page
333
+
334
+ ![A transaction](images/explorer-tx.jpg)
335
+
336
+ - **Title and status pill**: the txid with a copy button. The pill reads
337
+ `N confirmations`, `Unconfirmed`, or `Stale — off the best chain`.
338
+ - **Summary panels**: status (the confirming block, which links to it, or "In the
339
+ mempool"), timestamp, feature badges, size in vB, bytes and weight units, the fee
340
+ and **fee rate**, total in and out, version and locktime. When the server has a
341
+ recent spot price, dollar values appear next to BTC amounts **in green**. A coinbase
342
+ transaction shows the block reward instead of a fee.
343
+ - **Feature badges**: **SegWit**, **Taproot**, **RBF**, **Consolidation**,
344
+ **OP_RETURN**, and **coinbase** where it applies.
345
+ - **Flow**: a diagram of where the value came from and where it went. Each input is a
346
+ band as thick as its share of the value, and the inputs merge into one trunk that
347
+ fans out to the outputs. The fee leaves the trunk as a thin **gold stream**. A
348
+ coinbase input glows gold, and an OP_RETURN output is a grey sliver. Each input band
349
+ links to the transaction that created it, and each output band links to its address.
350
+ Hover a band for its amount. A side with more than 24 entries folds the rest into
351
+ one "N more" band.
352
+ - **Inputs & Outputs**: two columns. Each input has an **arrow button** to the
353
+ transaction whose output it spends. Each output has an arrow button to the
354
+ transaction that **spent** it, or a **glowing dot** if it is still unspent. OP_RETURN
355
+ outputs are marked unspendable. A very large transaction lists its first outputs and
356
+ says how many there are in total. The bar underneath gives the fee and total output.
357
+
358
+ ### Block page
359
+
360
+ ![A block](images/explorer-block.jpg)
361
+
362
+ - **Header**: `Block <height>` with **‹** and **›** arrows to the previous and next
363
+ block, and a confirmations pill.
364
+ - **Stats**: hash (with copy button), timestamp, size and weight, transaction count,
365
+ miner, merkle root, median fee rate, fee span, total fees, subsidy plus fees (with
366
+ dollar values when available), difficulty and nonce, version and bits.
367
+ - **Transactions**: a paged table with each transaction's fee rate, fee, size, value
368
+ out, input and output counts, and feature badges. Use the pager at the bottom to
369
+ move through the pages.
370
+
371
+ ### Address page
372
+
373
+ The address with a copy button, its type, transaction count, then **balance**, **total
374
+ received** and **total sent**. Below that, its **transactions, newest first**, 25 a page,
375
+ with the block each one was confirmed in and the **change** it made to the balance, green for
376
+ money in and red for money out. A transaction the node could not return still shows its
377
+ height and amount, because those are the index's own.
378
+
379
+ **Where this comes from.** Bitcoin Core has **no address index at any setting** — the RPCs an
380
+ explorer would ask (`getaddressbalance`, `getaddresstxids`) belong to insight-style forks, and
381
+ Core answers `Method not found`. So BlockYard builds its own from the node's block and undo
382
+ files, one row per (address, transaction) with the net amount — **a few hours** for the whole
383
+ chain on the installer's default of four workers (30 minutes on 16, on NVMe) and 124 GB — and the
384
+ server keeps it current as blocks arrive. The server
385
+ builds a missing index itself, in the background, the first time it starts with an index
386
+ directory configured (`scripts/index-build.js` does the same by hand). Balances are checked
387
+ against the node's `scantxoutset` to the satoshi. See
388
+ [Building the address index](INSTALL.md#building-the-address-index).
389
+
390
+ **Received** and **sent** are sums of each transaction's *net* for the address, so a
391
+ transaction that both paid and spent it counts once, by its net — not the gross figures an
392
+ explorer that stores every output separately would show.
393
+
394
+ The page says when the index is **behind** the node (it catches up within a poll, 30 s) or
395
+ has **stopped following** — which happens after a reorganisation deeper than the blocks it
396
+ still holds in its tail, and means a rebuild.
397
+
398
+ **While the index is being built** (BlockYard builds a missing one itself when it starts), the
399
+ page reads **not indexed** and says so in a note with the phase, the progress, the rows so far
400
+ and the time left; the Overview's "what this panel cannot tell you" box shows the same line, and
401
+ adds `paused while the node's RPC is slow` whenever the build is holding back so the node keeps
402
+ answering. A notification appears in every open tab when the build starts, when it finishes and
403
+ if it fails; on finish the page fills in with no restart. The build does not resume after the
404
+ server is stopped: the next start begins it again.
405
+
406
+ **Without an index configured**, the address and its type are still confirmed
407
+ (`validateaddress` needs none), and balance, totals and history read **not indexed**. It does
408
+ not show zero, and it does not print the node's error where a figure belongs: nothing counted,
409
+ so nothing is claimed.
410
+
411
+ Below the transactions, the address's **unspent outputs** — each output that paid it and is still
412
+ in the node's UTXO set (less what the mempool already spends), with its block and value; the
413
+ **Unspent outputs** figure in the summary is their count. The list is made for an address with
414
+ up to 100 transactions; a longer history says `not listed` instead, and shows no count.
415
+
416
+ **Not yet:** the address's transactions still in the mempool.
417
+
418
+ **Requirements:** transaction pages rely on the node's transaction index (`txindex=1`), which
419
+ Core supports.
420
+
421
+ ---
422
+
423
+ ## Markets
424
+
425
+ The BTC/USD price from five exchanges' public APIs. The server fetches market data
426
+ **only while someone is reading it** — the Markets or Kiosk tab, or Overview, whose price
427
+ line (**Display settings → Markets & Price → Price line on Overview**, on by default) reads
428
+ the same feed — and stops about ten minutes after the last request. Switch that line off
429
+ and, with no one on Markets or Kiosk, the monitor makes no exchange requests at all.
430
+
431
+ ![Markets](images/markets.jpg)
432
+
433
+ ### The price chart
434
+
435
+ The price panel draws the selected exchange's **hourly candles** in one of two views,
436
+ chosen with the **2D / 3D** buttons in the toolbar and remembered (**Display settings →
437
+ Markets & Price → Price view**). **2D**, the default, is the flat candlestick chart
438
+ described below. **3D** draws the same hours on the same 3D engine as Block space, from a
439
+ low camera looking at the chart from the side.
440
+
441
+ - Each hour is a candle **floating at its price**. The body runs from open to close
442
+ (green if the hour closed up, red if down) and a thin wick runs from the hour's low
443
+ to its high.
444
+ - A steady **neon-yellow line** joins each hour's close.
445
+ - The **volume** band runs along the bottom.
446
+ - **Price levels and hours are labelled on the board**, with the last price
447
+ highlighted.
448
+ - The background is a star field. The lighting comes from the front right, so the
449
+ newest hours are brightest and older hours are dimmer.
450
+ - **Hover a candle** for its exchange, hour, open, high, low, close, change and volume.
451
+ - The legend beside the board gives the price range from floor to top.
452
+
453
+ The board shows at most the last 72 hours; the flat chart covers the full selected
454
+ range.
455
+
456
+ ### Controls and summary
457
+
458
+ - **Exchange buttons**: Coinbase, Kraken, Bitstamp, Bitfinex, OKX. Only exchanges
459
+ with candle data are listed. The selected exchange provides the candles, and the
460
+ others appear on the flat chart as lines.
461
+ - **Range**: **24 h**, **48 h** or **7 d**.
462
+ - **View**: **2D** or **3D**. One at a time; they draw the same hours.
463
+ - **Summary strip**: the **USD median** across books, the **spread across
464
+ exchanges**, **24 h volume**, and how many USD books are reporting.
465
+
466
+ ### The flat candlestick chart
467
+
468
+ A conventional price chart with the price axis on the right, the time axis in UTC
469
+ (midnights carry the date), candles, volume, and a dashed line at the last price.
470
+ The other exchanges are thin coloured close lines, named at the top right. Move the
471
+ pointer over it for a **crosshair** and an **OHLC readout** of that hour at the top
472
+ left. The readout shows the latest hour when the pointer is elsewhere.
473
+
474
+ ### The exchange table
475
+
476
+ One row per exchange: pair, **last**, **bid**, **ask**, **spread** (in dollars and
477
+ basis points), **24 h change**, 24 h low–high **range**, 24 h **volume**, and when it
478
+ last updated, or the exchange's **error** if it did not answer.
479
+
480
+ ### Order book depth
481
+
482
+ Cumulative order-book depth against price, read every 30 seconds while the tab is
483
+ open.
484
+
485
+ - **Bids** (green) accumulate downward from the best bid. **Asks** (red) accumulate
486
+ upward from the best ask. Each exchange's book is a faint line, and the **total**
487
+ across all books is the bright line.
488
+ - The **dashed line** is the total as it stood N minutes ago.
489
+ - **Change bars** show how much was added (blue) or pulled (orange) at each price
490
+ since then, on a **symmetric-log** axis on the right.
491
+ - **Pickers**: `change bars for the last` **1m / 5m / 10m / 30m / 1h**, and `price
492
+ window` **±1% / ±2.5% / ±5% / ±10%**.
493
+ - **Shallow books** end where the exchange's book ends, marked `<exchange> ends`.
494
+ Beyond that point the total still counts what that book had reached, so the total
495
+ there is a **lower bound** and is drawn **dotted**. The readout says "at least".
496
+ - With the pointer off the chart, the readout at the top gives the mid price and the
497
+ bids and asks within 1% and 5%. Move the pointer to read the cumulative depth,
498
+ the change at that price, and each exchange's figure there.
499
+ - Until a snapshot of the chosen age exists, the note says the change bars are
500
+ waiting.
501
+
502
+ **OKX quotes USDT, not USD**, so it is left out of the USD median and the
503
+ cross-exchange spread. It is included in the depth total.
504
+
505
+ ---
506
+
507
+ ## Kiosk
508
+
509
+ A wall display. Four panels fill the screen: the **3D Markets board**, a **Price &
510
+ order book depth** panel, the **Block space** board and **Block flow**.
511
+
512
+ ![Kiosk](images/kiosk.jpg)
513
+
514
+ - **Markets** is the same 3D board as the Markets tab. Its title names the exchange,
515
+ pair, hours shown and last price.
516
+ - **Price & order book depth** shows the **USD median** in neon yellow with its 24 h
517
+ change and how recently the data updated, and under it the **order book depth chart**:
518
+ cumulative bids in green and asks in red against price, every exchange's book faintly
519
+ and their total brightly, fixed at ±2.5% around the mid. The 24 h high, low, volume,
520
+ spread and the per-exchange table are deliberately *not* here — a wall display is read
521
+ from across a room, where a four-column table is unreadable and the shape of the book
522
+ says more than a spread figure. All of that is still on the **Markets** tab.
523
+ - **Block space** is the same viewer as everywhere else, with its countdown,
524
+ **refresh now** button and mode switch.
525
+ - **full screen** in the corner puts the kiosk into browser full screen. Press it
526
+ again or Esc to leave.
527
+
528
+ Having the Kiosk open counts as viewing Markets, so exchange data keeps flowing while
529
+ it is on screen.
530
+
531
+ ---
532
+
533
+ ## Tetrust
534
+
535
+ A playable Tetris, built on the same 3D engine as everything else, under **Diversions** at the end
536
+ of the nav — *trust, but verify*: every line you clear is a block you verified. The well is the block-space board, the pieces
537
+ are the same stones, and the sky behind them is the same turning galaxy.
538
+
539
+ ![Tetrust](images/tetrust.jpg)
540
+
541
+ ### Playing
542
+
543
+ | Keys | |
544
+ |---|---|
545
+ | **←** **→** or **A** **D** | move left and right |
546
+ | **↑**, **W** or **X** | rotate |
547
+ | **Z** or **Q** | rotate the other way |
548
+ | **↓** or **S** | soft drop (one row, one point) |
549
+ | **space** | hard drop (straight down, two points a row) |
550
+ | **P** or **Esc** | pause and resume |
551
+ | **Enter** | start, or resume when paused |
552
+
553
+ A wireframe on the floor of the well shows where the falling piece will land — neon blue until
554
+ you change it under **Display settings → Tetrust → Landing marker**. Cleared lines fly up off the
555
+ top of the screen.
556
+
557
+ **It pauses when you look away** — another browser tab, or another tab of this monitor —
558
+ and waits on a **resume** button, so a game is never lost to reading the Mempool page.
559
+
560
+ ### Scoring
561
+
562
+ The classic table, multiplied by the level: **100 / 300 / 500 / 800** for one, two, three or
563
+ four lines at once. Four at once is worth well over four singles, which is the whole reason
564
+ to leave a column open and wait for the long piece. Soft drops pay a point a row, hard drops
565
+ two. Every ten lines is a level, and each level drops the pieces 65 ms a row faster, down to
566
+ a floor of 80 ms.
567
+
568
+ **High scores** are kept in your browser — top ten, with the lines, level and date. Nothing
569
+ is sent to the server, and they are not shared between browsers or machines.
570
+
571
+ ### The switches on the panel
572
+
573
+ Four buttons under the score, which are the same settings as **Display settings → Tetrust**,
574
+ so a change in either place shows in both:
575
+
576
+ | | |
577
+ |---|---|
578
+ | **★ stars** | the star field across the whole panel |
579
+ | **🌀 galaxy** | the spiral galaxy in it, turning |
580
+ | **♪ music** | Korobeiniki, the folk tune everyone knows as the Tetris theme, synthesised in the browser with oscillators — there is no audio file to download |
581
+ | **♫ sound** | move, rotate, drop, lock, line clear, level up and game over |
582
+
583
+ Browsers only allow sound to start after you interact with the page, so the music begins
584
+ when you press **play**, not when the tab opens.
585
+
586
+ ---
587
+
588
+ ## Blockout
589
+
590
+ Breakout, on the same 3D engine, under **Diversions** at the end of the nav. The wall is made of
591
+ block-space stones — one grid cell each, so a brick *is* an engine tile — and the panel behind it
592
+ is the same turning galaxy as everywhere else. The ball is drawn round rather than as a block.
593
+
594
+ ### Playing
595
+
596
+ **The bat follows your mouse.** Move the pointer across the court and the bat goes where it is;
597
+ click to serve. If you would rather use the keyboard, **←** **→** or **A** **D** move it and
598
+ **space** serves.
599
+
600
+ | Keys | |
601
+ |---|---|
602
+ | **mouse**, **←** **→**, or **A** **D** | move the bat |
603
+ | **click** or **space** | serve the ball |
604
+ | **P** or **Esc** | pause and resume |
605
+ | **Enter** | start, or resume when paused |
606
+
607
+ Like Tetrust, it pauses when you look away — another browser tab, or another tab of this monitor.
608
+
609
+ ### Scoring
610
+
611
+ Where the ball lands on the bat decides where it goes: dead centre sends it straight up, the edges
612
+ fire it off at an angle. That one rule is what makes Breakout a game of aim rather than reflexes,
613
+ and it is worth practising on purpose.
614
+
615
+ The wall is six rows, cheap at the bottom and dear at the top — **1, 1, 3, 3, 5, 7** points a
616
+ brick — so the reward for digging a channel up one side and letting the ball loose in the roof is
617
+ the same as it was in 1976. You get **three balls**; clearing the wall starts the next level with a
618
+ faster ball and your score kept. High scores are kept in your browser, top ten, and are not sent
619
+ anywhere.
620
+
621
+ ### The switches on the panel
622
+
623
+ **★ stars** and **🌀 galaxy** for the sky behind the court, **◉ neon** to draw the wall, the bat and
624
+ the ball as dim bodies under lit tubes, and **♫ sound** for the bat, the bricks, the walls and a
625
+ lost ball. They are the same settings as **Display settings → Blockout**, so a change in either
626
+ place shows in both; the colour and brightness of the neon live on that tab.
627
+
628
+ ---
629
+
630
+ ## Blockanoid
631
+
632
+ Arkanoid, on the same 3D engine, under **Diversions**. Blockout with the arcade's own ideas put
633
+ back: a different wall every level, bricks that survive being hit, and capsules that fall out of
634
+ what you break. The court is narrower and taller than Blockout's, which is what gives you room to
635
+ dig a channel up the side.
636
+
637
+ ### Playing
638
+
639
+ **Vaus follows your mouse.** Click to serve, or use **←** **→** / **A** **D** and **space**. The
640
+ laser, once you have caught it, **fires itself**.
641
+
642
+ | Keys | |
643
+ |---|---|
644
+ | **mouse**, **←** **→**, or **A** **D** | move Vaus |
645
+ | **click** or **space** | serve the ball |
646
+ | **↑**, **W**, or **right-click** | fire early — the laser fires on its own anyway |
647
+ | **P** or **Esc** | pause and resume |
648
+ | **Enter** | start, or resume when paused |
649
+
650
+ ### The wall
651
+
652
+ Three kinds of brick, and telling them apart is most of the game:
653
+
654
+ | Brick | What it does |
655
+ |---|---|
656
+ | **Coloured** | Breaks in one hit and pays by colour, 50 for white up to 120 for yellow. |
657
+ | **Silver** | Takes **two** hits, and one more every four levels. It starts dark and **lightens with every hit**; at its lightest, the next strike breaks it. It sinks as it wears, too, so the cue survives a screen you cannot read colour on. Pays 50 times the level. |
658
+ | **Gold** | Never breaks and pays nothing. It is scenery — a wall is cleared when the breakable bricks are gone, so gold never traps you. |
659
+
660
+ Six walls ship, and past the sixth they cycle with tougher silver each time.
661
+
662
+ ### Capsules
663
+
664
+ A broken brick may drop one, and only **one is on the court at a time** — which is what makes
665
+ taking it a decision rather than a reflex. Catch it with Vaus. Every capsule pays 1000 points.
666
+
667
+ **Nothing lasts for ever.** Laser, wide, catch and slow each run for **30 seconds**, and the
668
+ heads-up display counts each one down. Three balls and the extra life are one-shot — they have
669
+ nothing to expire. Losing a ball, or a minion reaching Vaus, clears everything you were carrying.
670
+
671
+ | | Capsule | What it does |
672
+ |---|---|---|
673
+ | **L** | Laser | Vaus turns red and can shoot. The bat itself tells you what it can do. |
674
+ | **E** | Enlarge | A wider Vaus. |
675
+ | **C** | Catch | The ball sticks where it lands and **rides the bat** as you move — it does not drift while the bat slides under it. Serve it again when you have aimed. When the 30 seconds run out, a ball still held is released rather than left sitting there. |
676
+ | **S** | Slow | Takes the pace off the ball already in play. |
677
+ | **D** | Disrupt | Three balls at once, all at the same speed. |
678
+ | **P** | Player | An extra life. |
679
+
680
+ Laser and Catch put each other away: Vaus does one thing at a time. **The laser fires by itself**
681
+ while it is up — you caught it, you should not also have to hold a key down. Losing a ball, or a
682
+ minion reaching Vaus, puts Vaus back to stock.
683
+
684
+ ### The minions
685
+
686
+ Four kinds of shape drift down the court, each with its own silhouette and its own way of moving —
687
+ a swinging cone, a tumbling cube, a wobbling orb, a zig-zagging molecule.
688
+
689
+ They **cannot pass through bricks**. On a solid wall they pace along the top hunting for a way
690
+ down, so breaking the wall opens their path as well as yours. The ball and the laser destroy one for
691
+ 200 points, and the ball **bounces off** it rather than carrying on through — drop onto one from
692
+ above and you come straight back up. But **a minion that reaches Vaus costs you a life**. Turn them
693
+ off in the settings if you would rather practise.
694
+
695
+ ### Scoring
696
+
697
+ Where the ball lands on Vaus decides where it goes, exactly as in Blockout. You get **three
698
+ balls**; clearing a wall starts the next with a faster ball and your score kept. High scores are
699
+ kept in your browser, top ten, and are not sent anywhere.
700
+
701
+ ### The switches on the panel
702
+
703
+ **★ stars**, **🌀 galaxy**, **◉ neon** and **♫ sound**, as in Blockout. **Capsules** and **minions**
704
+ have switches too, on **Display settings → Blockanoid** — and because those two change the rules
705
+ rather than the look, flipping them reaches the game you are playing, not just the next one.
706
+
707
+ ---
708
+
709
+ ## Peers
710
+
711
+ | Panel | What it shows |
712
+ |---|---|
713
+ | **Connections** | The current count, split into inbound and outbound, plus any connection budget and ban figures the node reports. Anything it does not report is labelled as such. |
714
+ | **Connection history** | Inbound, outbound, total and relaying peers over 24 hours. |
715
+ | **Peers** | The `getpeerinfo` table, refreshed every 15 seconds while the tab is open and sorted by bytes received, most first. Columns: direction, address and network, client (user agent, protocol version, and service badges such as `v2`, `filters`, `pruned`, `bloom`), time connected, last receive and send, bytes received and sent with their current rates, height, clock offset, and whether the peer relays transactions or only blocks. |
716
+
717
+ If the node reports connections but `getpeerinfo` returns no rows, the page says so.
718
+ Peer identity is not guessed from another source.
719
+
720
+ ---
721
+
722
+ ## Network
723
+
724
+ | Panel | What it shows |
725
+ |---|---|
726
+ | **Throughput** | Network-in and disk-write rates with a chart. |
727
+ | **Upload** | What the node reports about its byte counters. If a direction is not measured, the card says so and explains why, rather than charting a zero. |
728
+ | **Traffic accounting** | Cumulative received and written totals, averages since start, and the chain's size on disk. |
729
+ | **Where each number comes from** | The source table for every panel. |
730
+
731
+ ---
732
+
733
+ ## Mining
734
+
735
+ The block under construction and who has been mining.
736
+
737
+ | Panel | What it shows |
738
+ |---|---|
739
+ | **Block flow** | The same Block flow as on Overview. |
740
+ | **Packages in the block being built** | The ancestor graph from `getrawmempool … depends`: a histogram of package sizes, then a table of the top packages with fees, weight, package fee rate, child and parent fee rates, and a small picture of the package's shape. Rows with a child paying at least twice its parent's rate are highlighted as child-pays-for-parent. If every transaction stands alone, the panel says so. That is a real reading, not a missing chart. |
741
+ | **Feerate landscape** | The template's transactions bucketed by sat/vB, with green buckets well above the block's median and red ones below it. |
742
+ | **Pools in this window** | Blocks per pool, share, median fee rate, average weight, and the coinbase tags seen. A pool the curated label map does not recognise is marked `unlabelled` and shown by its raw tag. |
743
+ | **Mempool space** | The Block space viewer, with a note giving how many transactions are drawn and how long ago the pool was read. |
744
+ | **Attribution** | How many blocks have been attributed, the height window, how many labels matched, where the label map came from, and the cost of the block template. |
745
+ | **Detailed** (click to expand) | What this node can and cannot answer about mining, and why. |
746
+
747
+ The block template is requested only while a page that shows it is open, because
748
+ answering it takes the node over a second of its single RPC thread.
749
+
750
+ ---
751
+
752
+ ## Events
753
+
754
+ The monitor's own event stream: what it observed and decided, such as blocks stored,
755
+ reorgs, stalls and nodes becoming unreachable. Node log lines are not shown here. Events of
756
+ kind `index` mark the start, finish or failure of an address index build; those three are also
757
+ shown as a notification in every open tab, because a build takes half an hour.
758
+
759
+ - **Filter text** matches the event text, tag, kind and address.
760
+ - **Severity** (`info`, `warn`, `error`) and **kind** drop-downs narrow the list.
761
+ - **clear** empties the local buffer. This affects only your browser, not the server.
762
+ - The count shows how many events match out of how many are buffered.
763
+
764
+ ---
765
+
766
+ ## Node & RPC
767
+
768
+ How the monitor treats your node, and where every number comes from.
769
+
770
+ | Panel | What it shows |
771
+ |---|---|
772
+ | **RPC etiquette** | The endpoint, calls per second, totals, batches, latency (last, average, slowest), how busy the RPC lane is, errors and timeouts, polls dropped as stale, circuit-breaker trips, and the queue. The monitor keeps one request in flight at a time, because the node's RPC server handles one connection at a time. |
773
+ | **Poll cadence** | Each polling tier's configured interval against its actual interval. If the node is slow, tiers deliberately poll less often and the page says **Cadence is stretched**. |
774
+ | **Data quality** | Every known gap, with when it was flagged. The `rpc-slow` and `rpc-timeouts` flags describe what was measured and do not assert a cause; when an address index build is running on this machine they say so, because it shares the node's disk and pauses while the node is slow. |
775
+ | **Monitor self-telemetry** | The monitor's own memory, CPU and client counts. |
776
+ | **Log tail** | Whether the node's log is being followed, how far it has been read, the lag, and the share of lines matched. It also shows when new bytes last arrived, which distinguishes a quiet node from the monitor following the wrong file. **Log parsing does not currently support Bitcoin Core** -- the parsers target an experimental node's log grammar, so against Core this panel stays empty by design rather than by fault. The log source is off by default. |
777
+ | **Panel sources** | The provenance table: each panel, the RPC method or log source behind it, and why that source was chosen. |
778
+ | **Node connection** | Where this monitor looks for your node: RPC URL, data directory, chain and label. **test connection** probes it and reports the chain and height it got back; **save** stays disabled until a test has answered, and writes this monitor's own configuration file. There is no password field — authentication uses the node's `.cookie` from the data directory. A save takes effect on **restart**, and if the endpoint is set by an environment variable (a systemd drop-in, for example) the page says so, because the environment beats the file. |
779
+ | **RPC console** | Enter a method and, optionally, a JSON array of parameters (for example `[6]`), then press **call** or Enter. Only read-only methods on an allowlist are accepted. Mutating, wallet and peer-control methods are refused regardless of what the node would allow. |
780
+
781
+ ---
782
+
783
+ ## Admin
784
+
785
+ Visible only when accounts are enabled (`BLOCKYARD_AUTH=1`) and you are signed in as an
786
+ admin.
787
+
788
+ - **Users**: every account with its role, creation date and last login, with buttons
789
+ to change the role or disable the account. **generate password** creates a user
790
+ with a random password, which is shown once and never stored in readable form.
791
+ - **Node actions**: the node actions that exist and whether each is enabled for you.
792
+ They are all disabled unless the operator enables them explicitly.
793
+ - **Audit log**: sign-ins, denials and actions, without any credentials, plus how
794
+ much of the log's disk budget is used.
795
+ - **Change own password**: changing it signs out every session, including your own.
796
+
797
+ ---
798
+
799
+ ## Reading the data honestly
800
+
801
+ BlockYard never shows a number it did not measure, and it tells you when a figure is
802
+ old or missing.
803
+
804
+ **Stale is marked, not hidden.** If a chart already has data and fresh samples stop
805
+ arriving, the chart stays on screen and gets a small **amber `no fresh data · <age>`
806
+ pill** in its corner. It is never blanked, and never presented as current. The same
807
+ applies elsewhere:
808
+
809
+ - `stream` changes from `live` to `reconnecting` or `stale`.
810
+ - A red bar under the header appears when the node stops answering or nothing has
811
+ arrived.
812
+ - Block space viewers say when the last pool read failed and the picture may be old.
813
+ - Block flow marks a template that is behind the tip as a `stale template`.
814
+ - The Markets table shows each exchange's age, or its error.
815
+
816
+ **Absent is not zero.** A dash (`–`) means *not reported* or *not measured yet*. It
817
+ never means zero. A chart that has never had data shows a sentence explaining what it
818
+ is waiting for, such as "need two blocks to measure an interval" or "the fee estimator
819
+ has no data yet", rather than a flat line at zero. When the node genuinely reports
820
+ zero or nothing, the page says so in words. For example, the mempool is empty, a
821
+ template contains no packages, or `getpeerinfo` returns no rows while connections
822
+ exist.
823
+
824
+ **Unreported fields are listed, not drawn.** Where this node's RPC omits something
825
+ another node implementation provides, the page names the missing field. See *Fields
826
+ this node does not report* on Mempool, the Upload card on Network, and *What this
827
+ panel cannot tell you* on Overview.
828
+
829
+ **Inference looks different from measurement.** Projected blocks in Block flow are
830
+ dashed and flat, and the depth chart draws a lower-bound total as a dotted line.
831
+
832
+ **Check provenance on Node & RPC.** *Panel sources* lists the source of every panel,
833
+ and *Data quality* lists every known gap with a timestamp. When a figure surprises
834
+ you, check there first. The same provenance table is served as `sources` by
835
+ [`GET /api/config`](API.md#16-telemetry-and-configuration).
836
+
837
+ **Switching nodes wipes the charts.** The pixels on screen belong to the node you were
838
+ looking at, so they are cleared when you pick another. Returning to a node you have
839
+ already viewed restores its charts from the page's cache.
840
+
841
+ ---
842
+
843
+ ## Links, URLs and keyboard tips
844
+
845
+ **Every tab is a URL.** The page you are on is kept in the address bar's hash, so you
846
+ can bookmark it or send it to someone who can reach the same monitor:
847
+
848
+ | Tab | Hash |
849
+ |---|---|
850
+ | Overview | `#overview` |
851
+ | Block space | `#space` |
852
+ | Chain & Sync | `#chain` |
853
+ | Mempool | `#mempool` |
854
+ | Explorer | `#explorer`, `#explorer/block/<height or hash>[/<page>]`, `#explorer/tx/<txid>`, `#explorer/address/<address>[/<page>]` |
855
+ | Markets | `#markets` |
856
+ | Kiosk | `#kiosk` |
857
+ | Tetrust | `#tetrust` |
858
+ | Blockout | `#blockout` |
859
+ | Blockanoid | `#blockanoid` |
860
+ | Peers | `#peers` |
861
+ | Network | `#network` |
862
+ | Mining | `#mining` |
863
+ | Events | `#logs` |
864
+ | Node & RPC | `#node` |
865
+ | Admin | `#admin` |
866
+
867
+ The browser's back and forward buttons move between explorer pages as you would
868
+ expect. The selected node is not part of the URL: a shared link opens on whichever
869
+ node the recipient's monitor picks by default.
870
+
871
+ **Keyboard and pointer:**
872
+
873
+ - **Enter** submits the explorer search, the block drill-down and the RPC console.
874
+ - **Shift-click pause** freezes the event feed as well as the charts.
875
+ - **Hover** almost anything for exact figures: Block flow cards, Block space cubes
876
+ (once the board is at rest), 3D candles, chart points, flow bands in the explorer,
877
+ and the depth chart.
878
+ - **Esc** leaves Kiosk full screen.
879
+ - The **copy** buttons in the explorer copy a hash, txid or address. They also work
880
+ when the monitor is served over plain HTTP.
881
+
882
+ **Motion:** if your system is set to reduce motion, Block flow stops animating and
883
+ the Block space idle effects are switched off. Every number stays.
884
+
885
+
886
+ ## Display settings
887
+
888
+ The gear in the header opens **Display settings**. They are stored on the server, in
889
+ `config/blockyard.json` beside `config/local.json`, so every browser that opens this monitor sees
890
+ the same choices; each browser also keeps a copy so it can draw before the server answers. No
891
+ account is needed (with accounts on, saving needs the admin role). They apply as soon as you
892
+ change them, and **reset** puts every one back to the shipped default.
893
+
894
+ They change how the pages are *drawn*, never what is measured: every figure on the page reads the
895
+ same whatever you choose here.
896
+
897
+ ![Display settings](images/settings.jpg)
898
+
899
+ The panel is **tabbed** — Block space, Sky, Markets & Price, Blockout, Blockanoid, Space
900
+ effects, Market effects and Tetrust. The two **effects** tabs are lists of switches, so they
901
+ also get **all on** and **all off**; twenty-eight of them is a lot of clicking otherwise.
902
+
903
+ ### Block space
904
+
905
+ The 3D board on Overview, Block space, Mempool and Kiosk. If the board is heavy on your machine,
906
+ these are the settings that buy it back, roughly most expensive first:
907
+
908
+ | setting | what it does |
909
+ |---|---|
910
+ | **Shadows** | Cubes casting shadows on the board and on each other. **Off by default**: it is the costliest single effect on a full board — one shadow per resting stone, more in flight — and the board is the first thing most people open. |
911
+ | **Level of detail** | **Simple cubes by default.** *Full* draws every facet and crown. *Simple cubes* drops the crown at every size and draws far fewer facets. *Flat tiles* drops both entirely. The seam around each stone stays under **Stone edges**, in every mode. |
912
+ | **Refresh animation** | *Full flight* is the 20-second choreography of blocks lifting, travelling and landing. *Quick* is about six seconds. *None* lands the new layout at once. |
913
+ | **Idle effects** | The master switch for the effects that play while the board rests. Which of them may play is the **Space effects** tab. |
914
+ | **Stone edges** | The dark seam drawn around each stone. |
915
+ | **Neon grid** | The glowing grid on the board. |
916
+ | **Grid colour** | The grid's colour. One choice drives the whole grid: its lit core, the halo and glow around it, and the brighter line along the board's edge, so they stay a family rather than drifting apart. |
917
+ | **Grid brightness** | How hard the grid burns, from 0 to 2. 1 is the shipped grid; 0 leaves the lines drawn but unlit. |
918
+ | **Neon blocks** | Each block becomes a dim solid body in its own fee-rate colour under lit neon tubes along every edge it shows. Works at every level of detail, Simple cubes included. |
919
+ | **Neon colour from** | *The block's fee-rate colour* keeps the palette, so the tubes still tell you what the block costs. *One colour* lights every block the same. |
920
+ | **Neon colour** / **Neon brightness** | The one colour, when you have chosen it, and how hard the tubes glow (0.2x to 2x). |
921
+ | **Metallic sheen** | A specular highlight along the lit edge of each block's top face and a dark roll-off on the far one. Works on Simple cubes too. |
922
+ | **Metallic finish** | *Chrome* mirrors a horizon in every face, and the reflection slides as the blocks move; *satin* is the softer highlight along the lit edge. Needs Metallic sheen on. |
923
+ | **Departures and arrivals** | How blocks leave and rejoin the board on a refresh. |
924
+ | **Depth** | How much height foreshortens, 0 to 0.001. 0 is the flat parallel camera the board shipped with: a cube is the same size however high it flies. Raise it and a cube's top grows a little wider than its base and a flying block swells slightly as it rises. |
925
+ | **Star field** | On by default. The stars twinkle, so the board keeps repainting while they are on; switch it off to save that. What the stars *look* like is the **Sky** tab. |
926
+ | **Board curve** | How far the board bows toward you. 0 is flat. |
927
+ | **Light** | Where the lamp hangs: *straight above* (the default) lights the whole board evenly, which keeps the front rows as bright as the middle; a corner shades the far slope of the curve and the sides turned away from it. |
928
+
929
+ ### Sky
930
+
931
+ One sky, shared by every board that shows stars — so the density you choose applies to Block
932
+ space, Markets and Tetrust alike. Whether a given board shows it stays that board's own switch.
933
+
934
+ | setting | what it does |
935
+ |---|---|
936
+ | **Star density** / **Star brightness** | How many stars (up to 8x the shipped number) and how strongly they burn. |
937
+ | **Spiral galaxy** | Lays the same stars on slowly turning spiral arms instead of scattering them evenly. One turn takes about a quarter of an hour. |
938
+ | **Galaxy centre** | Behind the board, or any of the four corners. A corner crowds the bright nucleus there and sweeps the arms across the panel. |
939
+ | **Nebulae**, **Dust lanes**, **Star clusters**, **Distant galaxies** | The layers of the sky, each its own switch: gas clouds along the arms, dark ribbons on their inner edges, tight knots out in the halo, and small faint galaxies in the deep field behind everything. |
940
+ | **Star colours** | Warm old stars in the nucleus, blue-white young ones in the arms. Off is one colour of starlight. |
941
+ | **Star glints** | The halo and cross glint on the brightest stars. |
942
+
943
+ ### Space effects and Market effects
944
+
945
+ One tab per board. **Space effects** is a switch for each of the **28** idle effects the Block
946
+ space board can play, listed under [Idle effects](#idle-effects) above; **Market effects** is a
947
+ switch for each of the **12** the Markets board can play (named under Idle effects). Each tab has **all on** and **all off**, and its own
948
+ **No repeats within**: how many other effects must play before one can play again (12 by
949
+ default; 0 allows a repeat straight away).
950
+
951
+ Each tab also sets **its board's cadence**: **Between effects, at least** and **Between
952
+ effects, at most** (seconds; the board rests a random span between the two after each effect
953
+ — 5 to 9 by default, up to ten minutes each on Space effects and five on Market effects; set the floor above the ceiling and they swap).
954
+ The Space effects tab has one more, **First effect after landing** (seconds, give or take a
955
+ third, before the first effect once the blocks land — 1.2 by default, up to two minutes; the
956
+ board re-lays on every refresh, so this is also how soon one follows each refresh). The candle
957
+ board has no landing, so the Markets tab has no such slider: its first effect after a refresh
958
+ keeps the cadence. Push both "between" sliders up for an effect only now and then; the switches
959
+ and **all off** are still the way to a board that never plays one. Turning a tab's switches all off leaves that board
960
+ still; so does the single **Idle effects** switch on the Block space tab, or **Board effects** on
961
+ Markets & Price.
962
+
963
+ ### Markets & Price
964
+
965
+ The candle board on Markets and Kiosk: the **star field** on or off, and **board effects** — one
966
+ switch for everything that moves on this board, both the idle effects and the flight when the
967
+ candles refresh. Which idle effects may play is the **Market effects** tab.
968
+
969
+ Your toolbar choices are remembered too: the **exchange** whose candles are drawn and the
970
+ **range** (24 hours, 48 hours or 7 days). Click them on the Markets page or set them here; either
971
+ way the page opens where you left it.
972
+
973
+ | setting | what it does |
974
+ |---|---|
975
+ | **Price line on Overview** | The USD median, spread, 24 h volume and how many books reported, at the top of Overview. **On by default** — and because it needs the exchange feed, this monitor then contacts five exchanges whenever Overview is open, not only on Markets and Kiosk. Switch it off and the landing page talks to nothing but your node. |
976
+ | **Price view** | Which price panel Markets draws: the *flat chart* (default) or the *3D candle board*. One at a time; the 2D / 3D buttons on the page set the same thing. |
977
+
978
+ ### Blockout
979
+
980
+ The Breakout court. Four of these — **star field**, **spiral galaxy**, **neon bricks** and **sound
981
+ effects** — are the same switches that sit on the game's own panel, so a change in either place
982
+ shows in both. The rest are here only:
983
+
984
+ | setting | what it does |
985
+ |---|---|
986
+ | **Galaxy centre** | Where the spiral's nucleus sits on the panel: behind the court, or any corner. |
987
+ | **Neon colour from** / **Neon colour** / **Neon brightness** | The tubes in each brick row's own colour, or all in one colour of your choosing, at the brightness you set. |
988
+ | **Grid** / **Grid colour** / **Grid intensity** | The grid under the court: whether it is drawn at all, what colour it is, and how strongly it shows. Turn the intensity down for a quieter court, or the switch off for none. |
989
+
990
+ What the sky is *made of* — density, brightness, nebulae, dust and the rest — comes from the
991
+ **Sky** tab, which every board shares.
992
+
993
+ ### Blockanoid
994
+
995
+ The Arkanoid court. **Star field**, **spiral galaxy**, **neon bricks** and **sound effects** are the
996
+ same switches that sit on the game's own panel. Two more are here only, and they change the *rules*:
997
+
998
+ | setting | what it does |
999
+ |---|---|
1000
+ | **Capsules** | Whether broken bricks drop the falling letters at all. Off makes it a pure Breakout. |
1001
+ | **Minions** | Whether the drifting shapes turn up. Off clears the ones already on the court. |
1002
+ | **Galaxy centre** | Where the spiral's nucleus sits on the panel. |
1003
+ | **Neon colour from** / **Neon colour** / **Neon brightness** | The tubes in each brick's own colour, or all in one colour of your choosing, at the brightness you set. |
1004
+ | **Grid** / **Grid colour** / **Grid intensity** | The grid under the court: whether it is drawn at all, what colour it is, and how strongly it shows. |
1005
+
1006
+ ### Tetrust
1007
+
1008
+ The game's own settings. Four of them — **star field**, **spiral galaxy**, **music** and **sound
1009
+ effects** — are the same switches that appear on the game's own panel, so a change in either place
1010
+ shows in both. The rest are here only:
1011
+
1012
+ | setting | what it does |
1013
+ |---|---|
1014
+ | **Galaxy centre** | Where the spiral's nucleus sits on the panel: behind the title, or any corner. |
1015
+ | **Landing marker** | The colour of the wireframe showing where the falling piece will land. It has its own colour because the marker is drawn *instead of* a block rather than over one, so the neon finish below never touches it. |
1016
+ | **Landing marker thickness** | How heavy that outline is, from 0.3 to 2.5 times the shipped weight. Thinner keeps it out of the way of the stack showing through it. |
1017
+ | **Neon pieces** | The pieces and the stack as dim solid bodies under lit tubes, the same finish as the Block space board. |
1018
+ | **Neon colour from** / **Neon colour** / **Neon brightness** | The tubes in each piece's own colour, or all in one colour of your choosing, at the brightness you set. |
1019
+ | **Grid** / **Grid colour** / **Grid intensity** | The grid under the well: whether it is drawn at all, what colour it is, and how strongly it shows. The well draws its grid fainter than the brick courts do, because the stack sits on top of it. |
1020
+
1021
+ What the sky is *made of* — density, brightness, nebulae, dust and the rest — comes from the
1022
+ **Sky** tab, which every board shares.