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:
authorbitflash-maintainer <noreply@bitflash.invalid>2026-08-26 22:41:53 +0000
committerbitflash-maintainer <noreply@bitflash.invalid>2026-08-26 22:41:53 +0000
commitbbe04dc8c96b4c4766d2771d3438233bf82687c0 (patch)
tree62e5a1febfb8e9bc38d133ac7981e9ef93918484 /README.md
parent991853fa55a749d28d6f9e507ce72b289df92785 (diff)
parent9e39a50d1f110020b0841d31e4b931aa877cc448 (diff)
Merge upstream v1.2.19 into the fork
Merges upstream tag v1.2.19 (9e39a50) into merge/upstream-1.2.18 (991853f). Unlike the 1.2.15->1.2.18 replay, bc3de30 is a true ancestor of our branch via a9b4f89, so this is an ordinary three-way merge with merge-base bc3de30. Delta: 36 files, +3265/-163, the Tor onion transport (managed Tor, signed direct onion endpoints, onion-only dial mode) and the nHDNext restore fix. src/main.cpp, main.h, script.cpp/h and db.cpp/h are byte-identical between the two tags, and the poll() socket loop carries no diff hunks, so the merge is consensus-neutral and the soak-tested socket paths are unchanged. relay/ is untouched; the payout ledger (rpc.cpp) is untouched. 7 conflict blocks in 6 files, resolved as follows. Makefile -- VERSION. Ours: stays 1.2.19+sec with the naming comment updated, so artifacts from this tree cannot be mistaken for the upstream release. src/Makefile, src/makefile.mingw -- HEADERS list. Ours (no market.h) plus their tor.h. NODE_OBJS auto-merged correctly: no market.o, tor.o present. src/selftest.cpp -- known-tests list. Union: payout-ledger (ours) and managed-tor (theirs). src/main_gui.cpp -- one block. Our /dumpaddresses kept; their BtfStopManagedTor() on the StartNode failure path taken. The /rvrelay pin, /noannounce and the marketplace removal auto-merged and were verified intact. src/nostr.cpp -- two blocks in ResolveDescriptor. Signature takes both out-params (our fExchangeOk, their rawOut). The body keeps our drain-to-EOSE read -- returning early poisons the pooled socket for the next caller -- and adds their rawOut capture. Our TLS 1.2 floor (SSL_CTX_set_min_proto_version) is untouched by this merge; upstream 1.2.19 still has no floor of its own. Upstream's release commit also added four build logs and a compiled Python cache (build-1219.log, build-17.log, build-appimage.log, build-node.log, scripts/__pycache__/bitflash_chain.cpython-313.pyc). Removed here; they are build output, not source.
Diffstat (limited to 'README.md')
-rw-r--r--README.md63
1 files changed, 53 insertions, 10 deletions
diff --git a/README.md b/README.md
index ef4f39b..1782bc3 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ Bitflash keeps Satoshi's original consensus rules and replaces two things:
22 22
23**RandomX proof of work.** Memory-hard algorithm used by Monero. A laptop competes equally with a server. ASICs and GPUs have no advantage. 23**RandomX proof of work.** Memory-hard algorithm used by Monero. A laptop competes equally with a server. ASICs and GPUs have no advantage.
24 24
25**Anonymous addressing.** Every node has a `.btf` address derived from its public key, similar to a Tor `.onion`. Nodes reach each other through encrypted rendezvous tunnels, so no port forwarding is needed and a node behind CGNAT works normally. 25**Anonymous addressing.** Every node has a `.btf` address derived from its public key, similar to a Tor `.onion`. Nodes reach each other through encrypted rendezvous tunnels by default, and can advertise a signed direct `.onion` endpoint for Tor peers.
26 26
27No premine. No ICO. 50 BTF per block, halving on schedule, 21M cap, ~2 minute blocks. 27No premine. No ICO. 50 BTF per block, halving on schedule, 21M cap, ~2 minute blocks.
28 28
@@ -30,14 +30,17 @@ No premine. No ICO. 50 BTF per block, halving on schedule, 21M cap, ~2 minute bl
30 30
31Worth being precise, because the difference matters if you are relying on it. 31Worth being precise, because the difference matters if you are relying on it.
32 32
33**A peer you reach over `.btf` does not learn your IP.** All outbound connections go through a rendezvous tunnel; there is no IP-based peer dialling left in the node. The relay forwards encrypted bytes and cannot read or alter them. 33**A peer you reach over `.btf` does not learn your IP.** Outbound peer discovery uses rendezvous tunnels by default. If both sides use Tor and the peer advertises a signed `.onion` endpoint, the node connects directly to that hidden service instead. In both cases the peer does not see your clearnet IP.
34 34
35**The rendezvous relay does see your IP.** It has to — it is the thing your TCP connection terminates on. Relays are run by volunteers, so treat that as a party who knows you are on the network. 35**The rendezvous relay sees your IP unless you use Tor.** It has to — it is the thing your TCP connection terminates on. With `-tor`, the relay sees Tor instead. With a signed direct `.onion` peer endpoint, the relay is not on that connection path at all.
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. 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). 40For Tor routing and direct onion peer endpoints, start the node with `-tor`;
41see [Tor mode](docs/tor.md).
42For a plain SOCKS5 proxy without Tor-specific defaults, use
43`-socks=HOST:PORT`.
41 44
42--- 45---
43 46
@@ -49,6 +52,8 @@ configuration — it connects automatically and starts syncing.
49**Linux:** make the `.AppImage` executable and run it. 52**Linux:** make the `.AppImage` executable and run it.
50 53
51**Windows:** extract the `-windows.zip` and run `Bitflash.exe`. 54**Windows:** extract the `-windows.zip` and run `Bitflash.exe`.
55If you want managed Tor without a separate Tor install, use the
56`-windows-with-tor.zip` package and start Bitflash with `-managedtor`.
52 57
53Every release ships a `SHA256SUMS` covering the assets. Verifying takes a second 58Every release ships a `SHA256SUMS` covering the assets. Verifying takes a second
54and is worth doing: 59and is worth doing:
@@ -74,6 +79,14 @@ scripts/verify-release.sh latest
74See [release verification](docs/release-verification.md) for the full release 79See [release verification](docs/release-verification.md) for the full release
75audit flow and the maintainer signing step. 80audit flow and the maintainer signing step.
76 81
82Public mirrors should make the latest checksum files available both under the
83versioned release directory and at the release root:
84
85```text
86https://releases.bitflash.network/v1.2.19/SHA256SUMS
87https://releases.bitflash.network/SHA256SUMS # alias to latest
88```
89
77Bitflash also ships a deterministic UTXO-set commitment tool: 90Bitflash also ships a deterministic UTXO-set commitment tool:
78 91
79```bash 92```bash
@@ -113,6 +126,12 @@ python3 scripts/build-explorer.py --datadir ~/.bitflash ./explorer-out
113python3 scripts/build-explorer.py ~/.bitflash/blk0001.dat ~/.bitflash/blk0002.dat ./explorer-out 126python3 scripts/build-explorer.py ~/.bitflash/blk0001.dat ~/.bitflash/blk0002.dat ./explorer-out
114``` 127```
115 128
129The generated explorer is static and self-contained: `index.html`,
130`style.css`, `explorer.js`, `blocks.json`, `block/*.json`, and `logo.png`. It is
131safe to host behind a strict policy such as `default-src 'none'; img-src 'self';
132style-src 'self'; script-src 'self'; connect-src 'self'; base-uri 'none';
133form-action 'none'`.
134
116**Keep your node current.** Consensus rules have changed since the first 135**Keep your node current.** Consensus rules have changed since the first
117releases — 1.2.1 fixed a bug that let anyone spend anyone's coins, and 1.2.2 136releases — 1.2.1 fixed a bug that let anyone spend anyone's coins, and 1.2.2
118added a per-block signature-operation cap. A node on an older build will accept 137added a per-block signature-operation cap. A node on an older build will accept
@@ -265,6 +284,7 @@ default 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. 284`-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 285The files are informational only: nodes still discover pools through Nostr and
267`.btf`, not through any web domain. 286`.btf`, not through any web domain.
287See [public pool directory](docs/pool-directory.md) for the website/API shape.
268 288
269**Participant** — mine to someone else's pool. Enter or select the pool's `.btf` address and enable Start Mining. 289**Participant** — mine to someone else's pool. Enter or select the pool's `.btf` address and enable Start Mining.
270 290
@@ -319,8 +339,10 @@ Other options worth knowing:
319```bash 339```bash
320-datadir=PATH # wallet and chain data elsewhere 340-datadir=PATH # wallet and chain data elsewhere
321-port=N # P2P listen port, default 8433 341-port=N # P2P listen port, default 8433
322-socks=HOST:PORT # SOCKS5 for outbound Nostr and .btf rendezvous dials 342-socks=HOST:PORT # SOCKS5 for outbound Nostr, .btf relay, and onion peer dials
323-tor[=HOST:PORT] # Tor mode; default local Tor SOCKS5 proxy is 127.0.0.1:9050 343-tor[=HOST:PORT] # Tor mode; default local Tor SOCKS5 proxy is 127.0.0.1:9050
344-managedtor[=PATH] # start Tor, create a hidden service, advertise its onion
345-onionservice=HOST.onion:PORT # advertise this node's Tor hidden service
324-debug # verbose log; without it debug.log is nearly silent 346-debug # verbose log; without it debug.log is nearly silent
325-help # full list 347-help # full list
326``` 348```
@@ -329,15 +351,23 @@ Other options worth knowing:
329needed — the data directory takes an exclusive lock, so a second node pointed at 351needed — the data directory takes an exclusive lock, so a second node pointed at
330the same one will refuse to start. 352the same one will refuse to start.
331 353
332`-socks=127.0.0.1:9050` routes outbound Nostr discovery and `.btf` rendezvous 354`-socks=127.0.0.1:9050` routes outbound Nostr discovery, `.btf` rendezvous
333dials through a local SOCKS5 proxy such as Tor. When it is set, the node skips 355dials, and direct `.onion` peer dials through a local SOCKS5 proxy such as Tor.
356When it is set, the node skips
334plain HTTP external-IP probes instead of leaking a direct request outside the 357plain HTTP external-IP probes instead of leaking a direct request outside the
335proxy. IPv6 proxy endpoints use brackets, for example `-socks=[::1]:9050`. 358proxy. IPv6 proxy endpoints use brackets, for example `-socks=[::1]:9050`.
336 359
337`-tor` is a privacy shorthand for the usual local Tor SOCKS5 listener at 360`-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 361`127.0.0.1:9050`. It routes outbound Nostr discovery, `.btf` rendezvous dials,
339dials through Tor, refuses direct `.onion` resolution, and keeps external-IP 362and signed direct `.onion` peer dials through Tor, and keeps external-IP probes
340probes disabled. Use `-tor=HOST:PORT` when Tor listens somewhere else. 363disabled. Use `-tor=HOST:PORT` when Tor listens somewhere else.
364
365`-managedtor[=PATH]` starts a Tor process for this node, writes a local `torrc`,
366creates a v3 hidden service for port `8433`, routes outbound discovery through
367that Tor instance, and signs the generated `.onion:8433` endpoint into the
368node's `.btf` descriptor. Without `PATH`, Bitflash looks for `tor/tor.exe`,
369`tor.exe`, or `tor` beside the binary and then on `PATH`. The hidden-service key
370is stored under the Bitflash data directory in `managed-tor/onion-service/`.
341 371
342### When something looks wrong 372### When something looks wrong
343 373
@@ -424,6 +454,19 @@ make windows
424``` 454```
425Installs deps via pacman, produces `Bitflash-*-windows.zip`. 455Installs deps via pacman, produces `Bitflash-*-windows.zip`.
426 456
457To build the Windows package that also carries the Tor Expert Bundle:
458
459```bash
460make windows-tor
461```
462
463That produces `Bitflash-*-windows-with-tor.zip`. The release script downloads
464the Tor Expert Bundle from the official Tor archive, verifies its pinned SHA256,
465optionally verifies the Tor Project GPG signature when `gpg` is available, and
466places `tor/tor.exe` beside `Bitflash.exe` so `-managedtor` works without a
467separate Tor install. For release builds, use `TOR_VERIFY_GPG=required make
468windows-tor` to require the extra signature check.
469
427--- 470---
428 471
429## At a glance 472## At a glance