Introduction

dvb-WarpPool is a Rust Bitcoin solo mining pool, written as a modern parallel build to dvb-goPool. Focus areas:

  1. Performance — Rust async (Tokio), pure-Rust ZMQ + NOISE (no libzmq / OpenSSL required), reproducible release builds
  2. Miner compatibility — Nerdminer V2, Bitaxe (AxeOS), Avalon Q, Antminer S21/S23 Pro, Whatsminer (MicroBT), NerdNOS/Octaxe
  3. OS compatibility — macOS (Intel + Apple Silicon), Windows, Linux x86_64 + aarch64 (deb/rpm/AppImage), Raspberry Pi 5, Umbrel (Docker)
  4. Security — memory safety, TLS, JWT + 2FA-TOTP + API tokens, audit log, signed releases (cosign-keyless), reproducible builds, auto-update with on-failure rollback
  5. Stratum V1 + V2 — plain + TLS for V1, NOISE-NX for V2, V1↔V2 translator as a sidecar
  6. Admin profiles — Small / Medium / Large / Enterprise (hot-switch)
  7. Modern UI — SvelteKit PWA with i18n (DE/EN/ES/PT-BR/FR/IT/JA/ZH), HealthBanner + UpdateBanner via SSE events, mobile-first
  8. Observability — Prometheus /metrics + notifier sinks (ntfy / Telegram / Discord / Slack / Email) + RPC latency histogram

Current Status

The v1.0 line is released and maintained. Latest tag: v1.0.6 (2026-06-06). The phase table below covers the development history that led up to v1.0; post-1.0 changes are tracked in CHANGELOG.md.

ComponentStatus
Phase 1 — Foundation (crates, profiles, hwdetect)
Phase 2 — MVP Pool (V1 + storage + API + UI)
Phase 2.1 — ZMQ hashblock subscribe
Phase 2.5 — VarDiff (EMA + hysteresis + persistence)
Phase 3 — Security (TLS, rate limit, JWT, 2FA, API tokens, audit)
Phase 4 — UX (PWA, i18n, SSE live, charts, mobile)
Phase 5 — Operations (Prometheus, mDNS, vendor APIs, backup)
Phase 6 — Packaging (Docker multi-arch, native installer, Cosign, SLSA, RPi 5)
Sv2 Stack (phase 7.1–7.6a)
└─ Mining protocol (server + client + V1↔V2 translator)
└─ Job distribution + V1 mining.notify mapping + BIP-320
└─ Template-distribution wire foundation
└─ Bitcoin-node TDP wiring (phase 7.6b)⏸ deferred (Bitcoin Core IPC since v30)
Phase 8 — Polishing (mdBook, repro builds, auto-update + rollback + Cosign)
Phase 9 — Setup health-checks (multi-RPC, network, probes with consent)
Phase 10a — bitcoin.conf snippet generator
Phase 11 — UPnP port forwarding (whitelist + consent)
Phase 12 — bitcoin.conf parse-existing (smarter snippets)
Phase 13 — Daemon periodic Bitcoin health-check + SSE
Phase 14 — UI HealthBanner + UpdateBanner
Phase 15 — Notifier fully wired + Email/Slack + admin-UI test buttons
└─ 15.2b Sv2 connection notifier wiring
Phase 16 — Observability (PoolMetrics + RPC latency histogram + notifier counter)
Phase 17 — Payout system⏭ skipped (single-user solo doesn't need it; coinbase splits cover multi-user)
Phase 18 — mdBook operator guide + ARCHITECTURE/SECURITY refresh
Phase 19 — Performance benchmarks (Criterion)
Phase 20 — Live energy + health trend
└─ 20.1 Time-series storage + power-tariff schema (Single/TOU/Solar)
└─ 20.2 Energy + history endpoints
└─ 20.3 Health anomaly detector (5 heuristics)
└─ 20.3b HealthAlert notifier hook (critical → ntfy/Discord/Slack/Email/Telegram)
└─ 20.4 UI EnergyCard in dashboard
└─ 20.4b UI per-miner detail page with sparklines
└─ 20.5 Solar HA provider (Home Assistant REST API)
Phase 21 — VAPID Web Push
└─ 21.1 Pure-Rust VAPID crypto + CLI gen-vapid-keys
└─ 21.2 Subscribe + public-key API (4 routes)
└─ 21.3 Daemon push-send loop (BlockFound/Health/Update → background push)
└─ 21.4 UI subscribe flow + service worker
Phase 22 — Vendor probe metrics
└─ 22.1 Per-miner Prometheus metrics
└─ 22.2 Discovered-miners auto-probing (env-gated)
└─ 22.4 AvalonQ probe adapter
└─ 22.5 Braiins OS probe adapter
Phase 23 — Probe hardening⏭ skipped (low-value: probes are LAN-local, probe_health gauge already covers failure detection)

Recognized miner vendors (8): Bitaxe / NerdNOS / NerdOctaxe / BitMain-Stock / Whatsminer / Avalon (A12xx-A15xx) / Avalon Q / Braiins OS / OS+.

Notifier sinks (6): ntfy / Telegram / Discord / Slack / Email-SMTP / VAPID Web Push (PWA background).

Tests (as of v1.0.6): 711 Rust tests green + 3 ignored (regtest opt-in). 347 svelte-check files / 0 errors / 14 pre-existing warnings.

Workspace: 16 library crates + 6 binaries (daemon, CLI, setup wizard, translator sidecar, miner simulator, macOS launcher). Single workspace, no external sub-repo.

What's still open:

  • Phase 7.6b — TDP wiring deferred (ecosystem re-eval trigger: Bitcoin Core IPC stable or SRI production-mature)
  • Phase 25 — Logos/icons for the native installer (design-asset topic)

Who builds the pool

dvb-WarpPool is a solo project by dvb-Projekt (dvbprojekt@gmx.de). Code is dual-licensed under MIT OR Apache-2.0. Contributions welcome — see the README for the disclosure policy.

Where to find what

Operator Handbook

ChapterContents
Getting StartedQuick install + first connection
Configuration Referenceconfig.toml + secrets.toml + env vars
Setup Health-ChecksFirst-run wizard + daemon periodic check
Notificationsntfy / Telegram / Discord / Slack / Email setup
ObservabilityPrometheus metrics reference + Grafana + alerts
TroubleshootingSymptom → diagnosis → fix
Packaging & DeploymentDocker, .deb/.rpm/.AppImage/.dmg/.msi, RPi 5, Umbrel
SecurityThreat model, auth stack, key material, audit log
Reproducible Buildslto=fat + SOURCE_DATE_EPOCH + verify script
Auto-UpdateUpdate loop + Cosign + rollback

Architecture

ChapterContents
System ArchitectureCrate layout, daemon tasks, storage schema, Sv2 stack
UI DesignWarp-drive concept + implementation status
TestingUnit / integration / sim / regtest
Performance BenchmarksCriterion suites + baseline numbers

Sv2 Stack

ChapterContents
Phase HistorySv2 chronologically (phase 7.1 → 7.6a)
RoadmapAll phases + what's still open
  • Source: github.com/dvb-projekt/dvb-WarpPool
  • Release pipeline + SBOM: .github/workflows/release.yml
  • Bench workflow: .github/workflows/benches.yml
  • Repro-verify: scripts/verify-reproducible.sh
  • Regtest setup: scripts/regtest-up.sh + regtest-down.sh
  • Sister project (Go implementation): dvb-goPool