diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 88 |
1 files changed, 83 insertions, 5 deletions
| @@ -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 | ||
| 39 | This is unlinkability between peers, not anonymity against a network observer. It is not Tor. | 39 | This is unlinkability between peers, not anonymity against a network observer. |
| 40 | For 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 | |||
| 73 | See [release verification](docs/release-verification.md) for the full release | 74 | See [release verification](docs/release-verification.md) for the full release |
| 74 | audit flow and the maintainer signing step. | 75 | audit flow and the maintainer signing step. |
| 75 | 76 | ||
| 77 | Bitflash also ships a deterministic UTXO-set commitment tool: | ||
| 78 | |||
| 79 | ```bash | ||
| 80 | python3 scripts/verify-utxo-set.py --out utxo-report.json --json | ||
| 81 | ``` | ||
| 82 | |||
| 83 | It reconstructs the best chain from local block files, computes the current | ||
| 84 | UTXO root and supply, and writes canonical JSON that independent auditors can | ||
| 85 | compare or timestamp externally with OpenTimestamps. See | ||
| 86 | [UTXO-set commitments](docs/utxo-commitment.md). | ||
| 87 | |||
| 88 | The same root can prove one unspent output without sharing the full UTXO set: | ||
| 89 | |||
| 90 | ```bash | ||
| 91 | python3 scripts/prove-utxo.py TXID:VOUT --out utxo-proof.json --json | ||
| 92 | python3 scripts/verify-utxo-proof.py utxo-proof.json | ||
| 93 | ``` | ||
| 94 | |||
| 95 | See [UTXO inclusion proofs](docs/utxo-proofs.md). | ||
| 96 | |||
| 97 | Bitflash also ships a deterministic fair-launch verifier: | ||
| 98 | |||
| 99 | ```bash | ||
| 100 | python3 scripts/verify-fair-launch.py --max-blocks 1000 --out bitflash-fair-launch-report.json --json | ||
| 101 | ``` | ||
| 102 | |||
| 103 | The report reads the local chain directly, checks the genesis launch baseline, | ||
| 104 | and produces canonical JSON whose hash can be compared by independent auditors | ||
| 105 | or timestamped externally with OpenTimestamps. See | ||
| 106 | [fair-launch verification](docs/fair-launch.md). | ||
| 107 | |||
| 108 | For a static local block explorer, generate HTML and JSON from either a data | ||
| 109 | directory or explicit block files: | ||
| 110 | |||
| 111 | ```bash | ||
| 112 | python3 scripts/build-explorer.py --datadir ~/.bitflash ./explorer-out | ||
| 113 | python3 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 |
| 77 | releases — 1.2.1 fixed a bug that let anyone spend anyone's coins, and 1.2.2 | 117 | releases — 1.2.1 fixed a bug that let anyone spend anyone's coins, and 1.2.2 |
| 78 | added a per-block signature-operation cap. A node on an older build will accept | 118 | added 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 | ||
| 220 | Pool announcements are published on Nostr with live status fields, so external tools can query the latest pool state by `.btf` address. | 260 | Pool announcements are published on Nostr with live status fields, so external tools can query the latest pool state by `.btf` address. |
| 221 | 261 | ||
| 262 | Pool 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 | ||
| 264 | 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. | ||
| 266 | The 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 | ||
| 224 | SRBMiner and XMRig connect to operator pools through the `.btf` path: | 271 | The built-in participant miner connects to operator pools through the `.btf` |
| 272 | path. External miners can use Bitflash as a local Stratum bridge: | ||
| 225 | 273 | ||
| 226 | ```bash | 274 | ```bash |
| 227 | SRBMiner-MULTI --algorithm randomx --pool POOL_BTF_ADDRESS --wallet YOUR_BTF_ADDRESS --password x | 275 | ./bitflash -nogui -stratumbridge=POOL_BTF_ADDRESS -stratumbridgeport=3333 |
| 228 | xmrig -a rx/0 -o POOL_BTF_ADDRESS -u YOUR_BTF_ADDRESS -p x | 276 | SRBMiner-MULTI --algorithm randomx --pool 127.0.0.1:3333 --wallet YOUR_BTF_ADDRESS --password x |
| 277 | xmrig -a rx/0 -o 127.0.0.1:3333 -u YOUR_BTF_ADDRESS -p x | ||
| 229 | ``` | 278 | ``` |
| 230 | 279 | ||
| 280 | Estimate rewards and electricity cost locally: | ||
| 281 | |||
| 282 | ```bash | ||
| 283 | python3 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 | |||
| 290 | See [mining calculator](docs/mining-calculator.md). Price is manual until | ||
| 291 | Bitflash 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 | ||
| 242 | Every option takes `-` or `/`. **Under MSYS2 use the `-` form** — the shell | 308 | Every 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: | |||
| 261 | needed — the data directory takes an exclusive lock, so a second node pointed at | 329 | needed — the data directory takes an exclusive lock, so a second node pointed at |
| 262 | the same one will refuse to start. | 330 | the same one will refuse to start. |
| 263 | 331 | ||
| 332 | `-socks=127.0.0.1:9050` routes outbound Nostr discovery and `.btf` rendezvous | ||
| 333 | dials through a local SOCKS5 proxy such as Tor. When it is set, the node skips | ||
| 334 | plain HTTP external-IP probes instead of leaking a direct request outside the | ||
| 335 | proxy. 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 | ||
| 339 | dials through Tor, refuses direct `.onion` resolution, and keeps external-IP | ||
| 340 | probes 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: |
| 267 | peers held against peers `select()` is actually watching, blocks received and how | 345 | peers held against peers the socket loop is actually watching, blocks received and how |
| 268 | many arrived without a parent, the proof-of-work mode with the live miner thread | 346 | many arrived without a parent, the proof-of-work mode with the live miner thread |
| 269 | count, sockets by the part of the program that opened them, and per peer how long | 347 | count, sockets by the part of the program that opened them, and per peer how long |
| 270 | since the last message each way. There is a copy button — if you open an issue, | 348 | since the last message each way. There is a copy button — if you open an issue, |