upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md88
1 files changed, 83 insertions, 5 deletions
diff --git a/README.md b/README.md
index 6746e02..ef4f39b 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,8 @@ Worth being precise, because the difference matters if you are relying on it.
36 36
37**The node still listens on 8433.** Nothing dials by IP any more, but the listener is still there, so anyone who already knows your address and can reach that port may connect directly. If that matters to you, firewall it. 37**The node still listens on 8433.** Nothing dials by IP any more, but the listener is still there, so anyone who already knows your address and can reach that port may connect directly. If that matters to you, firewall it.
38 38
39This is unlinkability between peers, not anonymity against a network observer. It is not Tor. 39This is unlinkability between peers, not anonymity against a network observer.
40For Tor routing, start the node with `-tor`; see [Tor mode](docs/tor.md).
40 41
41--- 42---
42 43
@@ -73,6 +74,45 @@ scripts/verify-release.sh latest
73See [release verification](docs/release-verification.md) for the full release 74See [release verification](docs/release-verification.md) for the full release
74audit flow and the maintainer signing step. 75audit flow and the maintainer signing step.
75 76
77Bitflash also ships a deterministic UTXO-set commitment tool:
78
79```bash
80python3 scripts/verify-utxo-set.py --out utxo-report.json --json
81```
82
83It reconstructs the best chain from local block files, computes the current
84UTXO root and supply, and writes canonical JSON that independent auditors can
85compare or timestamp externally with OpenTimestamps. See
86[UTXO-set commitments](docs/utxo-commitment.md).
87
88The same root can prove one unspent output without sharing the full UTXO set:
89
90```bash
91python3 scripts/prove-utxo.py TXID:VOUT --out utxo-proof.json --json
92python3 scripts/verify-utxo-proof.py utxo-proof.json
93```
94
95See [UTXO inclusion proofs](docs/utxo-proofs.md).
96
97Bitflash also ships a deterministic fair-launch verifier:
98
99```bash
100python3 scripts/verify-fair-launch.py --max-blocks 1000 --out bitflash-fair-launch-report.json --json
101```
102
103The report reads the local chain directly, checks the genesis launch baseline,
104and produces canonical JSON whose hash can be compared by independent auditors
105or timestamped externally with OpenTimestamps. See
106[fair-launch verification](docs/fair-launch.md).
107
108For a static local block explorer, generate HTML and JSON from either a data
109directory or explicit block files:
110
111```bash
112python3 scripts/build-explorer.py --datadir ~/.bitflash ./explorer-out
113python3 scripts/build-explorer.py ~/.bitflash/blk0001.dat ~/.bitflash/blk0002.dat ./explorer-out
114```
115
76**Keep your node current.** Consensus rules have changed since the first 116**Keep your node current.** Consensus rules have changed since the first
77releases — 1.2.1 fixed a bug that let anyone spend anyone's coins, and 1.2.2 117releases — 1.2.1 fixed a bug that let anyone spend anyone's coins, and 1.2.2
78added a per-block signature-operation cap. A node on an older build will accept 118added a per-block signature-operation cap. A node on an older build will accept
@@ -219,15 +259,37 @@ Open **Options** from the menu bar. Under Mining Mode:
219 259
220Pool announcements are published on Nostr with live status fields, so external tools can query the latest pool state by `.btf` address. 260Pool announcements are published on Nostr with live status fields, so external tools can query the latest pool state by `.btf` address.
221 261
262Pool operators also write a local `pool_status.json` every ten seconds and a
263`pool_rounds.json` proof ledger whenever they find blocks or pay miners. By
264default both are created in the data directory; use `-poolstatusfile=PATH` and
265`-poolroundsfile=PATH` to write them somewhere a dashboard or web sync can read.
266The files are informational only: nodes still discover pools through Nostr and
267`.btf`, not through any web domain.
268
222**Participant** — mine to someone else's pool. Enter or select the pool's `.btf` address and enable Start Mining. 269**Participant** — mine to someone else's pool. Enter or select the pool's `.btf` address and enable Start Mining.
223 270
224SRBMiner and XMRig connect to operator pools through the `.btf` path: 271The built-in participant miner connects to operator pools through the `.btf`
272path. External miners can use Bitflash as a local Stratum bridge:
225 273
226```bash 274```bash
227SRBMiner-MULTI --algorithm randomx --pool POOL_BTF_ADDRESS --wallet YOUR_BTF_ADDRESS --password x 275./bitflash -nogui -stratumbridge=POOL_BTF_ADDRESS -stratumbridgeport=3333
228xmrig -a rx/0 -o POOL_BTF_ADDRESS -u YOUR_BTF_ADDRESS -p x 276SRBMiner-MULTI --algorithm randomx --pool 127.0.0.1:3333 --wallet YOUR_BTF_ADDRESS --password x
277xmrig -a rx/0 -o 127.0.0.1:3333 -u YOUR_BTF_ADDRESS -p x
229``` 278```
230 279
280Estimate rewards and electricity cost locally:
281
282```bash
283python3 scripts/bitflash-mining-calculator.py \
284 --hashrate 21 --hashrate-unit kh/s \
285 --network-hashrate 1.56 --network-hashrate-unit mh/s \
286 --watts 140 --kwh-cost 0.10 \
287 --price 0.001 --pool-fee 1
288```
289
290See [mining calculator](docs/mining-calculator.md). Price is manual until
291Bitflash has a reliable public market.
292
231--- 293---
232 294
233## Headless / server mode 295## Headless / server mode
@@ -236,7 +298,11 @@ xmrig -a rx/0 -o POOL_BTF_ADDRESS -u YOUR_BTF_ADDRESS -p x
236./bitflash -nogui # node only 298./bitflash -nogui # node only
237./bitflash -nogui -gen # node + solo mining 299./bitflash -nogui -gen # node + solo mining
238./bitflash -nogui -gen -operator # pool operator 300./bitflash -nogui -gen -operator # pool operator
301./bitflash -nogui -gen -operator \
302 -poolstatusfile=/var/www/pool_status.json \
303 -poolroundsfile=/var/www/pool_rounds.json
239./bitflash -nogui -gen -participant=POOL_BTF_ADDRESS # mine to pool 304./bitflash -nogui -gen -participant=POOL_BTF_ADDRESS # mine to pool
305./bitflash -nogui -stratumbridge=POOL_BTF_ADDRESS # local bridge for XMRig/SRBMiner
240``` 306```
241 307
242Every option takes `-` or `/`. **Under MSYS2 use the `-` form** — the shell 308Every option takes `-` or `/`. **Under MSYS2 use the `-` form** — the shell
@@ -253,6 +319,8 @@ Other options worth knowing:
253```bash 319```bash
254-datadir=PATH # wallet and chain data elsewhere 320-datadir=PATH # wallet and chain data elsewhere
255-port=N # P2P listen port, default 8433 321-port=N # P2P listen port, default 8433
322-socks=HOST:PORT # SOCKS5 for outbound Nostr and .btf rendezvous dials
323-tor[=HOST:PORT] # Tor mode; default local Tor SOCKS5 proxy is 127.0.0.1:9050
256-debug # verbose log; without it debug.log is nearly silent 324-debug # verbose log; without it debug.log is nearly silent
257-help # full list 325-help # full list
258``` 326```
@@ -261,10 +329,20 @@ Other options worth knowing:
261needed — the data directory takes an exclusive lock, so a second node pointed at 329needed — the data directory takes an exclusive lock, so a second node pointed at
262the same one will refuse to start. 330the same one will refuse to start.
263 331
332`-socks=127.0.0.1:9050` routes outbound Nostr discovery and `.btf` rendezvous
333dials through a local SOCKS5 proxy such as Tor. When it is set, the node skips
334plain HTTP external-IP probes instead of leaking a direct request outside the
335proxy. IPv6 proxy endpoints use brackets, for example `-socks=[::1]:9050`.
336
337`-tor` is a privacy shorthand for the usual local Tor SOCKS5 listener at
338`127.0.0.1:9050`. It routes outbound Nostr discovery and `.btf` rendezvous
339dials through Tor, refuses direct `.onion` resolution, and keeps external-IP
340probes disabled. Use `-tor=HOST:PORT` when Tor listens somewhere else.
341
264### When something looks wrong 342### When something looks wrong
265 343
266**Menu > Diagnostics**, and the same report in `debug.log` every ten minutes: 344**Menu > Diagnostics**, and the same report in `debug.log` every ten minutes:
267peers held against peers `select()` is actually watching, blocks received and how 345peers held against peers the socket loop is actually watching, blocks received and how
268many arrived without a parent, the proof-of-work mode with the live miner thread 346many arrived without a parent, the proof-of-work mode with the live miner thread
269count, sockets by the part of the program that opened them, and per peer how long 347count, sockets by the part of the program that opened them, and per peer how long
270since the last message each way. There is a copy button — if you open an issue, 348since the last message each way. There is a copy button — if you open an issue,