From 6ca1a1d6799474f8ca977b93ab630af7ace879c2 Mon Sep 17 00:00:00 2001 From: Victorio Nascimento <155357371+Vic-Nas@users.noreply.github.com> Date: Mon, 27 Jul 2026 16:45:28 -0400 Subject: Add Linux GUI installer via Wine (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- README.md | 265 +++++++++++++++----------------------------------------------- 1 file changed, 64 insertions(+), 201 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 5df2a16..590f3a6 100644 --- a/README.md +++ b/README.md @@ -1,272 +1,135 @@
-Bitflash — Satoshi's Bitcoin reborn, mined with your CPU +Bitflash -# Bitflash ⚡  `BTF` +# Bitflash `BTF` -### Satoshi's Bitcoin, reborn — mine with your **CPU**, stay **invisible**, run **anywhere**. - -A faithful revival of the original 2009 `bitcoin-0.1.0`, rebuilt for today: -**memory-hard CPU mining** that shuts out ASICs and GPUs, **anonymous addressing** -that hides your IP and punches through CGNAT, and a **fair launch** with no premine. - -
+CPU-only cryptocurrency. A revival of Bitcoin 0.1.0 with RandomX proof of work and anonymous `.btf` addressing over Nostr. ![PoW](https://img.shields.io/badge/PoW-RandomX%20(CPU)-2ea44f?style=for-the-badge) ![Privacy](https://img.shields.io/badge/addresses-.btf%20anonymous-2ea44f?style=for-the-badge) ![Fair Launch](https://img.shields.io/badge/premine-none-2ea44f?style=for-the-badge) -![Windows](https://img.shields.io/badge/Windows-GUI%20wallet-blue) -![Linux](https://img.shields.io/badge/Linux-headless%20node-blue) -![Language](https://img.shields.io/badge/built%20in-C%2B%2B-00599C) -![License](https://img.shields.io/badge/license-MIT-green) -![Supply](https://img.shields.io/badge/max%20supply-21%2C000%2C000-orange) - -**[⬇️ Download for Windows](../../releases/latest)**  ·  **[🐧 Build for Linux](#-linux-node--miner)**  ·  **[🧠 How it works](#-how-it-works)** - -
- -Bitflash wallet mining with RandomX - -The Bitflash wallet — mining with RandomX, connected to the network, coins accruing. No pools, no ASICs, no gatekeepers. +**[Download](../../releases/latest)**
--- -## 💡 One CPU, one vote - -Bitcoin promised money mined by anyone with a computer. Then ASIC farms and mining -pools took over, and "anyone" became "whoever owns a warehouse." Bitflash gives that -promise back. - -- 🧩 **Memory-hard proof of work (RandomX).** The same algorithm Monero uses to keep - mining on ordinary CPUs. No ASICs. No GPU farms. Your laptop competes on equal footing. -- 🕶️ **Anonymous by default.** Your node is reachable by a self-certifying `.btf` - address instead of an IP — a Tor-style hidden service built into the coin, over - [Nostr](https://nostr.com). Peers never see your IP. -- 🌐 **Works behind any firewall.** No public IP? Stuck behind CGNAT? No port - forwarding? Doesn't matter. Nodes rendezvous through a lightweight relay and connect - anyway. -- ⚖️ **Fair launch.** No premine. No ICO. No founder's reward. The genesis block mints - the same 50 coins everyone else mines for. -- 🪙 **Sound money.** 50 BTF per block, halving on schedule, hard cap of **21,000,000** — - exactly like the original. +## What it is ---- +Bitflash keeps Satoshi's original consensus rules and replaces two things: -
+**RandomX proof of work.** Memory-hard algorithm used by Monero. A laptop competes equally with a server. ASICs and GPUs have no advantage. -## 🔥 Don't let the network die — run a node +**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. -A cryptocurrency is only as alive as the people running it. Every node that mines, -relays, and stays online makes Bitflash **faster, freer, and impossible to shut down.** -No companies. No servers to trust. No gatekeepers — just people, one CPU each. +No premine. No ICO. 50 BTF per block, halving on schedule, 21M cap, ~2 minute blocks. -### Download it. Run it. Keep it alive. +--- -**[⬇️ Windows](../../releases/latest)**  ·  **[🐧 Linux](#-linux-node--miner)**  ·  **[🛰️ Run a relay](#-become-a-relay-volunteer--automatically)** +## Quick start -*The network needs you online. Close this tab and it's one node weaker.* +Download the latest release and run. No install, no configuration — it connects automatically and starts syncing. -
+**Linux:** `Bitflash-1.1.0-x86_64.AppImage` — make executable and run. ---- +**Windows:** Extract `Bitflash-1.1.0-windows.zip` and run `Bitflash.exe`. -## ✨ Features +--- -| | | -|---|---| -| 🧠 **RandomX PoW** | CPU-only, ASIC/GPU-resistant mining — one CPU, one vote | -| 🔐 **`.btf` hidden addresses** | Self-certifying, unforgeable node identity; your IP is never exposed | -| 🛰️ **Nostr peer discovery** | No central servers, no DNS seeds — nodes find each other over open relays | -| 🚪 **CGNAT traversal** | Rendezvous transport lets nodes behind carrier NAT reach each other | -| 🔒 **End-to-end encrypted P2P** | X25519 + XChaCha20-Poly1305 channel; the relay only ever sees ciphertext | -| 💸 **Instant transfers** | Send coins peer-to-peer in under a second | -| 🖥️ **Retro wallet** | The classic, no-nonsense Bitcoin 0.1.0 interface, one "Generate Coins" click away | -| 🐧 **Windows & Linux** | GUI wallet on Windows, headless daemon for Linux servers | +## Mining ---- +Open **Options** from the menu bar. Under Mining Mode: -## 🚀 Quick start +**Solo** — mine directly to your wallet. Default. -### 🪟 Windows (GUI wallet + miner) +**Operator** — run a pool. The pool server uses `.btf` rendezvous only. The window shows the pool's `.btf` address, discovered pools, and owed payouts. -1. **[Download the latest release](../../releases/latest)** and unzip it anywhere. -2. Double-click **`bitflash.exe`**. -3. Wait ~1 minute — it finds peers on its own and starts syncing. -4. **Options → Generate Coins** to start mining with your CPU. That's it. 🎉 +Pool announcements are published on Nostr with live status fields, so external tools can query the latest pool state by `.btf` address. -No install, no config, no command line. It connects automatically, even behind CGNAT. +**Participant** — mine to someone else's pool. Enter or select the pool's `.btf` address and enable Start Mining. -### 🐧 Linux (node + miner) +SRBMiner and XMRig connect to operator pools through the `.btf` path: ```bash -# grab the source, then: -bash build-linux.sh # installs deps, builds secp256k1 + RandomX + the node -./src/bitflash-node -gen # run + mine (auto-discovers peers, no config needed) +SRBMiner-MULTI --algorithm randomx --pool POOL_BTF_ADDRESS --wallet YOUR_BTF_ADDRESS --password x +xmrig -a rx/0 -o POOL_BTF_ADDRESS -u YOUR_BTF_ADDRESS -p x ``` -Run it 24/7 as a service — see [`docs/`](docs) and the systemd snippet below. - --- -## 🧠 How it works - -Bitflash keeps Satoshi's consensus intact and swaps two things: **the proof of work** -and **how nodes find and reach each other**. +## Headless / server mode -### Anonymous rendezvous (the `.btf` network) - -Every node has a `.btf` address derived from its public key — like a Tor `.onion`, but -built into the coin. Nodes publish a signed descriptor over Nostr, and connect through a -meeting relay so **neither side ever learns the other's IP**, and **no port forwarding is -ever needed**. - -```mermaid -flowchart LR - A["🧑‍💻 Node A
(behind CGNAT)"] -- "encrypted" --> R(("🛰️ Meeting
relay")) - B["🧑‍💻 Node B
(behind CGNAT)"] -- "encrypted" --> R - R -. "pairs by .btf key
sees only ciphertext" .-> A - R -. "pairs by .btf key
sees only ciphertext" .-> B - N["🛰️ Nostr relays"] -. "discover .btf peers" .-> A - N -. "discover .btf peers" .-> B +```bash +./bitflash /nogui # node only +./bitflash /nogui /gen /operator # pool operator +./bitflash /nogui /gen /participant=POOL_BTF_ADDRESS # mine to pool ``` -The relay is dumb on purpose: it pairs peers by their `.btf` key and forwards bytes. The -real connection is end-to-end encrypted (X25519 + XChaCha20-Poly1305) and authenticated -to each peer's static key, so a malicious relay can't read or tamper — it can only refuse. - -
- -Bitflash node connecting by .btf through the rendezvous and mining RandomX +As a systemd service: -A node tunneling to a peer by its .btf address through the rendezvous, and finding a RandomX proof of work — automatic, no configuration, no IP exposed. - -
+```ini +[Unit] +Description=Bitflash node +After=network.target -### RandomX proof of work +[Service] +ExecStart=/opt/bitflash/bitflash /nogui /gen /operator +Restart=always +User=bitcoin +WorkingDirectory=/opt/bitflash -Blocks are mined with **RandomX**, a memory-hard algorithm that runs efficiently on -general-purpose CPUs and terribly on specialized hardware. This is what keeps mining -decentralized: no ASIC advantage, no GPU farms — just CPUs, one vote each. +[Install] +WantedBy=multi-user.target +``` --- -## 🛠️ Build from source +## Running a relay -### Linux +Relays are the meeting points that let nodes behind NAT connect to each other. More relays make the network more resilient. ```bash -bash build-linux.sh +sudo bash relay/install-bitflash-relay.sh 8434 +./bitflash /nogui /announcerelay=YOUR_PUBLIC_IP:8434 ``` -Installs `build-essential cmake libssl-dev libdb5.3++-dev libsodium-dev -nlohmann-json3-dev libboost-dev`, builds `libsecp256k1` (Schnorr) and `RandomX` from -source, then the `bitflash-node` binary. Debian/Ubuntu. - -### Windows - -Built with **MSYS2 UCRT64** (g++ 16, wxWidgets 3.2, OpenSSL 3, Berkeley DB). See -[`build.sh`](build.sh) and `src/makefile.mingw`. +Relays forward encrypted bytes and cannot read or modify traffic. -### 🛰️ Become a relay volunteer — automatically +--- -Relays are the meeting points that let nodes behind CGNAT find each other. More -relays, in more places, make the network **faster** and **harder to knock -offline**. If you have a VPS with a public IP, you can add one — and **the whole -network discovers it automatically. No approval, no gatekeeper, no waiting.** +## Build from source -**1. Run the relay — one command:** +**Linux:** ```bash -sudo bash relay/install-bitflash-relay.sh 8434 +make linux ``` -Builds a tiny, dependency-free daemon, applies anti-flood firewall rules, and -installs it as a `systemd` service (auto-restarts, survives reboot). +Installs deps via apt, builds libsecp256k1 and RandomX, produces `Bitflash-*.AppImage`. -**2. Open TCP port `8434`** in your firewall / cloud panel. - -**3. Announce it** by running a node that advertises your relay: +**Windows (MSYS2 UCRT64):** ```bash -./bitflash-node -gen -announcerelay=YOUR_PUBLIC_IP:8434 +make windows ``` -That node publishes your relay over Nostr; every other node discovers it within -a minute and adds it to its failover list. **Done — you're part of the backbone.** - -> 🔒 A relay is **trustless** — it only forwards end-to-end-encrypted bytes and -> pairs peers by their `.btf` key. It **cannot read, tamper with, or MITM** your -> traffic; a malicious relay can at most refuse to forward, and nodes simply fail -> over. That's exactly why anyone can run one safely. A 1 GB VPS is plenty. - -
-Run the Linux node 24/7 (systemd) - -```ini -# /etc/systemd/system/bitflash-node.service -[Unit] -Description=Bitflash node/miner -After=network.target - -[Service] -WorkingDirectory=/root/bitflash/src -ExecStart=/root/bitflash/src/bitflash-node -gen -Restart=always -User=root - -[Install] -WantedBy=multi-user.target -``` -```bash -systemctl daemon-reload && systemctl enable --now bitflash-node -``` -
+Installs deps via pacman, produces `Bitflash-*-windows.zip`. --- -## 📊 At a glance +## At a glance -| Parameter | Value | +| | | |---|---| -| Ticker | **BTF** | +| Ticker | BTF | | Proof of work | RandomX (CPU, memory-hard) | | Block reward | 50 BTF, halving on schedule | | Max supply | 21,000,000 BTF | -| Target block time | ~2 minutes | -| Address privacy | `.btf` hidden-service addressing over Nostr | -| Premine / ICO | **None** | -| Platforms | Windows (GUI), Linux (headless) | - ---- - -## 🗺️ Roadmap - -- [x] Faithful port of `bitcoin-0.1.0` to a modern toolchain -- [x] RandomX CPU proof of work -- [x] Nostr peer discovery (replacing IRC) -- [x] `.btf` anonymous addressing + CGNAT rendezvous -- [x] Automatic peer discovery — zero config -- [x] Headless Linux node/miner -- [x] Fair-launch, stable-parameter relaunch -- [x] Redundant relays across regions with automatic failover -- [x] Automatic relay discovery over Nostr (self-announcing volunteer relays) - ---- - -## ⚠️ Disclaimer - -Bitflash is **experimental software**, released in the spirit of the original Bitcoin: -*"This is a design and prototype. Use at your own risk. It comes with no warranty of any -kind."* It has real cryptography and a live network, but it is young. Don't put in more -than you're willing to lose, and don't rely on it for anything critical. +| Block time | ~2 minutes | +| Privacy | `.btf` hidden-service addressing over Nostr | +| Premine | None | +| Pool server | Built-in — `.btf` rendezvous only | --- -## 📜 License - -MIT — see [LICENSE](LICENSE). Built on Satoshi Nakamoto's original Bitcoin (2009), -extended by the Bitflash developers (2026). +Experimental software. Young network. Don't put in more than you are willing to lose. -
-
-⚡ One CPU. One vote. Mining returns to the people. ⚡ -
+MIT. Built on Bitcoin 0.1.0 (Satoshi Nakamoto, 2009). -- cgit v1.2.3