diff options
| author | bitflash <admin@bitflash.network> | 2026-08-12 10:31:29 -0300 |
|---|---|---|
| committer | bitflash <admin@bitflash.network> | 2026-08-12 10:31:29 -0300 |
| commit | c8d798807e69ddbe55bfab8a34286ab75b786cb5 (patch) | |
| tree | 81b5d44e5193f220b64097f496e314e04caf2db8 /docs | |
| parent | c5f6b52c0d1d65f7bf8cd745a7a212bc6b2fe318 (diff) | |
| parent | d0ebe648f333def99fababd65f6b929448616d56 (diff) | |
test merge
# Conflicts:
# src/makefile.mingw
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/fair-launch.md | 3 | ||||
| -rw-r--r-- | docs/social.png | bin | 208957 -> 162267 bytes | |||
| -rw-r--r-- | docs/tor.md | 84 | ||||
| -rw-r--r-- | docs/utxo-commitment.md | 20 |
4 files changed, 105 insertions, 2 deletions
diff --git a/docs/fair-launch.md b/docs/fair-launch.md index 79eca8e..9603910 100644 --- a/docs/fair-launch.md +++ b/docs/fair-launch.md | |||
| @@ -8,7 +8,8 @@ python3 scripts/verify-fair-launch.py --max-blocks 1000 --out bitflash-fair-laun | |||
| 8 | 8 | ||
| 9 | The verifier reads `blk*.dat` directly from the local Bitflash data directory. | 9 | The verifier reads `blk*.dat` directly from the local Bitflash data directory. |
| 10 | It does not use Berkeley DB, does not call the node binary, and does not need | 10 | It does not use Berkeley DB, does not call the node binary, and does not need |
| 11 | network access. | 11 | network access. It uses the same shared Python chain parser as the UTXO |
| 12 | commitment and proof tools, so block serialization fixes land in one place. | ||
| 12 | 13 | ||
| 13 | The report proves the launch baseline that can be checked from the chain: | 14 | The report proves the launch baseline that can be checked from the chain: |
| 14 | 15 | ||
diff --git a/docs/social.png b/docs/social.png index 19e2a3b..9a08b02 100644 --- a/docs/social.png +++ b/docs/social.png | |||
| Binary files differ | |||
diff --git a/docs/tor.md b/docs/tor.md new file mode 100644 index 0000000..087c822 --- /dev/null +++ b/docs/tor.md | |||
| @@ -0,0 +1,84 @@ | |||
| 1 | # Tor mode | ||
| 2 | |||
| 3 | Bitflash can route outbound discovery traffic through a local Tor SOCKS5 proxy. | ||
| 4 | This is transport plumbing only: it does not change consensus, wallet keys, | ||
| 5 | mining, `.btf` addresses, or the encrypted rendezvous protocol. | ||
| 6 | |||
| 7 | ## Client mode | ||
| 8 | |||
| 9 | Start Tor locally, then start Bitflash with: | ||
| 10 | |||
| 11 | ```bash | ||
| 12 | bitflash -tor | ||
| 13 | ``` | ||
| 14 | |||
| 15 | `-tor` is shorthand for: | ||
| 16 | |||
| 17 | ```bash | ||
| 18 | bitflash -socks=127.0.0.1:9050 | ||
| 19 | ``` | ||
| 20 | |||
| 21 | If Tor listens somewhere else: | ||
| 22 | |||
| 23 | ```bash | ||
| 24 | bitflash -tor=127.0.0.1:9150 | ||
| 25 | bitflash -tor=[::1]:9050 | ||
| 26 | ``` | ||
| 27 | |||
| 28 | When Tor mode is enabled: | ||
| 29 | |||
| 30 | - outbound Nostr relay dials use Tor; | ||
| 31 | - outbound `.btf` rendezvous relay dials use Tor; | ||
| 32 | - destination names are sent to Tor as SOCKS5 domain-name CONNECT requests, so | ||
| 33 | the local DNS resolver does not see them; | ||
| 34 | - direct `.onion` dials are refused unless a SOCKS5/Tor proxy is enabled; | ||
| 35 | - plain HTTP external-IP probes are skipped. | ||
| 36 | |||
| 37 | ## Onion rendezvous relay | ||
| 38 | |||
| 39 | An operator can expose a Bitflash rendezvous relay as a Tor hidden service. The | ||
| 40 | node does not create hidden services itself; Tor owns that configuration. | ||
| 41 | |||
| 42 | Example `torrc`: | ||
| 43 | |||
| 44 | ```text | ||
| 45 | HiddenServiceDir /var/lib/tor/bitflash-rendezvous/ | ||
| 46 | HiddenServicePort 8434 127.0.0.1:8434 | ||
| 47 | ``` | ||
| 48 | |||
| 49 | After restarting Tor, read the generated onion name: | ||
| 50 | |||
| 51 | ```bash | ||
| 52 | sudo cat /var/lib/tor/bitflash-rendezvous/hostname | ||
| 53 | ``` | ||
| 54 | |||
| 55 | Then run the relay on localhost/VPS as usual and announce the onion endpoint from | ||
| 56 | nodes that use Tor: | ||
| 57 | |||
| 58 | ```bash | ||
| 59 | bitflash -tor -rvrelay=exampleexampleexampleexampleexampleexampleexampleexample.onion:8434 | ||
| 60 | bitflash -tor -announcerelay=exampleexampleexampleexampleexampleexampleexampleexample.onion:8434 | ||
| 61 | ``` | ||
| 62 | |||
| 63 | For a pool operator that wants the pool descriptor to point at an onion | ||
| 64 | rendezvous relay, use both: | ||
| 65 | |||
| 66 | ```bash | ||
| 67 | bitflash -operator -tor \ | ||
| 68 | -rvrelay=exampleexampleexampleexampleexampleexampleexampleexample.onion:8434 \ | ||
| 69 | -announcerelay=exampleexampleexampleexampleexampleexampleexampleexample.onion:8434 | ||
| 70 | ``` | ||
| 71 | |||
| 72 | ## Full-node hidden service | ||
| 73 | |||
| 74 | The legacy P2P listener still binds to port `8433`. You can expose it through | ||
| 75 | Tor manually: | ||
| 76 | |||
| 77 | ```text | ||
| 78 | HiddenServiceDir /var/lib/tor/bitflash-node/ | ||
| 79 | HiddenServicePort 8433 127.0.0.1:8433 | ||
| 80 | ``` | ||
| 81 | |||
| 82 | Current automatic peer discovery is `.btf`/rendezvous based, not onion-address | ||
| 83 | gossip. Treat direct full-node onion access as an operator/admin tool unless a | ||
| 84 | future release adds first-class onion peer advertisements. | ||
diff --git a/docs/utxo-commitment.md b/docs/utxo-commitment.md index 991e5d9..ab43deb 100644 --- a/docs/utxo-commitment.md +++ b/docs/utxo-commitment.md | |||
| @@ -21,7 +21,8 @@ python3 scripts/verify-utxo-set.py --out utxo-report.json --json | |||
| 21 | 21 | ||
| 22 | The verifier: | 22 | The verifier: |
| 23 | 23 | ||
| 24 | - parses Bitflash block files directly; | 24 | - parses Bitflash block files directly with the shared Python chain parser; |
| 25 | - streams `blk*.dat` records instead of loading full block files into memory; | ||
| 25 | - reconstructs the best chain rooted at the Bitflash genesis block; | 26 | - reconstructs the best chain rooted at the Bitflash genesis block; |
| 26 | - ignores side blocks that may also be present in `blk*.dat`; | 27 | - ignores side blocks that may also be present in `blk*.dat`; |
| 27 | - verifies every scanned block merkle root; | 28 | - verifies every scanned block merkle root; |
| @@ -98,6 +99,23 @@ last-write-wins semantics for the UTXO map, matching the legacy index model. | |||
| 98 | Those warnings are part of the report so auditors can see the historical debt | 99 | Those warnings are part of the report so auditors can see the historical debt |
| 99 | instead of relying on a polished summary. | 100 | instead of relying on a polished summary. |
| 100 | 101 | ||
| 102 | For synthetic chains or future clean consensus ranges, auditors can make | ||
| 103 | duplicates a hard failure: | ||
| 104 | |||
| 105 | ```bash | ||
| 106 | python3 scripts/verify-utxo-set.py --strict-duplicates | ||
| 107 | ``` | ||
| 108 | |||
| 109 | The default remains compatible with the current historical chain because it has | ||
| 110 | known legacy duplicate-output overwrites. | ||
| 111 | |||
| 112 | ## Shared Parser | ||
| 113 | |||
| 114 | The audit scripts share `scripts/bitflash_chain.py` for block parsing, | ||
| 115 | main-chain selection, UTXO application, canonical JSON, and genesis | ||
| 116 | reconstruction. That keeps `verify-utxo-set.py`, `verify-fair-launch.py`, | ||
| 117 | `prove-utxo.py`, and the explorer on the same serialization rules. | ||
| 118 | |||
| 101 | ## Future Consensus Path | 119 | ## Future Consensus Path |
| 102 | 120 | ||
| 103 | This tool is the low-risk first step toward consensus commitments. A future | 121 | This tool is the low-risk first step toward consensus commitments. A future |