blockyard 0.0.1 → 0.1.0

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 (122) hide show
  1. package/CHANGELOG.md +929 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +4 -0
  4. package/README.md +191 -4
  5. package/SECURITY.md +38 -0
  6. package/bin/blockyard.js +41 -0
  7. package/config/pool-map.json +2620 -0
  8. package/docs/API.md +1577 -0
  9. package/docs/ARCHITECTURE.md +1394 -0
  10. package/docs/AUTO-UPDATE.md +269 -0
  11. package/docs/CONFIGURATION.md +847 -0
  12. package/docs/DEFECTS.md +813 -0
  13. package/docs/EFFECTS-AGENTS.md +448 -0
  14. package/docs/GETTING-STARTED.md +205 -0
  15. package/docs/INSTALL.md +547 -0
  16. package/docs/MEASUREMENTS.md +1401 -0
  17. package/docs/RULES.md +681 -0
  18. package/docs/SECURITY-AUDIT-2026-09-14.md +177 -0
  19. package/docs/SECURITY-AUDIT.md +258 -0
  20. package/docs/SECURITY.md +212 -0
  21. package/docs/TROUBLESHOOTING.md +332 -0
  22. package/docs/USER-GUIDE.md +1262 -0
  23. package/package.json +53 -5
  24. package/public/404.html +9 -0
  25. package/public/css/app.css +2009 -0
  26. package/public/donate-qr.png +0 -0
  27. package/public/index.html +1085 -0
  28. package/public/js/about.js +112 -0
  29. package/public/js/agents.js +1141 -0
  30. package/public/js/app.js +1386 -0
  31. package/public/js/arkanoid.js +806 -0
  32. package/public/js/blockanoid.js +347 -0
  33. package/public/js/blockout.js +347 -0
  34. package/public/js/blockpack.js +428 -0
  35. package/public/js/blockscene3d.js +2830 -0
  36. package/public/js/breakout.js +224 -0
  37. package/public/js/charts.js +635 -0
  38. package/public/js/depthchart.js +315 -0
  39. package/public/js/details3d.js +4342 -0
  40. package/public/js/doom.js +31 -0
  41. package/public/js/dosaudio.js +48 -0
  42. package/public/js/dosgame.js +389 -0
  43. package/public/js/dosio.js +186 -0
  44. package/public/js/dospc.js +1353 -0
  45. package/public/js/dosworker.js +196 -0
  46. package/public/js/explorer.js +405 -0
  47. package/public/js/feepalette.js +149 -0
  48. package/public/js/fmt.js +162 -0
  49. package/public/js/goggles.js +886 -0
  50. package/public/js/kiosk.js +41 -0
  51. package/public/js/login.js +88 -0
  52. package/public/js/markets.js +395 -0
  53. package/public/js/mining.js +1416 -0
  54. package/public/js/panels.js +970 -0
  55. package/public/js/pricechart.js +189 -0
  56. package/public/js/quake.js +20 -0
  57. package/public/js/settings.js +1096 -0
  58. package/public/js/soundcard.js +459 -0
  59. package/public/js/tetris.js +226 -0
  60. package/public/js/tetrust.js +356 -0
  61. package/public/js/tetsound.js +175 -0
  62. package/public/js/theme.js +235 -0
  63. package/public/js/wolf3d.js +22 -0
  64. package/public/js/x86.js +1978 -0
  65. package/public/login.html +33 -0
  66. package/scripts/blockfile-measure.js +156 -0
  67. package/scripts/browser-check.mjs +286 -0
  68. package/scripts/check.js +173 -0
  69. package/scripts/decode-check.js +81 -0
  70. package/scripts/doc-counts.js +109 -0
  71. package/scripts/donate-qr.py +23 -0
  72. package/scripts/dos-bench.js +56 -0
  73. package/scripts/fake-node.js +534 -0
  74. package/scripts/index-bench.js +216 -0
  75. package/scripts/index-benchmark.js +117 -0
  76. package/scripts/index-build.js +40 -0
  77. package/scripts/live-render-check.mjs +89 -0
  78. package/scripts/manage-users.js +132 -0
  79. package/scripts/motion-check.mjs +138 -0
  80. package/scripts/pool-map.js +157 -0
  81. package/scripts/setup.js +432 -0
  82. package/scripts/shots.mjs +278 -0
  83. package/scripts/smoke.sh +327 -0
  84. package/scripts/tls.js +31 -0
  85. package/scripts/ui.js +174 -0
  86. package/server/auth/sessions.js +221 -0
  87. package/server/auth/users.js +243 -0
  88. package/server/chain/blockfile.js +234 -0
  89. package/server/chain/index/build.js +210 -0
  90. package/server/chain/index/heights.js +36 -0
  91. package/server/chain/index/live.js +276 -0
  92. package/server/chain/index/rows.js +145 -0
  93. package/server/chain/index/store.js +154 -0
  94. package/server/chain/index/worker.js +109 -0
  95. package/server/chain/tx.js +310 -0
  96. package/server/collect/gbt.js +229 -0
  97. package/server/collect/logparse.js +765 -0
  98. package/server/collect/logtail.js +189 -0
  99. package/server/collect/markets.js +333 -0
  100. package/server/collect/mining.js +333 -0
  101. package/server/collect/monitor.js +2545 -0
  102. package/server/collect/network.js +295 -0
  103. package/server/collect/nextblock.js +275 -0
  104. package/server/collect/sync.js +386 -0
  105. package/server/config.js +644 -0
  106. package/server/http/api.js +1319 -0
  107. package/server/http/explorer.js +418 -0
  108. package/server/http/games.js +77 -0
  109. package/server/http/server.js +420 -0
  110. package/server/http/sse.js +176 -0
  111. package/server/http/static.js +212 -0
  112. package/server/main.js +673 -0
  113. package/server/netinfo.js +253 -0
  114. package/server/rpc/allowlist.js +130 -0
  115. package/server/rpc/client.js +414 -0
  116. package/server/store/audit.js +148 -0
  117. package/server/store/history.js +220 -0
  118. package/server/store/ledger.js +290 -0
  119. package/server/store/ring.js +173 -0
  120. package/server/tls/selfsigned.js +160 -0
  121. package/server/util/fmt.js +29 -0
  122. package/systemd/blockyard.service +102 -0
@@ -0,0 +1,1262 @@
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
+ - [Wolfenstein 3D](#wolfenstein-3d)
24
+ - [DOOM](#doom)
25
+ - [Quake](#quake)
26
+ - [Peers](#peers)
27
+ - [Network](#network)
28
+ - [Mining](#mining)
29
+ - [Events](#events)
30
+ - [Node & RPC](#node--rpc)
31
+ - [Admin](#admin)
32
+ - [Reading the data honestly](#reading-the-data-honestly)
33
+ - [Links, URLs and keyboard tips](#links-urls-and-keyboard-tips)
34
+ - [Display settings](#display-settings)
35
+
36
+ ---
37
+
38
+ ## The first five minutes
39
+
40
+ 1. **Check the header.** The `stream` badge should say **live**. Next to it, `rpc`
41
+ shows how long the node took to answer the last call, and `up` shows how long the
42
+ monitor has been running. If the badge says `reconnecting` or `stale`, the numbers
43
+ on screen are not current. See [The header](#the-header).
44
+ 2. **Read the sync strip** at the top of Overview. It names the node, gives its state
45
+ (Synced, Initial block download, Catching up, Stalled, Reorganising, Unknown) and
46
+ shows one progress figure. If the node is syncing, the strip shows the throughput
47
+ and an ETA that states which measurement window it came from.
48
+ 3. **Look at Block flow and Block space**, the two panels at the top of Overview.
49
+ Block flow is the chain as a row of cards: projected blocks, the block being built,
50
+ then the blocks already mined. Block space is a 3D picture of what the next block
51
+ would contain if a miner took the best-paying transactions right now.
52
+ 4. **Hover over things.** Most cards, cubes, candles and chart points have a tooltip
53
+ with the exact figures behind them.
54
+ 5. **Click a block height.** Heights in Block flow, the Last blocks table and elsewhere
55
+ open the block in the [Explorer](#explorer), and every explorer page has its own
56
+ URL you can share.
57
+
58
+ ![The Overview tab](images/overview.jpg)
59
+
60
+ ---
61
+
62
+ ## The header
63
+
64
+ | Item | What it tells you |
65
+ |---|---|
66
+ | **BlockYard v… · build** | The version and build this tab is running. |
67
+ | **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. |
68
+ | **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. |
69
+ | **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. |
70
+ | **rpc** | The node's last RPC round-trip time. It turns red when the average climbs above five seconds. |
71
+ | **up** | How long the monitor process has been running. |
72
+ | **open access** | Shown when the monitor runs without accounts. Anyone who can reach it reads it as a viewer. Hover for details. |
73
+ | **stale build — reload** | Shown when the server has been updated since you loaded the page. Reload to run the current code. |
74
+ | **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. |
75
+ | **sign out** | Only present when accounts are enabled. |
76
+
77
+ A red bar under the header means the node is not answering RPC, or nothing has
78
+ arrived for the selected node. It says which, and makes clear that everything below
79
+ it is the last state received, not current data.
80
+
81
+ ### The sync strip
82
+
83
+ The sync strip appears at the top of Overview and Chain & Sync. It has one row of
84
+ figures and a thin progress bar.
85
+
86
+ - **The bar's fill** is *blocks held ÷ announced headers*. It is the only figure that
87
+ drives the fill.
88
+ - **The marker on the bar** is the node's own `verificationprogress`, which is
89
+ difficulty-weighted. The two figures measure different things, so they are shown
90
+ separately and never averaged.
91
+ - **The ETA** comes with the measured rate it was computed from. During initial block
92
+ download there is no fallback based on the ten-minute block cadence, and a window
93
+ with less than 60 seconds of history is refused. When the measurement windows
94
+ disagree, the ETA is given as a range.
95
+ - **`detail`** expands the full derivation: height, headers, blocks behind, every rate
96
+ window, the ETA and its basis, tip age, chain size, and every caveat in full.
97
+ **`N notes · show`** does the same.
98
+ - **`also syncing`** buttons appear when another configured node is syncing. Click
99
+ one to switch to it.
100
+ - **Stalled** is claimed only when the connected peers report a tip above the node's
101
+ (`getpeerinfo`). A long gap with the peers agreeing on this tip stays **Synced**, with a
102
+ caveat saying it is a gap on the network rather than a fault of this node. With no peer
103
+ heights at all, the strip says Stalled only after two hours without a block, and the caveat
104
+ says a long gap and a node cut off from its peers cannot be told apart yet.
105
+
106
+ ---
107
+
108
+ ## Overview
109
+
110
+ The landing page. It shows the most important panels from the other tabs in two
111
+ columns.
112
+
113
+ | Panel | What it shows |
114
+ |---|---|
115
+ | **Block flow** | The chain as a row of cards. See [Reading Block flow](#reading-block-flow). |
116
+ | **Block space** | The 3D block-space viewer: the same viewer as the [Block space](#block-space) tab, in a square panel. |
117
+ | **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. |
118
+ | **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`. |
119
+ | **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. |
120
+ | **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). |
121
+ | **Mined by** | Blocks in the recent window grouped by pool, from coinbase text and a curated label map. See [Mining](#mining). |
122
+ | **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. |
123
+
124
+ ### Reading Block flow
125
+
126
+ Block flow reads left to right, from the future into the past.
127
+
128
+ ![Block flow and the block-space viewer](images/overview.jpg)
129
+
130
+ - **Projected blocks** (far left, dashed, labelled `+1`, `+2` …) are the mempool
131
+ sorted by fee rate, with the block currently being built skipped and the rest cut
132
+ into 1,000,000 vB blocks. Each card shows the median fee rate, the fee range, total
133
+ fees, transaction count and an ETA from the measured average block interval. The
134
+ last card (`+N…`) is the rest of the pool. These cards are inference, which is why
135
+ they are dashed and flat. A child paying for its parent can show up one block late,
136
+ because this node's mempool carries no ancestor data.
137
+ - **The block being built** sits just left of the divider. It shows the template's
138
+ height, its age and how long the node took to answer, and a 40-segment meter that
139
+ fills as weight is selected. Each lit segment is coloured by the fee rate of the
140
+ transactions at that point in the block, richest first. The card also shows the
141
+ transaction count, how full the block is, fees, free space, median and maximum
142
+ fee rate, and chips for the marginal fee rate, the spill and how much of the pool
143
+ fits. A **coloured ring** shows how long this block has been accumulating: green
144
+ within the chain's measured average interval, amber beyond it, red once a block is
145
+ due (1.5 times the average). The legend under the row gives the thresholds and the
146
+ minutes since the last block. If the template is behind the tip, the card says
147
+ `stale template`.
148
+ - **The divider** (`pending ⇆ done`) separates work in progress from work the network
149
+ has accepted.
150
+ - **The chain tip and history** run to the right, linked like a chain, because every
151
+ block commits to the one before it. Each card shows the pool, the height (click it
152
+ to open the block in the explorer), how far behind the tip it is, when it was mined
153
+ and the gap before it, size, transactions, fees, sats per transaction, average and
154
+ median fee rate, and a fill bar against the 4,000,000 WU cap. A light block is
155
+ visibly shorter than a full one. The tip has the accent-coloured ring. Hover a card
156
+ for the coinbase text, the label that matched, the hash, and more.
157
+ - A card reading **`awaiting attribution`** or **`not attributed`** is a height whose
158
+ coinbase has not been read yet. Attribution reads one block per poll, so it trails
159
+ the tip. These cards are drawn as placeholders rather than skipped.
160
+
161
+ On first load the row scrolls so that the nearest projected blocks, the block being
162
+ built and the divider are all on screen. After that it keeps wherever you scroll it.
163
+ With `prefers-reduced-motion` set, the numbers stay and nothing animates.
164
+
165
+ ---
166
+
167
+ ## Block space
168
+
169
+ The block-space viewer at full size. Next to it are the block being built, the chain
170
+ tip and a colour legend.
171
+
172
+ ![Block space, Simple](images/block-space-mode1.jpg)
173
+
174
+ ### What the board shows
175
+
176
+ The board shows **the next block's worth of the mempool**: the best-paying
177
+ transactions, up to one block (1,000,000 vB), laid out richest first on a 3D grid.
178
+
179
+ - **Area is vbytes.** Every transaction is a square whose side is a whole number of
180
+ grid units, packed first-fit, richest first.
181
+ - **Colour is fee rate**, in 128 bands from under 0.1 to 2,000 sat/vB and over: sky blue for the
182
+ cheapest, through teal, green, yellow, orange and red, to purple. The **Feerate** legend in
183
+ the side panel gives the bands in sat/vB, from under 0.1 up to 500 and over.
184
+ - **Hover a block** for its transaction id, size and fee rate. Hover works when the
185
+ board is at rest. While blocks are moving, their positions do not match their
186
+ footprints, so the tooltip stays hidden instead of naming the wrong transaction.
187
+
188
+ ### Refreshes and the control bar
189
+
190
+ The board refreshes every **30 seconds**, and a refresh is animated rather than
191
+ redrawn. Blocks rise off the grid, move to their new places in separate height lanes
192
+ so they never collide, and fall back under gravity with a few bounces. The board and
193
+ the camera stay fixed, so the view itself never moves. If a new layout arrives while
194
+ the animation is still running, it waits until the current one has landed.
195
+
196
+ The control bar in the corner of the panel has:
197
+
198
+ - **The countdown**: `next refresh m:ss`, with a fill that shows how much of the wait
199
+ has passed. It shows `refreshing…` while a fetch is under way and `refresh paused`
200
+ while updates are paused.
201
+ - **refresh now**: fetches immediately. It is enabled only when the board is at rest,
202
+ updates are not paused and no refresh is already running. Hover it to see why it
203
+ is disabled.
204
+ - **The mode switch**: see below.
205
+
206
+ ### Viewer modes
207
+
208
+ | Mode | What it draws |
209
+ |---|---|
210
+ | **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. |
211
+ | **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. |
212
+
213
+ ![Block space, Detailed](images/block-space-mode2.jpg)
214
+
215
+ Your choice is remembered in this browser and applies to every Block space viewer:
216
+ Overview, Block space, Mempool, Mining and Kiosk. When you switch to Detailed, the Simple
217
+ picture stays on screen until the first full read arrives. Transactions present in
218
+ both modes move to their new places rather than disappearing and reappearing.
219
+
220
+ ### Idle effects
221
+
222
+ While the board is at rest, one effect plays every seven to thirteen seconds — the first
223
+ about a second after the board lands — and never one that has played within the last twelve
224
+ (**No repeats within**, 0 up to the length of that board's list). There are **34**, and each has its own switch. **Each board
225
+ has its own list**: the Block space board's switches are the **Space effects** tab, the
226
+ Markets board's are the **Market effects** tab, and each tab has its own no-repeat window, so
227
+ trimming one board's effects leaves the other's alone.
228
+
229
+ | | |
230
+ |---|---|
231
+ | **Ripple**, **Outline sweep**, **Scan line**, **Tide** | fronts crossing the board: a spreading ring, traced edges, a curtain of light standing floor to top — a white core with soft cyan faces, raster rippling down it, a bar it hangs from, a glowing foot with a phosphor tail, motes in the beam — and a swell that lifts the cubes it passes under |
232
+ | **X-ray** | a front sweeps the board and everything behind it goes x-ray — bodies to glass, edges and a raster lit — then develops back to solid |
233
+ | **Cascade**, **Twinkle**, **Sparkle** | the blocks light in fee-rate order; scattered flashes; a constellation, each block its own colour |
234
+ | **Light cycles** | a TRON-style race in blue and orange from opposite edges, leaving light walls, until one crashes and de-rezzes |
235
+ | **Lightning ball** | a pale plasma ball entering from off-screen, tracing the grid, throwing bolts and trailing electrical dust |
236
+ | **Shockwave**, **Nova**, **Fireworks**, **Supernova** | a hard ring that throws blocks into the air; an implosion then a brighter blast; a fireworks display; a supernova — a star swells white-hot and crackles, blows out in a flash and a lens flare, a shockwave rings out, plasma is flung on every side, and a ring nebula expands and cools gold → red → violet round a white dwarf, lighting everything near it as it goes |
237
+ | **Wave**, **Quake**, **Checkerboard**, **Combo chain** | crests rolling across; the board shaking itself out; squares flipping against each other; a chain reaction down the diagonal |
238
+ | **Code rain**, **Radar**, **Vortex** | a drop falling down every column; a sweep hand with a phosphor tail; spiral arms draining inward |
239
+ | **Power-up**, **Aurora**, **Plasma** | the board charging from the floor up in gold; drifting curtains of colour; the demoscene plasma |
240
+ | **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 |
241
+ | **Tractor beam** | a UFO that draws the tallest transaction up into its beam, flies off with it and drops it back under gravity |
242
+ | **Ball lightning** | a plasma sphere in a nebula drifting across the whole view from off-screen to off-screen, a hazy white light on everything it passes, its arcs electrifying the blocks they strike and lighting where they land — 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 |
243
+ | **Energy pulse** | the surge that runs the neon price line on Markets: the pipe swells round its head and goes white-hot behind it, cooling back to the wire through hot gold, with a warm cloud, crackle and motes — nothing blue |
244
+ | **Breathe** | on Markets: the price line breathes, three slow swells from the plain wire to the pulse's white heat and back |
245
+ | **Light saber** | on Markets: the price line ignites from its left end as a light saber — blue, green, red or purple by the run — hums, spits sparks, and retracts |
246
+ | **Black hole** | on Markets: a point of darkness opens on the price line and grows; the line bends round it as through a lens, the candles nearest are swallowed, and an accretion disk in the chart's own colours spirals in round the shadow — brighter on the side coming toward you, its far side arched over the top and under the bottom, a photon ring hugging the horizon, starlight bent into arcs — until it shrinks away and lets everything go |
247
+ | **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 |
248
+
249
+ They are decoration only: they carry no data, they never play during a refresh, and they
250
+ are switched off entirely under `prefers-reduced-motion`. The Block space list is every effect
251
+ but the two drawn on a price line (**Energy pulse**, **Pipe bulge**). The Markets board is eight
252
+ units deep and as wide as the hours, so everything there moves **along the hours, left or right,
253
+ never toward you**, and lights the candles or the line. Its list is the **sixteen** that
254
+ translate to a chart: **Ripple**, **Outline sweep**, **Tide**, **Cascade**, **Twinkle**, **Scan
255
+ line**, **X-ray**, **Fireworks**, **Supernova**, **Wave**, and the price line's own **Energy pulse**,
256
+ **Pipe bulge**, **Breathe**, **Light saber**, **Black hole** and **Ball lightning** (a quarter of its
257
+ Block space size there). Fronts run along the
258
+ chart, rings start on the candle row, the candles light where they stand. Nothing on it waits
259
+ its turn: the pulse, the bulge and ball lightning are picks like any other, and how often you
260
+ see one is the length of the list you leave switched on.
261
+
262
+ The more you leave switched on, the less often you see any particular one — there is still
263
+ only one effect every seven to thirteen seconds. The **all off** button on that tab leaves
264
+ the board completely still without touching anything else.
265
+
266
+ ### The side panel
267
+
268
+ - **Being built**: the template's height and a clock showing minutes since the last
269
+ block (coloured like the Block flow ring), the 40-segment meter, the percentage
270
+ full, the marginal fee rate, transactions, fees, weight, median and maximum fee
271
+ rate, the queued bytes, the queue depth in blocks, and the template's age and cost.
272
+ - **Chain tip**: the pool that mined it and when, a fill bar, the percentage full,
273
+ size, transactions, fees, average and median fee rate, the gap before it and the
274
+ chain's average gap.
275
+ - **Feerate**: the colour legend.
276
+
277
+ ---
278
+
279
+ ## Chain & Sync
280
+
281
+ The chain in detail. The sync strip is at the top, followed by charts and state
282
+ cards three to a row.
283
+
284
+ | Panel | What it shows |
285
+ |---|---|
286
+ | **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. |
287
+ | **Block size** | `getblockstats` `total_size`, the sum of transaction sizes, not the serialized block. The note says which basis applies. |
288
+ | **Fees per block**, **Transactions per block** | One point per block. |
289
+ | **Transaction rate** | `getchaintxstats` tx/s, with the window size, transactions in the window and the all-time count. |
290
+ | **Tip progression** | Blocks applied against announced headers. Once the node is synced this is a flat line. |
291
+ | **Chain state** | Chain, height, headers, best hash, tip time and age, progress, size on disk, pruned, chain work, IBD flag. |
292
+ | **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. |
293
+ | **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. |
294
+ | **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. |
295
+ | **Indexes** | Each index the node keeps, its height, and whether it is synced. |
296
+ | **Chain tips** | `getchaintips`: height, branch length, status. |
297
+
298
+ ---
299
+
300
+ ## Mempool
301
+
302
+ | Panel | What it shows |
303
+ |---|---|
304
+ | **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. |
305
+ | **Mempool size** | Transaction count (left axis) and memory (right axis) over time. |
306
+ | **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. |
307
+ | **Block space** | The same viewer as the Block space tab, smaller, with the same modes and countdown. |
308
+ | **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. |
309
+ | **Age distribution** | How long transactions have been waiting. |
310
+ | **Fee estimates over time** | Estimates for 1, 2, 6, 24 and 144 blocks, and the pool minimum. |
311
+ | **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. |
312
+
313
+ ---
314
+
315
+ ## Explorer
316
+
317
+ A block, transaction and address explorer that reads directly from your node. Every
318
+ page has its own URL, so it can be bookmarked or shared.
319
+
320
+ | Route | Page |
321
+ |---|---|
322
+ | `#explorer` | Search box and the latest blocks |
323
+ | `#explorer/block/<height or hash>` | A block. Add `/<page>` for later pages of its transactions. |
324
+ | `#explorer/tx/<txid>` | A transaction |
325
+ | `#explorer/address/<address>` | An address. Add `/<page>` for later pages. |
326
+
327
+ ### Search and the home page
328
+
329
+ Type a **block height, block hash, transaction id or address** and press Enter or
330
+ **Search**. If nothing matches, a message says so.
331
+
332
+ The home page shows the latest blocks as a row of **cubes coloured by median fee
333
+ rate**. Each cube shows the median and fee range, size, transaction count, age and the
334
+ pool that mined it. Below the cubes is a table of recent blocks with height, time
335
+ mined, pool, transactions, weight and fees. Click a cube or a height to open the
336
+ block.
337
+
338
+ ![Explorer home](images/explorer-home.jpg)
339
+
340
+ ### Transaction page
341
+
342
+ ![A transaction](images/explorer-tx.jpg)
343
+
344
+ - **Title and status pill**: the txid with a copy button. The pill reads
345
+ `N confirmations`, `Unconfirmed`, or `Stale — off the best chain`.
346
+ - **Summary panels**: status (the confirming block, which links to it, or "In the
347
+ mempool"), timestamp, feature badges, size in vB, bytes and weight units, the fee
348
+ and **fee rate**, total in and out, version and locktime. When the server has a
349
+ recent spot price, dollar values appear next to BTC amounts **in green**. A coinbase
350
+ transaction shows the block reward instead of a fee.
351
+ - **Feature badges**: **SegWit**, **Taproot**, **RBF**, **Consolidation**,
352
+ **OP_RETURN**, and **coinbase** where it applies.
353
+ - **Flow**: a diagram of where the value came from and where it went. Each input is a
354
+ band as thick as its share of the value, and the inputs merge into one trunk that
355
+ fans out to the outputs. The fee leaves the trunk as a thin **gold stream**. A
356
+ coinbase input glows gold, and an OP_RETURN output is a grey sliver. Each input band
357
+ links to the transaction that created it, and each output band links to its address.
358
+ Hover a band for its amount. A side with more than 24 entries folds the rest into
359
+ one "N more" band.
360
+ - **Inputs & Outputs**: two columns. Each input has an **arrow button** to the
361
+ transaction whose output it spends. Each output has an arrow button to the
362
+ transaction that **spent** it, or a **glowing dot** if it is still unspent. OP_RETURN
363
+ outputs are marked unspendable. A very large transaction lists its first outputs and
364
+ says how many there are in total. The bar underneath gives the fee and total output.
365
+
366
+ ### Block page
367
+
368
+ ![A block](images/explorer-block.jpg)
369
+
370
+ - **Header**: `Block <height>` with **‹** and **›** arrows to the previous and next
371
+ block, and a confirmations pill.
372
+ - **Stats**: hash (with copy button), timestamp, size and weight, transaction count,
373
+ miner, merkle root, median fee rate, fee span, total fees, subsidy plus fees (with
374
+ dollar values when available), difficulty and nonce, version and bits.
375
+ - **Transactions**: a paged table with each transaction's fee rate, fee, size, value
376
+ out, input and output counts, and feature badges. Use the pager at the bottom to
377
+ move through the pages.
378
+
379
+ ### Address page
380
+
381
+ The address with a copy button, its type, transaction count, then **balance**, **total
382
+ received** and **total sent**. Below that, its **transactions, newest first**, 25 a page,
383
+ with the block each one was confirmed in and the **change** it made to the balance, green for
384
+ money in and red for money out. A transaction the node could not return still shows its
385
+ height and amount, because those are the index's own.
386
+
387
+ **Where this comes from.** Bitcoin Core has **no address index at any setting** — the RPCs an
388
+ explorer would ask (`getaddressbalance`, `getaddresstxids`) belong to insight-style forks, and
389
+ Core answers `Method not found`. So BlockYard builds its own from the node's block and undo
390
+ files, one row per (address, transaction) with the net amount — **a few hours** for the whole
391
+ chain on the installer's default of four workers (30 minutes on 16, on NVMe) and 124 GB — and the
392
+ server keeps it current as blocks arrive. The server
393
+ builds a missing index itself, in the background, the first time it starts with an index
394
+ directory configured (`scripts/index-build.js` does the same by hand). Balances are checked
395
+ against the node's `scantxoutset` to the satoshi. See
396
+ [Building the address index](INSTALL.md#building-the-address-index).
397
+
398
+ **Received** and **sent** are sums of each transaction's *net* for the address, so a
399
+ transaction that both paid and spent it counts once, by its net — not the gross figures an
400
+ explorer that stores every output separately would show.
401
+
402
+ The page says when the index is **behind** the node (it catches up within a poll, 30 s) or
403
+ has **stopped following** — which happens after a reorganisation deeper than the blocks it
404
+ still holds in its tail, and means a rebuild.
405
+
406
+ **While the index is being built** (BlockYard builds a missing one itself when it starts), the
407
+ page reads **not indexed** and says so in a note with the phase, the progress, the rows so far
408
+ and the time left; the Overview's "what this panel cannot tell you" box shows the same line, and
409
+ adds `paused while the node's RPC is slow` whenever the build is holding back so the node keeps
410
+ answering. A notification appears in every open tab when the build starts, when it finishes and
411
+ if it fails; on finish the page fills in with no restart. The build does not resume after the
412
+ server is stopped: the next start begins it again.
413
+
414
+ **Without an index configured**, the address and its type are still confirmed
415
+ (`validateaddress` needs none), and balance, totals and history read **not indexed**. It does
416
+ not show zero, and it does not print the node's error where a figure belongs: nothing counted,
417
+ so nothing is claimed.
418
+
419
+ Below the transactions, the address's **unspent outputs** — each output that paid it and is still
420
+ in the node's UTXO set (less what the mempool already spends), with its block and value; the
421
+ **Unspent outputs** figure in the summary is their count. The list is made for an address with
422
+ up to 100 transactions; a longer history says `not listed` instead, and shows no count.
423
+
424
+ **Not yet:** the address's transactions still in the mempool.
425
+
426
+ **Requirements:** transaction pages rely on the node's transaction index (`txindex=1`), which
427
+ Core supports.
428
+
429
+ ---
430
+
431
+ ## Markets
432
+
433
+ The BTC/USD price from five exchanges' public APIs. **Polling is off by default**: out of
434
+ the box the monitor makes no outbound connection but to your node, and Markets and Kiosk say
435
+ so. Tick **Display settings → Markets & Price → Enable market polling** — one switch for
436
+ every screen of this monitor, no restart needed. With it on, the server fetches market data
437
+ **only while someone is reading it** — the Markets or Kiosk tab, or Overview, whose price line
438
+ (**Display settings → Markets & Price → Price line on Overview**) reads the same feed — and
439
+ stops about ten minutes after the last request. Switch that line off and, with no one on
440
+ Markets or Kiosk, the monitor makes no exchange requests at all.
441
+
442
+ ![Markets](images/markets.jpg)
443
+
444
+ ### The price chart
445
+
446
+ The price panel draws the selected exchange's **hourly candles** in one of two views,
447
+ chosen with the **2D / 3D** buttons in the toolbar and remembered (**Display settings →
448
+ Markets & Price → Price view**). **2D**, the default, is the flat candlestick chart
449
+ described below. **3D** draws the same hours on the same 3D engine as Block space, from a
450
+ low camera looking at the chart from the side.
451
+
452
+ - Each hour is a candle **floating at its price**. The body runs from open to close
453
+ (green if the hour closed up, red if down) and a thin wick runs from the hour's low
454
+ to its high.
455
+ - A steady **neon-yellow line** joins each hour's close.
456
+ - The **volume** band runs along the bottom.
457
+ - **Price levels and hours are labelled on the board**, with the last price
458
+ highlighted.
459
+ - The background is a star field. The lighting comes from the front right, so the
460
+ newest hours are brightest and older hours are dimmer.
461
+ - **Hover a candle** for its exchange, hour, open, high, low, close, change and volume.
462
+ - The legend beside the board gives the price range from floor to top.
463
+
464
+ The board shows at most the last 72 hours; the flat chart covers the full selected
465
+ range.
466
+
467
+ ### Controls and summary
468
+
469
+ - **Exchange buttons**: Coinbase, Kraken, Bitstamp, Bitfinex, OKX. Only exchanges
470
+ with candle data are listed. The selected exchange provides the candles, and the
471
+ others appear on the flat chart as lines.
472
+ - **Range**: **24 h**, **48 h** or **7 d**.
473
+ - **View**: **2D** or **3D**. One at a time; they draw the same hours.
474
+ - **Summary strip**: the **USD median** across books, the **spread across
475
+ exchanges**, **24 h volume**, and how many USD books are reporting.
476
+
477
+ ### The flat candlestick chart
478
+
479
+ A conventional price chart with the price axis on the right, the time axis in UTC
480
+ (midnights carry the date), candles, volume, and a dashed line at the last price.
481
+ The other exchanges are thin coloured close lines, named at the top right. Move the
482
+ pointer over it for a **crosshair** and an **OHLC readout** of that hour at the top
483
+ left. The readout shows the latest hour when the pointer is elsewhere.
484
+
485
+ ### The exchange table
486
+
487
+ One row per exchange: pair, **last**, **bid**, **ask**, **spread** (in dollars and
488
+ basis points), **24 h change**, 24 h low–high **range**, 24 h **volume**, and when it
489
+ last updated, or the exchange's **error** if it did not answer.
490
+
491
+ ### Order book depth
492
+
493
+ Cumulative order-book depth against price, read every 30 seconds while the tab is
494
+ open.
495
+
496
+ - **Bids** (green) accumulate downward from the best bid. **Asks** (red) accumulate
497
+ upward from the best ask. Each exchange's book is a faint line, and the **total**
498
+ across all books is the bright line.
499
+ - The **dashed line** is the total as it stood N minutes ago.
500
+ - **Change bars** show how much was added (blue) or pulled (orange) at each price
501
+ since then, on a **symmetric-log** axis on the right.
502
+ - **Pickers**: `change bars for the last` **1m / 5m / 10m / 30m / 1h**, and `price
503
+ window` **±1% / ±2.5% / ±5% / ±10%**.
504
+ - **Shallow books** end where the exchange's book ends, marked `<exchange> ends`.
505
+ Beyond that point the total still counts what that book had reached, so the total
506
+ there is a **lower bound** and is drawn **dotted**. The readout says "at least".
507
+ - With the pointer off the chart, the readout at the top gives the mid price and the
508
+ bids and asks within 1% and 5%. Move the pointer to read the cumulative depth,
509
+ the change at that price, and each exchange's figure there.
510
+ - Until a snapshot of the chosen age exists, the note says the change bars are
511
+ waiting.
512
+
513
+ **OKX quotes USDT, not USD**, so it is left out of the USD median and the
514
+ cross-exchange spread. It is included in the depth total.
515
+
516
+ ---
517
+
518
+ ## Kiosk
519
+
520
+ A wall display. Four panels fill the screen: the **3D Markets board**, a **Price &
521
+ order book depth** panel, the **Block space** board and **Block flow**.
522
+
523
+ ![Kiosk](images/kiosk.jpg)
524
+
525
+ - **Markets** is the same 3D board as the Markets tab. Its title names the exchange,
526
+ pair, hours shown and last price.
527
+ - **Price & order book depth** shows the **USD median** in neon yellow with its 24 h
528
+ change and how recently the data updated, and under it the **order book depth chart**:
529
+ cumulative bids in green and asks in red against price, every exchange's book faintly
530
+ and their total brightly, fixed at ±2.5% around the mid. The 24 h high, low, volume,
531
+ spread and the per-exchange table are deliberately *not* here — a wall display is read
532
+ from across a room, where a four-column table is unreadable and the shape of the book
533
+ says more than a spread figure. All of that is still on the **Markets** tab.
534
+ - **Block space** is the same viewer as everywhere else, with its countdown,
535
+ **refresh now** button and mode switch.
536
+ - **full screen** in the corner puts the kiosk into browser full screen. Press it
537
+ again or Esc to leave.
538
+
539
+ Having the Kiosk open counts as viewing Markets, so exchange data keeps flowing while
540
+ it is on screen.
541
+
542
+ ---
543
+
544
+ ## Tetrust
545
+
546
+ A playable Tetris, built on the same 3D engine as everything else, under **Diversions** at the end
547
+ of the nav — *trust, but verify*: every line you clear is a block you verified. The well is the block-space board, the pieces
548
+ are the same stones, and the sky behind them is the same turning galaxy.
549
+
550
+ ![Tetrust](images/tetrust.jpg)
551
+
552
+ ### Playing
553
+
554
+ | Keys | |
555
+ |---|---|
556
+ | **←** **→** or **A** **D** | move left and right |
557
+ | **↑**, **W** or **X** | rotate |
558
+ | **Z** or **Q** | rotate the other way |
559
+ | **↓** or **S** | soft drop (one row, one point) |
560
+ | **space** | hard drop (straight down, two points a row) |
561
+ | **P** or **Esc** | pause and resume |
562
+ | **Enter** | start, or resume when paused |
563
+
564
+ A wireframe on the floor of the well shows where the falling piece will land — neon blue until
565
+ you change it under **Display settings → Tetrust → Landing marker**. Cleared lines fly up off the
566
+ top of the screen.
567
+
568
+ **It pauses when you look away** — another browser tab, or another tab of this monitor —
569
+ and waits on a **resume** button, so a game is never lost to reading the Mempool page.
570
+
571
+ ### Scoring
572
+
573
+ The classic table, multiplied by the level: **100 / 300 / 500 / 800** for one, two, three or
574
+ four lines at once. Four at once is worth well over four singles, which is the whole reason
575
+ to leave a column open and wait for the long piece. Soft drops pay a point a row, hard drops
576
+ two. Every ten lines is a level, and each level drops the pieces 65 ms a row faster, down to
577
+ a floor of 80 ms.
578
+
579
+ **High scores** are kept in your browser — top ten, with the lines, level and date. Nothing
580
+ is sent to the server, and they are not shared between browsers or machines.
581
+
582
+ ### The switches on the panel
583
+
584
+ Four buttons under the score, which are the same settings as **Display settings → Tetrust**,
585
+ so a change in either place shows in both:
586
+
587
+ | | |
588
+ |---|---|
589
+ | **★ stars** | the star field across the whole panel |
590
+ | **🌀 galaxy** | the spiral galaxy in it, turning |
591
+ | **♪ music** | Korobeiniki, the folk tune everyone knows as the Tetris theme, synthesised in the browser with oscillators — there is no audio file to download |
592
+ | **♫ sound** | move, rotate, drop, lock, line clear, level up and game over |
593
+
594
+ Browsers only allow sound to start after you interact with the page, so the music begins
595
+ when you press **play**, not when the tab opens.
596
+
597
+ ---
598
+
599
+ ## Blockout
600
+
601
+ Breakout, on the same 3D engine, under **Diversions** at the end of the nav. The wall is made of
602
+ block-space stones — one grid cell each, so a brick *is* an engine tile — and the panel behind it
603
+ is the same turning galaxy as everywhere else. The ball is drawn round rather than as a block.
604
+
605
+ ### Playing
606
+
607
+ **The bat follows your mouse.** Move the pointer across the court and the bat goes where it is;
608
+ click to serve. If you would rather use the keyboard, **←** **→** or **A** **D** move it and
609
+ **space** serves.
610
+
611
+ | Keys | |
612
+ |---|---|
613
+ | **mouse**, **←** **→**, or **A** **D** | move the bat |
614
+ | **click** or **space** | serve the ball |
615
+ | **P** or **Esc** | pause and resume |
616
+ | **Enter** | start, or resume when paused |
617
+
618
+ Like Tetrust, it pauses when you look away — another browser tab, or another tab of this monitor.
619
+
620
+ ### Scoring
621
+
622
+ Where the ball lands on the bat decides where it goes: dead centre sends it straight up, the edges
623
+ fire it off at an angle. That one rule is what makes Breakout a game of aim rather than reflexes,
624
+ and it is worth practising on purpose.
625
+
626
+ The wall is six rows, cheap at the bottom and dear at the top — **1, 1, 3, 3, 5, 7** points a
627
+ brick — so the reward for digging a channel up one side and letting the ball loose in the roof is
628
+ the same as it was in 1976. You get **three balls**; clearing the wall starts the next level with a
629
+ faster ball and your score kept. High scores are kept in your browser, top ten, and are not sent
630
+ anywhere.
631
+
632
+ ### The switches on the panel
633
+
634
+ **★ stars** and **🌀 galaxy** for the sky behind the court, **◉ neon** to draw the wall, the bat and
635
+ the ball as dim bodies under lit tubes, and **♫ sound** for the bat, the bricks, the walls and a
636
+ lost ball. They are the same settings as **Display settings → Blockout**, so a change in either
637
+ place shows in both; the colour and brightness of the neon live on that tab.
638
+
639
+ ---
640
+
641
+ ## Blockanoid
642
+
643
+ Arkanoid, on the same 3D engine, under **Diversions**. Blockout with the arcade's own ideas put
644
+ back: a different wall every level, bricks that survive being hit, and capsules that fall out of
645
+ what you break. The court is narrower and taller than Blockout's, which is what gives you room to
646
+ dig a channel up the side.
647
+
648
+ ### Playing
649
+
650
+ **Vaus follows your mouse.** Click to serve, or use **←** **→** / **A** **D** and **space**. The
651
+ laser, once you have caught it, **fires itself**.
652
+
653
+ | Keys | |
654
+ |---|---|
655
+ | **mouse**, **←** **→**, or **A** **D** | move Vaus |
656
+ | **click** or **space** | serve the ball |
657
+ | **↑**, **W**, or **right-click** | fire early — the laser fires on its own anyway |
658
+ | **P** or **Esc** | pause and resume |
659
+ | **Enter** | start, or resume when paused |
660
+
661
+ ### The wall
662
+
663
+ Three kinds of brick, and telling them apart is most of the game:
664
+
665
+ | Brick | What it does |
666
+ |---|---|
667
+ | **Coloured** | Breaks in one hit and pays by colour, 50 for white up to 120 for yellow. |
668
+ | **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. |
669
+ | **Gold** | Never breaks and pays nothing. It is scenery — a wall is cleared when the breakable bricks are gone, so gold never traps you. |
670
+
671
+ Six walls ship, and past the sixth they cycle with tougher silver each time.
672
+
673
+ ### Capsules
674
+
675
+ A broken brick may drop one, and only **one is on the court at a time** — which is what makes
676
+ taking it a decision rather than a reflex. Catch it with Vaus. Every capsule pays 1000 points.
677
+
678
+ **Nothing lasts for ever.** Laser, wide, catch and slow each run for **30 seconds**, and the
679
+ heads-up display counts each one down. Three balls and the extra life are one-shot — they have
680
+ nothing to expire. Losing a ball, or a minion reaching Vaus, clears everything you were carrying.
681
+
682
+ | | Capsule | What it does |
683
+ |---|---|---|
684
+ | **L** | Laser | Vaus turns red and can shoot. The bat itself tells you what it can do. |
685
+ | **E** | Enlarge | A wider Vaus. |
686
+ | **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. |
687
+ | **S** | Slow | Takes the pace off the ball already in play. |
688
+ | **D** | Disrupt | Three balls at once, all at the same speed. |
689
+ | **P** | Player | An extra life. |
690
+
691
+ Laser and Catch put each other away: Vaus does one thing at a time. **The laser fires by itself**
692
+ while it is up — you caught it, you should not also have to hold a key down. Losing a ball, or a
693
+ minion reaching Vaus, puts Vaus back to stock.
694
+
695
+ ### The minions
696
+
697
+ Four kinds of shape drift down the court, each with its own silhouette and its own way of moving —
698
+ a swinging cone, a tumbling cube, a wobbling orb, a zig-zagging molecule.
699
+
700
+ They **cannot pass through bricks**. On a solid wall they pace along the top hunting for a way
701
+ down, so breaking the wall opens their path as well as yours. The ball and the laser destroy one for
702
+ 200 points, and the ball **bounces off** it rather than carrying on through — drop onto one from
703
+ above and you come straight back up. But **a minion that reaches Vaus costs you a life**. Turn them
704
+ off in the settings if you would rather practise.
705
+
706
+ ### Scoring
707
+
708
+ Where the ball lands on Vaus decides where it goes, exactly as in Blockout. You get **three
709
+ balls**; clearing a wall starts the next with a faster ball and your score kept. High scores are
710
+ kept in your browser, top ten, and are not sent anywhere.
711
+
712
+ ### The switches on the panel
713
+
714
+ **★ stars**, **🌀 galaxy**, **◉ neon** and **♫ sound**, as in Blockout. **Capsules** and **minions**
715
+ have switches too, on **Display settings → Blockanoid** — and because those two change the rules
716
+ rather than the look, flipping them reaches the game you are playing, not just the next one.
717
+
718
+ ---
719
+
720
+ ## Wolfenstein 3D
721
+
722
+ The shareware episode of Wolfenstein 3D, **Escape from Wolfenstein**, under **Diversions**, first of
723
+ the three DOS games. It is id Software's own `WOLF3D.EXE` v1.4 and its `.WL1` data files, unmodified,
724
+ on the same PC BlockYard emulates for DOOM and Quake. Where those two were 32-bit programs, Wolfenstein
725
+ 3D is a 16-bit **real-mode** DOS program from 1992, so here the emulated processor runs the way a PC
726
+ started up: segments and offsets, DOS's own memory, the interrupt table at the bottom of memory. AdLib
727
+ music plays on the sound card's OPL and the digitised effects ("Achtung!") on its DSP. It draws at 70
728
+ frames a second, the VGA's refresh rate, with plenty of machine to spare.
729
+
730
+ Press **play**. The sign-on screen shows what the game found (memory, mouse, Sound Blaster); press a
731
+ key, the title and the demos follow, and **Enter** or **Esc** brings up the menu: **New Game**, pick
732
+ the episode and how tough you are.
733
+
734
+ ### The files
735
+
736
+ The game's files live on the server in `games/wolf3d_dos/`: `WOLF3D.EXE`, and the eight `.WL1` files
737
+ it cannot start without (`AUDIOHED`, `AUDIOT`, `GAMEMAPS`, `MAPHEAD`, `VGADICT`, `VGAGRAPH`,
738
+ `VGAHEAD`, `VSWAP`). `CONFIG.WL1`, its settings and high scores, is optional. The page names a missing
739
+ file instead of starting.
740
+
741
+ ### Playing
742
+
743
+ **Click the screen to capture the mouse**: moving it forward and back walks, left and right turns,
744
+ the left button fires. **Esc** gives the mouse back. The keys are the game's own:
745
+
746
+ | Keys | |
747
+ |---|---|
748
+ | **↑** **↓** | walk |
749
+ | **←** **→** | turn |
750
+ | **Alt** + **←** **→** | strafe |
751
+ | **Ctrl** or left click | fire |
752
+ | **Space** | open doors, push walls |
753
+ | **Shift** (held) | run |
754
+ | **1**–**4** | knife, pistol, machine gun, chain gun |
755
+ | **Esc** | the menu |
756
+ | **F8** / **F9** | quick save / quick load |
757
+
758
+ Rebind them under **Change View** and **Control** in the game's own menu; it keeps what you choose.
759
+
760
+ ### Pausing, saving, quitting
761
+
762
+ Exactly as DOOM: it **pauses when you look away** with the machine stopped dead, **savegames, the
763
+ settings and the high scores stay in this browser**, and **Quit** ends the program the way it ended
764
+ in DOS, with a **play again** button.
765
+
766
+ ### The switches on the panel
767
+
768
+ **♫ sound**, **◌ smooth** and **⛶ full screen**, as in DOOM. In full screen a tap of **Esc** is the
769
+ game's menu, not the browser's exit; leave with the **exit full screen** button in the top corner,
770
+ or hold **Esc** for a second.
771
+
772
+ ---
773
+
774
+ ## DOOM
775
+
776
+ If anyone asks *"well, can it run DOOM?"*, the answer is an emphatic **"Naturally. What sort of AI
777
+ slop generator do you take me for?"**
778
+
779
+ The shareware episode of DOOM, **Knee-Deep in the Dead**, under **Diversions**. Not a remake: it is
780
+ id Software's own `DOOM.EXE` v1.9 and `DOOM1.WAD`, unmodified, running on a 486 PC that BlockYard
781
+ emulates in your browser — the processor, DOS and its memory extender, the VGA card and a Sound
782
+ Blaster, all written in JavaScript. It plays exactly as it did in 1993, demos, sound effects, OPL
783
+ music and all.
784
+
785
+ Press **play**. The machine boots (you will see DOOM's own start-up screen for a moment), the
786
+ demos start, and **Esc** opens DOOM's menu: **New Game** from there.
787
+
788
+ ### The files
789
+
790
+ The game's files live on the server, in `games/doom_dos/` beside the application — the shareware
791
+ package the operator put there. Without `DOOM.EXE` and `DOOM1.WAD` in that directory the page
792
+ says which file is missing instead of starting. Nothing is downloaded from anywhere else.
793
+
794
+ ### Playing
795
+
796
+ **Click the screen to capture the mouse**: moving it turns, the left button fires, the right
797
+ strafes, the middle walks forward. **Esc** gives the mouse back (and opens DOOM's menu). The keys
798
+ are **WASD** by default:
799
+
800
+ | Keys | |
801
+ |---|---|
802
+ | **W** **S** | walk |
803
+ | **A** **D** | strafe |
804
+ | **←** **→** | turn |
805
+ | **E** | open doors, press switches |
806
+ | **Ctrl** or left click | fire |
807
+ | **Shift** (held) | run |
808
+ | **1**–**7** | choose a weapon |
809
+ | **Tab** | the map |
810
+ | **Esc** | DOOM's menu |
811
+ | **F2** / **F3** | save / load |
812
+ | **F5** | detail · **F11** gamma |
813
+
814
+ Turn the **⌨ WASD** switch off for DOOM's own 1993 keys: **↑** **↓** walk, **Alt** + **←** **→**
815
+ strafe (or **,** and **.**), **Space** opens. The switch applies **at once**, in the middle of a
816
+ game — the page rewrites the running game's key settings — and DOOM saves whichever you chose
817
+ when you quit.
818
+
819
+ ### Pausing, saving, quitting
820
+
821
+ **It pauses when you look away** — another browser tab, or another page of the monitor — and the
822
+ emulated machine stops dead: its clock stops with it, so nothing moves while you are gone. Press
823
+ **resume** to carry on.
824
+
825
+ **Savegames and settings stay in this browser.** DOOM's six save slots, and the configuration it
826
+ writes when you quit (volumes, screen size, detail), are kept in the browser's storage and come
827
+ back the next time you play — on this browser only; they are never sent to the server.
828
+
829
+ **Quitting** from DOOM's menu ends the program the way it ended in DOS: the text-mode ENDOOM screen,
830
+ and a **play again** button.
831
+
832
+ ### The switches on the panel
833
+
834
+ | Switch | |
835
+ |---|---|
836
+ | **♫ sound** | The Sound Blaster, on or muted. |
837
+ | **⌨ WASD** | W A S D and E (the default), or DOOM's own keys; applies immediately. |
838
+ | **◌ smooth** | Smooths the 320×200 picture instead of showing its square pixels. |
839
+ | **⛶ full screen** | The screen alone. In Chrome it also keeps **Esc** for DOOM's menu, so leave with the **exit full screen** button in the top corner, or hold **Esc** for a second. |
840
+
841
+ The **Machine** panel says what the PC is doing: running or paused, how fast the emulated
842
+ processor is going (in millions of instructions a second), how many frames reach the screen, and
843
+ the sound card's rate. DOOM draws at most 35 frames a second, as it always did.
844
+
845
+ If the sound will not start, the page may be served over plain HTTP from a LAN address: the browser
846
+ refuses its low-latency audio there, and DOOM falls back to a simpler path that works everywhere
847
+ but can crackle when the machine is busy.
848
+
849
+ ---
850
+
851
+ ## Quake
852
+
853
+ The shareware episode of Quake, **Dimension of the Doomed**, under **Diversions**, after DOOM and on
854
+ the same emulated PC. Again the real thing: id Software's `QUAKE.EXE` v1.06 and `PAK0.PAK`,
855
+ unmodified. Quake asked a lot more of a PC than DOOM did — a Pentium and a maths coprocessor — so it
856
+ is the harder test of the machine. It plays at **forty to fifty frames a second** — better than the
857
+ Pentium it was written for managed in 1996.
858
+
859
+ Press **play**. The first start downloads the 18 MB PAK file from the server (after that the
860
+ browser revalidates it rather than fetching it again), the console scrolls past, the demos start,
861
+ and **Esc** opens Quake's menu: **Single Player → New Game**.
862
+
863
+ ### The files
864
+
865
+ The game's files live on the server in `games/quake_dos/`: `QUAKE.EXE` and `ID1/PAK0.PAK` are the
866
+ two it cannot start without. The page names a missing one instead of starting. Quake's CD music was
867
+ never part of the shareware download, so there is none; the sound effects play through the Sound
868
+ Blaster.
869
+
870
+ ### Playing
871
+
872
+ **Click the screen to capture the mouse.** Quake starts with **mouse look** on and the keys a later
873
+ game taught everyone:
874
+
875
+ | Keys | |
876
+ |---|---|
877
+ | **W** **S** | walk |
878
+ | **A** **D** | strafe |
879
+ | mouse | look and turn |
880
+ | left click or **Ctrl** | fire |
881
+ | **Space** or right click | jump |
882
+ | **Shift** (held) | run |
883
+ | **1**–**8** | choose a weapon |
884
+ | **Esc** | Quake's menu |
885
+ | **−** / **=** | a smaller or bigger view |
886
+ | **~** | the console |
887
+ | **F6** / **F9** | quicksave / quickload |
888
+
889
+ Those are set the first time only. Change anything in Quake's own **Options → Customize controls**,
890
+ and Quake saves your bindings when you quit; the page never overwrites them again.
891
+
892
+ **A smaller view runs faster.** Quake starts with its view a little inside the screen, a border
893
+ round it. Quake only draws the 3D world inside that view, so **−** makes it smaller and faster and
894
+ **=** makes it bigger, up to the whole width; Quake keeps your choice. Measured on this machine's
895
+ emulator, a smaller view is worth about a tenth more speed at the starting size, and a quarter or
896
+ more below that.
897
+
898
+ ### Pausing, saving, quitting
899
+
900
+ Exactly as DOOM: it **pauses when you look away** with the machine stopped dead, **savegames and
901
+ Quake's config stay in this browser**, and **Quit** ends the program the way it ended in DOS, with
902
+ id's order screen and a **play again** button.
903
+
904
+ ### The switches on the panel
905
+
906
+ **♫ sound**, **◌ smooth** and **⛶ full screen**, as in DOOM (and the same two ways out of full screen).
907
+
908
+ ---
909
+
910
+ ## Peers
911
+
912
+ | Panel | What it shows |
913
+ |---|---|
914
+ | **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. |
915
+ | **Connection history** | Inbound, outbound, total and relaying peers over 24 hours. |
916
+ | **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. |
917
+
918
+ If the node reports connections but `getpeerinfo` returns no rows, the page says so.
919
+ Peer identity is not guessed from another source.
920
+
921
+ ---
922
+
923
+ ## Network
924
+
925
+ | Panel | What it shows |
926
+ |---|---|
927
+ | **Throughput** | Network-in and disk-write rates with a chart. |
928
+ | **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. |
929
+ | **Traffic accounting** | Cumulative received and written totals, averages since start, and the chain's size on disk. |
930
+ | **Where each number comes from** | The source table for every panel. |
931
+
932
+ ---
933
+
934
+ ## Mining
935
+
936
+ The block under construction and who has been mining. The layout follows mempool.space's mining dashboard: Block flow across the top, then two columns — reward stats and the difficulty adjustment, the pools and the hashrate, recent blocks and the adjustments — and our own panels beneath. **View more »** on the pools, hashrate, recent blocks and adjustments cards opens that card full screen (Esc, the close button or a click outside shuts it).
937
+
938
+ ![Mining](images/mining.jpg)
939
+
940
+ | Panel | What it shows |
941
+ |---|---|
942
+ | **Reward stats** | The last 144 blocks: the miners' reward (subsidy plus fees), the average fees per block and the average fee per transaction, from `getblockstats`, rolled forward a block at a time. Each carries its dollar figure while market polling is on (the cached spot price, never a new poll); off, a note says so. |
943
+ | **Difficulty adjustment** | Blocks remaining in the current period and when it ends at the pace so far, the estimated change (the pace projected over the period against the ten-minute target, within the protocol's factor-of-four bounds), the previous change, and the next halving's height and date. |
944
+ | **Pools** | The last week's blocks by pool, as a donut with its legend: luck (blocks found against the 1,008 the target spacing would give), the block count and how many pools. Every coinbase of the week is read from the node, eight every few seconds behind the live polls, and the note says how far that has got. |
945
+ | **Hashrate & difficulty** | The week's hashrate from `getnetworkhashps` and the current difficulty, and a year's chart: one block header a day gives that day's mean interval, and difficulty × 2³² over it is the day's hashrate estimate (the thin line), with a seven-day mean over it and the difficulty's steps on the right axis. |
946
+ | **Recent blocks** | The attributed window newest first: height (a link to the explorer), pool, when it was mined, the reward (the height's subsidy plus its fees) and the fees. Eight on the card, the whole window under View more. |
947
+ | **Adjustments** | The last periods: the first block's height, when, the difficulty and its change from the period before. Six on the card, a year under View more. |
948
+ | **Block flow** | The same Block flow as on Overview. |
949
+ | **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. |
950
+ | **Feerate landscape** | The template's transactions bucketed by sat/vB, with green buckets well above the block's median and red ones below it. |
951
+ | **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. |
952
+ | **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. |
953
+ | **Detailed** (click to expand) | What this node can and cannot answer about mining, and why. |
954
+
955
+ The block template is requested only while a page that shows it is open, because
956
+ answering it takes the node over a second of its single RPC thread.
957
+
958
+ ---
959
+
960
+ ## Events
961
+
962
+ The monitor's own event stream: what it observed and decided, such as blocks stored,
963
+ reorgs, stalls and nodes becoming unreachable. Node log lines are not shown here. Events of
964
+ kind `index` mark the start, finish or failure of an address index build; those three are also
965
+ shown as a notification in every open tab, because a build takes half an hour.
966
+
967
+ - **Filter text** matches the event text, tag, kind and address.
968
+ - **Severity** (`info`, `warn`, `error`) and **kind** drop-downs narrow the list.
969
+ - **clear** empties the local buffer. This affects only your browser, not the server.
970
+ - The count shows how many events match out of how many are buffered.
971
+
972
+ ---
973
+
974
+ ## Node & RPC
975
+
976
+ How the monitor treats your node, and where every number comes from.
977
+
978
+ | Panel | What it shows |
979
+ |---|---|
980
+ | **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. |
981
+ | **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**. |
982
+ | **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. |
983
+ | **Monitor self-telemetry** | The monitor's own memory, CPU and client counts. |
984
+ | **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. |
985
+ | **Panel sources** | The provenance table: each panel, the RPC method or log source behind it, and why that source was chosen. |
986
+ | **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. |
987
+ | **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. |
988
+
989
+ ---
990
+
991
+ ## Admin
992
+
993
+ Visible only when accounts are enabled (the default) and you are signed in as an admin.
994
+
995
+ - **Users**: every account with its role, creation date and last login, with buttons
996
+ to change the role or disable the account. **generate password** creates a user
997
+ with a random password, which is shown once and never stored in readable form.
998
+ - **Node actions**: the node actions that exist and whether each is enabled for you.
999
+ They are all disabled unless the operator enables them explicitly.
1000
+ - **Audit log**: sign-ins, denials and actions, without any credentials, plus how
1001
+ much of the log's disk budget is used.
1002
+ - **Change own password**: changing it signs out every session, including your own.
1003
+
1004
+ ---
1005
+
1006
+ ## Reading the data honestly
1007
+
1008
+ BlockYard never shows a number it did not measure, and it tells you when a figure is
1009
+ old or missing.
1010
+
1011
+ **Stale is marked, not hidden.** If a chart already has data and fresh samples stop
1012
+ arriving, the chart stays on screen and gets a small **amber `no fresh data · <age>`
1013
+ pill** in its corner. It is never blanked, and never presented as current. The same
1014
+ applies elsewhere:
1015
+
1016
+ - `stream` changes from `live` to `reconnecting` or `stale`.
1017
+ - A red bar under the header appears when the node stops answering or nothing has
1018
+ arrived.
1019
+ - Block space viewers say when the last pool read failed and the picture may be old.
1020
+ - Block flow marks a template that is behind the tip as a `stale template`.
1021
+ - The Markets table shows each exchange's age, or its error.
1022
+
1023
+ **Absent is not zero.** A dash (`–`) means *not reported* or *not measured yet*. It
1024
+ never means zero. A chart that has never had data shows a sentence explaining what it
1025
+ is waiting for, such as "need two blocks to measure an interval" or "the fee estimator
1026
+ has no data yet", rather than a flat line at zero. When the node genuinely reports
1027
+ zero or nothing, the page says so in words. For example, the mempool is empty, a
1028
+ template contains no packages, or `getpeerinfo` returns no rows while connections
1029
+ exist.
1030
+
1031
+ **Unreported fields are listed, not drawn.** Where this node's RPC omits something
1032
+ another node implementation provides, the page names the missing field. See *Fields
1033
+ this node does not report* on Mempool, the Upload card on Network, and *What this
1034
+ panel cannot tell you* on Overview.
1035
+
1036
+ **Inference looks different from measurement.** Projected blocks in Block flow are
1037
+ dashed and flat, and the depth chart draws a lower-bound total as a dotted line.
1038
+
1039
+ **Check provenance on Node & RPC.** *Panel sources* lists the source of every panel,
1040
+ and *Data quality* lists every known gap with a timestamp. When a figure surprises
1041
+ you, check there first. The same provenance table is served as `sources` by
1042
+ [`GET /api/config`](API.md#16-telemetry-and-configuration).
1043
+
1044
+ **Switching nodes wipes the charts.** The pixels on screen belong to the node you were
1045
+ looking at, so they are cleared when you pick another. Returning to a node you have
1046
+ already viewed restores its charts from the page's cache.
1047
+
1048
+ ---
1049
+
1050
+ ## Links, URLs and keyboard tips
1051
+
1052
+ **Every tab is a URL.** The page you are on is kept in the address bar's hash, so you
1053
+ can bookmark it or send it to someone who can reach the same monitor:
1054
+
1055
+ | Tab | Hash |
1056
+ |---|---|
1057
+ | Overview | `#overview` |
1058
+ | Block space | `#space` |
1059
+ | Chain & Sync | `#chain` |
1060
+ | Mempool | `#mempool` |
1061
+ | Explorer | `#explorer`, `#explorer/block/<height or hash>[/<page>]`, `#explorer/tx/<txid>`, `#explorer/address/<address>[/<page>]` |
1062
+ | Markets | `#markets` |
1063
+ | Kiosk | `#kiosk` |
1064
+ | Tetrust | `#tetrust` |
1065
+ | Blockout | `#blockout` |
1066
+ | Blockanoid | `#blockanoid` |
1067
+ | DOOM | `#doom` |
1068
+ | Quake | `#quake` |
1069
+ | Peers | `#peers` |
1070
+ | Network | `#network` |
1071
+ | Mining | `#mining` |
1072
+ | Events | `#logs` |
1073
+ | Node & RPC | `#node` |
1074
+ | Admin | `#admin` |
1075
+
1076
+ The browser's back and forward buttons move between explorer pages as you would
1077
+ expect. The selected node is not part of the URL: a shared link opens on whichever
1078
+ node the recipient's monitor picks by default.
1079
+
1080
+ **Keyboard and pointer:**
1081
+
1082
+ - **Enter** submits the explorer search, the block drill-down and the RPC console.
1083
+ - **Shift-click pause** freezes the event feed as well as the charts.
1084
+ - **Hover** almost anything for exact figures: Block flow cards, Block space cubes
1085
+ (once the board is at rest), 3D candles, chart points, flow bands in the explorer,
1086
+ and the depth chart.
1087
+ - **Esc** leaves Kiosk full screen.
1088
+ - The **copy** buttons in the explorer copy a hash, txid or address. They also work
1089
+ when the monitor is served over plain HTTP.
1090
+
1091
+ **Motion:** if your system is set to reduce motion, Block flow stops animating and
1092
+ the Block space idle effects are switched off. Every number stays.
1093
+
1094
+
1095
+ ## Display settings
1096
+
1097
+ The gear in the header opens **Display settings**. They are stored on the server, in
1098
+ `config/blockyard.json` beside `config/local.json`, so every browser that opens this monitor sees
1099
+ the same choices; each browser also keeps a copy so it can draw before the server answers. No
1100
+ account is needed (with accounts on, saving needs the admin role). They apply as soon as you
1101
+ change them, and **reset** puts every one back to the shipped default.
1102
+
1103
+ They change how the pages are *drawn*, never what is measured: every figure on the page reads the
1104
+ same whatever you choose here.
1105
+
1106
+ ![Display settings](images/settings.jpg)
1107
+
1108
+ The panel is **tabbed**, in three labelled rows: **Boards** (Appearance, Block space, Sky,
1109
+ Markets & Price), **Effects** (Space effects, Market effects) and **Diversions** (Tetrust,
1110
+ Blockout, Blockanoid). The two **effects** tabs are lists of switches, so they also get **all
1111
+ on** and **all off**; twenty-nine of them is a lot of clicking otherwise.
1112
+
1113
+ ### Appearance
1114
+
1115
+ The colours of the layout: the page, its cards, text, lines, the accent, and the axis text, grid
1116
+ lines and tooltips of every chart. The 3D boards are space whatever you choose, and the
1117
+ Explorer's block and transaction pages keep their own dark cards.
1118
+
1119
+ - **Theme mode** — Light, Dark or System. Every theme has a light face and a dark face; the mode
1120
+ picks which. System follows the operating system's setting and changes with it.
1121
+ - **Theme** — a card per theme, each with a strip of its swatches in the face the mode picks:
1122
+ - **BlockYard** — the shipped look, charcoal and bitcoin orange. The default; its dark face is
1123
+ exactly what the monitor drew before this tab existed.
1124
+ - **Mono** — clean grayscale, minimal and focused. The good, warning and bad colours stay, muted.
1125
+ - **Nous** — GitHub's chrome with a Nous blue accent.
1126
+ - **GitHub** — GitHub Light Default and Dark Default.
1127
+ - **Catppuccin** — the soothing pastels, Latte (light) and Mocha (dark).
1128
+ - **Custom** — your own nine colours, from the pickers below the cards.
1129
+ - **customise …** — the button beside the cards copies the theme on screen into the nine pickers
1130
+ and selects Custom, so you start from a look rather than from scratch.
1131
+ - **The nine pickers** — Page, Panels, Text, Muted text, Accent, Lines, Good, Warning and Bad.
1132
+ Everything else (a raised panel, the softer rules, the fainter text, the darker accent of a
1133
+ pressed button) is derived from them, so a custom theme hangs together whatever you pick.
1134
+ Whether Custom counts as light or dark follows from the Page colour, so a pale page gets dark
1135
+ derived shades and vice versa. The pickers are dimmed until Custom is the theme.
1136
+
1137
+ Like every other setting these are saved on the server, so the theme is the same on every screen
1138
+ of this monitor; the sign-in page draws in the theme this browser last saw.
1139
+
1140
+ ### Block space
1141
+
1142
+ The 3D board on Overview, Block space, Mempool and Kiosk. If the board is heavy on your machine,
1143
+ these are the settings that buy it back, roughly most expensive first:
1144
+
1145
+ | setting | what it does |
1146
+ |---|---|
1147
+ | **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. |
1148
+ | **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. |
1149
+ | **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. |
1150
+ | **Idle effects** | The master switch for the effects that play while the board rests. Which of them may play is the **Space effects** tab. |
1151
+ | **Stone edges** | The dark seam drawn around each stone. |
1152
+ | **Neon grid** | The glowing grid on the board. |
1153
+ | **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. |
1154
+ | **Grid brightness** | How hard the grid burns, from 0 to 2. 1 is the shipped grid; 0 leaves the lines drawn but unlit. |
1155
+ | **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. |
1156
+ | **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. |
1157
+ | **Neon colour** / **Neon brightness** | The one colour, when you have chosen it, and how hard the tubes glow (0.2x to 2x). |
1158
+ | **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. |
1159
+ | **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. |
1160
+ | **Departures and arrivals** | How blocks leave and rejoin the board on a refresh. |
1161
+ | **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. |
1162
+ | **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. |
1163
+ | **Board curve** | How far the board bows toward you. 0 is flat. |
1164
+ | **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. |
1165
+
1166
+ ### Sky
1167
+
1168
+ One sky, shared by every board that shows stars — so the density you choose applies to Block
1169
+ space, Markets and Tetrust alike. Whether a given board shows it stays that board's own switch.
1170
+
1171
+ | setting | what it does |
1172
+ |---|---|
1173
+ | **Star density** / **Star brightness** | How many stars (up to 8x the shipped number) and how strongly they burn. |
1174
+ | **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. |
1175
+ | **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. |
1176
+ | **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. |
1177
+ | **Star colours** | Warm old stars in the nucleus, blue-white young ones in the arms. Off is one colour of starlight. |
1178
+ | **Star glints** | The halo and cross glint on the brightest stars. |
1179
+
1180
+ ### Space effects and Market effects
1181
+
1182
+ One tab per board. **Space effects** is a switch for each of the **29** idle effects the Block
1183
+ space board can play, listed under [Idle effects](#idle-effects) above; **Market effects** is a
1184
+ switch for each of the **16** the Markets board can play (named under Idle effects). Each tab has **all on** and **all off**, and its own
1185
+ **No repeats within**: how many other effects must play before one can play again (12 by
1186
+ default; 0 allows a repeat straight away).
1187
+
1188
+ Each tab also sets **its board's cadence**: **Between effects, at least** and **Between
1189
+ effects, at most** (seconds; the board rests a random span between the two after each effect
1190
+ — 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).
1191
+ The Space effects tab has one more, **First effect after landing** (seconds, give or take a
1192
+ third, before the first effect once the blocks land — 1.2 by default, up to two minutes; the
1193
+ board re-lays on every refresh, so this is also how soon one follows each refresh). The candle
1194
+ board has no landing, so the Markets tab has no such slider: its first effect after a refresh
1195
+ keeps the cadence. Push both "between" sliders up for an effect only now and then; the switches
1196
+ and **all off** are still the way to a board that never plays one. Turning a tab's switches all off leaves that board
1197
+ still; so does the single **Idle effects** switch on the Block space tab, or **Board effects** on
1198
+ Markets & Price.
1199
+
1200
+ ### Markets & Price
1201
+
1202
+ First the feed itself: **Enable market polling**, off out of the box, is the one switch that
1203
+ lets this monitor talk to anyone but your node (see [Markets](#markets)). Then the candle board
1204
+ on Markets and Kiosk: the **star field** on or off, and **board effects** — one switch for
1205
+ everything that moves on this board, both the idle effects and the flight when the candles
1206
+ refresh. Which idle effects may play is the **Market effects** tab.
1207
+
1208
+ Your toolbar choices are remembered too: the **exchange** whose candles are drawn and the
1209
+ **range** (24 hours, 48 hours or 7 days). Click them on the Markets page or set them here; either
1210
+ way the page opens where you left it.
1211
+
1212
+ | setting | what it does |
1213
+ |---|---|
1214
+ | **Enable market polling** | **Off by default.** Lets the server ask five exchanges for prices, candles and order books — the only thing the monitor ever says to anyone but your node. Until it is on, Markets and Kiosk say so and the explorer shows no dollar figures. Shared by every screen; takes effect at once, and unticking parks the feed at once. (`BLOCKYARD_MARKETS=0` on the server removes the feed so that this box cannot turn it on.) |
1215
+ | **Price line on Overview** | The USD median, spread, 24 h volume and how many books reported, at the top of Overview. It needs market polling (above); with that on, 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. |
1216
+ | **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. |
1217
+
1218
+ ### Blockout
1219
+
1220
+ The Breakout court. Four of these — **star field**, **spiral galaxy**, **neon bricks** and **sound
1221
+ effects** — are the same switches that sit on the game's own panel, so a change in either place
1222
+ shows in both. The rest are here only:
1223
+
1224
+ | setting | what it does |
1225
+ |---|---|
1226
+ | **Galaxy centre** | Where the spiral's nucleus sits on the panel: behind the court, or any corner. |
1227
+ | **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. |
1228
+ | **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. |
1229
+
1230
+ What the sky is *made of* — density, brightness, nebulae, dust and the rest — comes from the
1231
+ **Sky** tab, which every board shares.
1232
+
1233
+ ### Blockanoid
1234
+
1235
+ The Arkanoid court. **Star field**, **spiral galaxy**, **neon bricks** and **sound effects** are the
1236
+ same switches that sit on the game's own panel. Two more are here only, and they change the *rules*:
1237
+
1238
+ | setting | what it does |
1239
+ |---|---|
1240
+ | **Capsules** | Whether broken bricks drop the falling letters at all. Off makes it a pure Breakout. |
1241
+ | **Minions** | Whether the drifting shapes turn up. Off clears the ones already on the court. |
1242
+ | **Galaxy centre** | Where the spiral's nucleus sits on the panel. |
1243
+ | **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. |
1244
+ | **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. |
1245
+
1246
+ ### Tetrust
1247
+
1248
+ The game's own settings. Four of them — **star field**, **spiral galaxy**, **music** and **sound
1249
+ effects** — are the same switches that appear on the game's own panel, so a change in either place
1250
+ shows in both. The rest are here only:
1251
+
1252
+ | setting | what it does |
1253
+ |---|---|
1254
+ | **Galaxy centre** | Where the spiral's nucleus sits on the panel: behind the title, or any corner. |
1255
+ | **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. |
1256
+ | **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. |
1257
+ | **Neon pieces** | The pieces and the stack as dim solid bodies under lit tubes, the same finish as the Block space board. |
1258
+ | **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. |
1259
+ | **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. |
1260
+
1261
+ What the sky is *made of* — density, brightness, nebulae, dust and the rest — comes from the
1262
+ **Sky** tab, which every board shares.