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:
authorVictorio Nascimento <155357371+Vic-Nas@users.noreply.github.com>2026-07-27 16:45:28 -0400
committerGitHub <noreply@github.com>2026-07-27 17:45:28 -0300
commit6ca1a1d6799474f8ca977b93ab630af7ace879c2 (patch)
treea0312ebc10fc6a56742d0e5caa85c31eb6d3eaa7 /README.md
parent56df9830d5a002ff9ce3fac47e497673f8159e39 (diff)
Add Linux GUI installer via Wine (#3)
* Add Linux GUI installer via Wine * Fix launcher creation and add BTF_RELAY env var support * Pool server, Linux GUI, unified binary, README update * Root Makefile: make linux / make windows, cleaner README * Remove headless.cpp * Fix XPM color count mismatch causing toolbar image errors on Linux * XPM icons: same code on Windows and Linux, no ifdefs around image loading * Fix GTK icon crash and Linux printf format * btfrv: 10s socket timeout on relay connects * Faster peer discovery: more dials per pass, shorter backoff and sleep * Parallel btf peer connections * Fix GetMyExternalIP - was disabled, now uses modern IP echo services * Fix tunnel disconnect on idle and restore external IP detection * Filter stale Nostr descriptors * Sort peers by freshness, fresh first * Pool: add .btf Stratum listener — miners connect via rendezvous, no port forwarding needed * btf pool: self-replacing listeners, one per relay, no queuing between miners * Mining modes: solo/operator/participant — pool server on-demand, participant Stratum client * Status bar: show external IP and .btf address * README: clean rewrite, concept-first, minimal * make linux produces AppImage * make linux produces AppImage * Pool dashboard: connect instructions, tabs, share bars * Perf fixes: GetMyExternalIP threaded, btf listener counted * Perf fixes: GetMyExternalIP threaded, btf listener counted * Fix pool payouts: defer until coinbase maturity * Pool: clean mode switching, IP warning * Pool: clean mode switching * Fix gPoolRunning: remove static * AppImage: use real icon from bitcoin.ico * Fix exit crash; Mining menu * Fix exit crash; Mining menu * Fix exit crash; Mining menu * Fix exit crash; Mining menu * Fix exit crash; Mining menu * Windows build: use mingw32-make * Windows build: simpler make invocation * Add deps-windows target * Windows build fixes * Windows build fixes * Windows makefile: fix obj dir * Windows: output to repo root * Windows: bundle DLLs into zip * Replace wxWidgets with ImGui+GLFW: same build on Linux and Windows * Fix %I64d that slipped back through rebase (main.h, net.h) * MinGW: add _mkdir shim for non-MSVC Windows; fix %I64d * Fix gPoolRunning extern outside ifndef _WIN32 * Remove -lboost_system: boost is header-only in this codebase * Status bar: copy buttons for IP and .btf address * Windows: add app icon via windres, strip wx stuff from rc file * Clean GUI: single Options menu item, bigger font, better spacing, cleaner options dialog; update README * GUI: embed Roboto font at 16px for clear readability on all platforms * Windows: windres depends on obj dir target * Fix balance hidden off-screen: put on own line below address bar * Windows: inline mkdir in every rule, remove dir target that confused make * Windows: move all target to top so it's the default rule * Fix pool server not starting: always start when operator selected, re-sync dialog state on open * Write debug.log to data directory (AppData/Roaming/Bitflash on Windows) * Participant miner: use wallet address as username so payouts go to wallet * Add .gitattributes to lock LF line endings, prevent CRLF drift * Refactor pool mining to btf-only transport * Persist pool settings and startup wiring * Prune stale peers and expose pool queries * Fix build regressions and add CLI mode/arg parity * Fix rpc miner stats declaration order * Centralize pool runtime extern declarations * Separate operator/participant dashboards and restore peer stats * Add live telemetry strip and clearer per-mode runtime metrics * Reduce mining dashboard clutter and remove manual pool entry * Count only authorized pool miners * Seed initial pool job on startup * Use a real share target for pool work * Switch pool accounting to round-based shares * Fix nostr pool announcer stats call sites * Fix pool stats definition order * Improve pool worker status display * Add mutex include for participant status * Replace ImClamp in dashboard layout * Clarify participant work status * Log participant status transitions * Reduce peer discovery log noise * Add participant status badge * Track participant auth acknowledgements * Log and validate pool job delivery --------- Co-authored-by: Bitflash Pool Dev <pool@bitflash>
Diffstat (limited to 'README.md')
-rw-r--r--README.md265
1 files changed, 64 insertions, 201 deletions
diff --git a/README.md b/README.md
index 5df2a16..590f3a6 100644
--- a/README.md
+++ b/README.md
@@ -1,272 +1,135 @@
1<div align="center"> 1<div align="center">
2 2
3<img src="docs/social.png" width="820" alt="Bitflash — Satoshi's Bitcoin reborn, mined with your CPU"/> 3<img src="docs/social.png" width="820" alt="Bitflash"/>
4 4
5# Bitflash ⚡ &nbsp;`BTF` 5# Bitflash `BTF`
6 6
7### Satoshi's Bitcoin, reborn — mine with your **CPU**, stay **invisible**, run **anywhere**. 7CPU-only cryptocurrency. A revival of Bitcoin 0.1.0 with RandomX proof of work and anonymous `.btf` addressing over Nostr.
8
9A faithful revival of the original 2009 `bitcoin-0.1.0`, rebuilt for today:
10**memory-hard CPU mining** that shuts out ASICs and GPUs, **anonymous addressing**
11that hides your IP and punches through CGNAT, and a **fair launch** with no premine.
12
13<br/>
14 8
15![PoW](https://img.shields.io/badge/PoW-RandomX%20(CPU)-2ea44f?style=for-the-badge) 9![PoW](https://img.shields.io/badge/PoW-RandomX%20(CPU)-2ea44f?style=for-the-badge)
16![Privacy](https://img.shields.io/badge/addresses-.btf%20anonymous-2ea44f?style=for-the-badge) 10![Privacy](https://img.shields.io/badge/addresses-.btf%20anonymous-2ea44f?style=for-the-badge)
17![Fair Launch](https://img.shields.io/badge/premine-none-2ea44f?style=for-the-badge) 11![Fair Launch](https://img.shields.io/badge/premine-none-2ea44f?style=for-the-badge)
18 12
19![Windows](https://img.shields.io/badge/Windows-GUI%20wallet-blue) 13**[Download](../../releases/latest)**
20![Linux](https://img.shields.io/badge/Linux-headless%20node-blue)
21![Language](https://img.shields.io/badge/built%20in-C%2B%2B-00599C)
22![License](https://img.shields.io/badge/license-MIT-green)
23![Supply](https://img.shields.io/badge/max%20supply-21%2C000%2C000-orange)
24
25**[⬇️ Download for Windows](../../releases/latest)** &nbsp;·&nbsp; **[🐧 Build for Linux](#-linux-node--miner)** &nbsp;·&nbsp; **[🧠 How it works](#-how-it-works)**
26
27<br/>
28
29<img src="docs/wallet.png" width="640" alt="Bitflash wallet mining with RandomX"/>
30
31<sub>The Bitflash wallet — mining with RandomX, connected to the network, coins accruing. No pools, no ASICs, no gatekeepers.</sub>
32 14
33</div> 15</div>
34 16
35--- 17---
36 18
37## 💡 One CPU, one vote 19## What it is
38
39Bitcoin promised money mined by anyone with a computer. Then ASIC farms and mining
40pools took over, and "anyone" became "whoever owns a warehouse." Bitflash gives that
41promise back.
42
43- 🧩 **Memory-hard proof of work (RandomX).** The same algorithm Monero uses to keep
44 mining on ordinary CPUs. No ASICs. No GPU farms. Your laptop competes on equal footing.
45- 🕶️ **Anonymous by default.** Your node is reachable by a self-certifying `.btf`
46 address instead of an IP — a Tor-style hidden service built into the coin, over
47 [Nostr](https://nostr.com). Peers never see your IP.
48- 🌐 **Works behind any firewall.** No public IP? Stuck behind CGNAT? No port
49 forwarding? Doesn't matter. Nodes rendezvous through a lightweight relay and connect
50 anyway.
51- ⚖️ **Fair launch.** No premine. No ICO. No founder's reward. The genesis block mints
52 the same 50 coins everyone else mines for.
53- 🪙 **Sound money.** 50 BTF per block, halving on schedule, hard cap of **21,000,000** —
54 exactly like the original.
55 20
56--- 21Bitflash keeps Satoshi's original consensus rules and replaces two things:
57 22
58<div align="center"> 23**RandomX proof of work.** Memory-hard algorithm used by Monero. A laptop competes equally with a server. ASICs and GPUs have no advantage.
59 24
60## 🔥 Don't let the network die — run a node 25**Anonymous addressing.** Every node has a `.btf` address derived from its public key, similar to a Tor `.onion`. Nodes find each other through Nostr relays and connect via encrypted rendezvous tunnels. Your IP is never exposed to other nodes, and no port forwarding is needed.
61 26
62A cryptocurrency is only as alive as the people running it. Every node that mines, 27No premine. No ICO. 50 BTF per block, halving on schedule, 21M cap, ~2 minute blocks.
63relays, and stays online makes Bitflash **faster, freer, and impossible to shut down.**
64No companies. No servers to trust. No gatekeepers — just people, one CPU each.
65 28
66### Download it. Run it. Keep it alive. 29---
67 30
68**[⬇️ Windows](../../releases/latest)** &nbsp;·&nbsp; **[🐧 Linux](#-linux-node--miner)** &nbsp;·&nbsp; **[🛰️ Run a relay](#-become-a-relay-volunteer--automatically)** 31## Quick start
69 32
70*The network needs you online. Close this tab and it's one node weaker.* 33Download the latest release and run. No install, no configuration — it connects automatically and starts syncing.
71 34
72</div> 35**Linux:** `Bitflash-1.1.0-x86_64.AppImage` — make executable and run.
73 36
74--- 37**Windows:** Extract `Bitflash-1.1.0-windows.zip` and run `Bitflash.exe`.
75 38
76## ✨ Features 39---
77 40
78| | | 41## Mining
79|---|---|
80| 🧠 **RandomX PoW** | CPU-only, ASIC/GPU-resistant mining — one CPU, one vote |
81| 🔐 **`.btf` hidden addresses** | Self-certifying, unforgeable node identity; your IP is never exposed |
82| 🛰️ **Nostr peer discovery** | No central servers, no DNS seeds — nodes find each other over open relays |
83| 🚪 **CGNAT traversal** | Rendezvous transport lets nodes behind carrier NAT reach each other |
84| 🔒 **End-to-end encrypted P2P** | X25519 + XChaCha20-Poly1305 channel; the relay only ever sees ciphertext |
85| 💸 **Instant transfers** | Send coins peer-to-peer in under a second |
86| 🖥️ **Retro wallet** | The classic, no-nonsense Bitcoin 0.1.0 interface, one "Generate Coins" click away |
87| 🐧 **Windows & Linux** | GUI wallet on Windows, headless daemon for Linux servers |
88 42
89--- 43Open **Options** from the menu bar. Under Mining Mode:
90 44
91## 🚀 Quick start 45**Solo** — mine directly to your wallet. Default.
92 46
93### 🪟 Windows (GUI wallet + miner) 47**Operator** — run a pool. The pool server uses `.btf` rendezvous only. The window shows the pool's `.btf` address, discovered pools, and owed payouts.
94 48
951. **[Download the latest release](../../releases/latest)** and unzip it anywhere. 49Pool announcements are published on Nostr with live status fields, so external tools can query the latest pool state by `.btf` address.
962. Double-click **`bitflash.exe`**.
973. Wait ~1 minute — it finds peers on its own and starts syncing.
984. **Options → Generate Coins** to start mining with your CPU. That's it. 🎉
99 50
100No install, no config, no command line. It connects automatically, even behind CGNAT. 51**Participant** — mine to someone else's pool. Enter or select the pool's `.btf` address and enable Start Mining.
101 52
102### 🐧 Linux (node + miner) 53SRBMiner and XMRig connect to operator pools through the `.btf` path:
103 54
104```bash 55```bash
105# grab the source, then: 56SRBMiner-MULTI --algorithm randomx --pool POOL_BTF_ADDRESS --wallet YOUR_BTF_ADDRESS --password x
106bash build-linux.sh # installs deps, builds secp256k1 + RandomX + the node 57xmrig -a rx/0 -o POOL_BTF_ADDRESS -u YOUR_BTF_ADDRESS -p x
107./src/bitflash-node -gen # run + mine (auto-discovers peers, no config needed)
108``` 58```
109 59
110Run it 24/7 as a service — see [`docs/`](docs) and the systemd snippet below.
111
112--- 60---
113 61
114## 🧠 How it works 62## Headless / server mode
115
116Bitflash keeps Satoshi's consensus intact and swaps two things: **the proof of work**
117and **how nodes find and reach each other**.
118 63
119### Anonymous rendezvous (the `.btf` network) 64```bash
120 65./bitflash /nogui # node only
121Every node has a `.btf` address derived from its public key — like a Tor `.onion`, but 66./bitflash /nogui /gen /operator # pool operator
122built into the coin. Nodes publish a signed descriptor over Nostr, and connect through a 67./bitflash /nogui /gen /participant=POOL_BTF_ADDRESS # mine to pool
123meeting relay so **neither side ever learns the other's IP**, and **no port forwarding is
124ever needed**.
125
126```mermaid
127flowchart LR
128 A["🧑‍💻 Node A<br/>(behind CGNAT)"] -- "encrypted" --> R(("🛰️ Meeting<br/>relay"))
129 B["🧑‍💻 Node B<br/>(behind CGNAT)"] -- "encrypted" --> R
130 R -. "pairs by .btf key<br/>sees only ciphertext" .-> A
131 R -. "pairs by .btf key<br/>sees only ciphertext" .-> B
132 N["🛰️ Nostr relays"] -. "discover .btf peers" .-> A
133 N -. "discover .btf peers" .-> B
134``` 68```
135 69
136The relay is dumb on purpose: it pairs peers by their `.btf` key and forwards bytes. The 70As a systemd service:
137real connection is end-to-end encrypted (X25519 + XChaCha20-Poly1305) and authenticated
138to each peer's static key, so a malicious relay can't read or tamper — it can only refuse.
139
140<div align="center">
141
142<img src="docs/discovery.png" width="680" alt="Bitflash node connecting by .btf through the rendezvous and mining RandomX"/>
143 71
144<sub>A node tunneling to a peer by its <code>.btf</code> address through the rendezvous, and finding a RandomX proof of work — automatic, no configuration, no IP exposed.</sub> 72```ini
145 73[Unit]
146</div> 74Description=Bitflash node
75After=network.target
147 76
148### RandomX proof of work 77[Service]
78ExecStart=/opt/bitflash/bitflash /nogui /gen /operator
79Restart=always
80User=bitcoin
81WorkingDirectory=/opt/bitflash
149 82
150Blocks are mined with **RandomX**, a memory-hard algorithm that runs efficiently on 83[Install]
151general-purpose CPUs and terribly on specialized hardware. This is what keeps mining 84WantedBy=multi-user.target
152decentralized: no ASIC advantage, no GPU farms — just CPUs, one vote each. 85```
153 86
154--- 87---
155 88
156## 🛠️ Build from source 89## Running a relay
157 90
158### Linux 91Relays are the meeting points that let nodes behind NAT connect to each other. More relays make the network more resilient.
159 92
160```bash 93```bash
161bash build-linux.sh 94sudo bash relay/install-bitflash-relay.sh 8434
95./bitflash /nogui /announcerelay=YOUR_PUBLIC_IP:8434
162``` 96```
163 97
164Installs `build-essential cmake libssl-dev libdb5.3++-dev libsodium-dev 98Relays forward encrypted bytes and cannot read or modify traffic.
165nlohmann-json3-dev libboost-dev`, builds `libsecp256k1` (Schnorr) and `RandomX` from
166source, then the `bitflash-node` binary. Debian/Ubuntu.
167
168### Windows
169
170Built with **MSYS2 UCRT64** (g++ 16, wxWidgets 3.2, OpenSSL 3, Berkeley DB). See
171[`build.sh`](build.sh) and `src/makefile.mingw`.
172 99
173### 🛰️ Become a relay volunteer — automatically 100---
174 101
175Relays are the meeting points that let nodes behind CGNAT find each other. More 102## Build from source
176relays, in more places, make the network **faster** and **harder to knock
177offline**. If you have a VPS with a public IP, you can add one — and **the whole
178network discovers it automatically. No approval, no gatekeeper, no waiting.**
179 103
180**1. Run the relay — one command:** 104**Linux:**
181```bash 105```bash
182sudo bash relay/install-bitflash-relay.sh 8434 106make linux
183``` 107```
184Builds a tiny, dependency-free daemon, applies anti-flood firewall rules, and 108Installs deps via apt, builds libsecp256k1 and RandomX, produces `Bitflash-*.AppImage`.
185installs it as a `systemd` service (auto-restarts, survives reboot).
186 109
187**2. Open TCP port `8434`** in your firewall / cloud panel. 110**Windows (MSYS2 UCRT64):**
188
189**3. Announce it** by running a node that advertises your relay:
190```bash 111```bash
191./bitflash-node -gen -announcerelay=YOUR_PUBLIC_IP:8434 112make windows
192``` 113```
193That node publishes your relay over Nostr; every other node discovers it within 114Installs deps via pacman, produces `Bitflash-*-windows.zip`.
194a minute and adds it to its failover list. **Done — you're part of the backbone.**
195
196> 🔒 A relay is **trustless** — it only forwards end-to-end-encrypted bytes and
197> pairs peers by their `.btf` key. It **cannot read, tamper with, or MITM** your
198> traffic; a malicious relay can at most refuse to forward, and nodes simply fail
199> over. That's exactly why anyone can run one safely. A 1 GB VPS is plenty.
200
201<details>
202<summary>Run the Linux node 24/7 (systemd)</summary>
203
204```ini
205# /etc/systemd/system/bitflash-node.service
206[Unit]
207Description=Bitflash node/miner
208After=network.target
209
210[Service]
211WorkingDirectory=/root/bitflash/src
212ExecStart=/root/bitflash/src/bitflash-node -gen
213Restart=always
214User=root
215
216[Install]
217WantedBy=multi-user.target
218```
219```bash
220systemctl daemon-reload && systemctl enable --now bitflash-node
221```
222</details>
223 115
224--- 116---
225 117
226## 📊 At a glance 118## At a glance
227 119
228| Parameter | Value | 120| | |
229|---|---| 121|---|---|
230| Ticker | **BTF** | 122| Ticker | BTF |
231| Proof of work | RandomX (CPU, memory-hard) | 123| Proof of work | RandomX (CPU, memory-hard) |
232| Block reward | 50 BTF, halving on schedule | 124| Block reward | 50 BTF, halving on schedule |
233| Max supply | 21,000,000 BTF | 125| Max supply | 21,000,000 BTF |
234| Target block time | ~2 minutes | 126| Block time | ~2 minutes |
235| Address privacy | `.btf` hidden-service addressing over Nostr | 127| Privacy | `.btf` hidden-service addressing over Nostr |
236| Premine / ICO | **None** | 128| Premine | None |
237| Platforms | Windows (GUI), Linux (headless) | 129| Pool server | Built-in — `.btf` rendezvous only |
238
239---
240
241## 🗺️ Roadmap
242
243- [x] Faithful port of `bitcoin-0.1.0` to a modern toolchain
244- [x] RandomX CPU proof of work
245- [x] Nostr peer discovery (replacing IRC)
246- [x] `.btf` anonymous addressing + CGNAT rendezvous
247- [x] Automatic peer discovery — zero config
248- [x] Headless Linux node/miner
249- [x] Fair-launch, stable-parameter relaunch
250- [x] Redundant relays across regions with automatic failover
251- [x] Automatic relay discovery over Nostr (self-announcing volunteer relays)
252
253---
254
255## ⚠️ Disclaimer
256
257Bitflash is **experimental software**, released in the spirit of the original Bitcoin:
258*"This is a design and prototype. Use at your own risk. It comes with no warranty of any
259kind."* It has real cryptography and a live network, but it is young. Don't put in more
260than you're willing to lose, and don't rely on it for anything critical.
261 130
262--- 131---
263 132
264## 📜 License 133Experimental software. Young network. Don't put in more than you are willing to lose.
265
266MIT — see [LICENSE](LICENSE). Built on Satoshi Nakamoto's original Bitcoin (2009),
267extended by the Bitflash developers (2026).
268 134
269<div align="center"> 135MIT. Built on Bitcoin 0.1.0 (Satoshi Nakamoto, 2009).
270<br/>
271<b>⚡ One CPU. One vote. Mining returns to the people. ⚡</b>
272</div>