dvb-WarpPool — open-source solo mining pool written in Rust (Umbrel / macOS / Windows / Linux)

A certificate renewed itself and nobody noticed — which is the whole point

Quick intro for anyone new: dvb-WarpPool is a from-scratch Rust solo Bitcoin mining pool you
host yourself. The block reward goes straight to your wallet through the coinbase — the pool never
holds, forwards or settles anything. Run publicly, every visiting miner mines to their own
address (0 % fee, non-custodial).

v1.22.0 is a polish release. Two small things, both from actually running the thing.

Certificates now renew quietly in the background. If you serve your stratum port with a real
certificate — because some miner firmware only trusts public CAs — you used to have an invisible
expiry date in your calendar. The daemon read the certificate and key exactly once at startup, so
after the next Let’s Encrypt renewal it kept serving the old one, and when that finally expired,
TLS broke for every miner at once. The workaround was a restart, and our own guide carried it as a
reminder in the cheat sheet.

That is gone. The pool now checks whether the two files changed and puts a renewed certificate into
service on its own. Connections that are already open keep the certificate they negotiated, so a
renewal costs nobody a reconnect
. And if the reload catches a half-written file mid-renewal, the
old certificate stays in service and the next check tries again, rather than dropping the listener.

The donation card was rewritten too. It used to open with “Support the pool” — a request made
before the reader had decided they liked anything. It now leads with a question and then gives the
reason: the pool takes no fee, so donations are what cover the server.

Going through it turned up something mildly embarrassing: four of the eight languages had been
asking for a tip in the waiter sense for months — propina, pourboire, mancia, 打赏. All
four came from the English word “tip” in the original copy. Chinese was the worst of them: 打赏
is a gratuity to a person, while the admin side of the same application already said 捐赠, so
the public page and the admin UI were using different words for the same thing. This time each
language was written on its own terms instead of translated.

Being straight about it: the pool runs publicly on mainnet but has not found a block yet. The
full block path is proven end-to-end against a real Bitcoin Core on regtest and signet. 1174 tests
gate every release, and builds are signed and reproducible.

Repo: dvb-projekt/dvb-WarpPool: Bitcoin solo/pool mining server — Stratum V1 + V2 - Forgejo: Beyond coding. We forge.
Compared with ckpool / public-pool / mkpool: Comparison (ckpool / public-pool / mkpool) - dvb-WarpPool

The pool that tells you the truth about your odds — and celebrates the moments

A quick intro to dvb-WarpPool for anyone new: a Bitcoin solo mining pool written from scratch in
Rust that you host yourself. The block reward goes straight to your wallet through the coinbase — the
pool holds, routes and settles nothing. In public mode every visiting miner mines to their own
address (0 % fee, non-custodial).

v1.23.0 ships two things you feel immediately as a miner.

Honest block odds instead of a number that reads as “never”. Each miner’s public page
(/users/<address>) used to show a single “estimated time to block” tile. For a home rig it said
“~12,000 years” — the mean of an exponential distribution dressed up as a forecast. It reads like
“forget it” and hides the one property that makes solo mining make sense at all: the process is
memoryless. Every second is a fresh draw; there is no queue, no progress bar, nothing getting
closer.

In its place is the real picture: your chance in the next 24 hours and within one year (long
odds as “1 in N”, e.g. “1 in 6.3 million”; percentages rounded down so they never overstate), the
50/50 point (the median — when it becomes more likely than not, not the average), and your luck
so far
: how many blocks your accepted work “should” have produced (almost always well under 1), how
many you actually found, and — if none yet — what percentage of miners with exactly your history would
also still be empty-handed. Under it, the honest core in one line: no amount of waiting makes a block
more likely; only more hashrate or a lower difficulty. Everything is computed server-side and also
exposed as an odds object on /api/users/<address>, so third-party tools get identical numbers.

And the pool now celebrates the moments. Solo mining lives on three of them: your new personal-best
share, entering the pool’s all-time top 100, and the block. Until now the pool pushed only the block.
If you have verified your payout address and set a notification target (ntfy or webhook), you now also
get a ping when you set a new personal-best share (across all your rigs, not per device) and when
you first enter the all-time top 100 — a genuine entry, not merely climbing higher. Each kind has
its own cooldown so a good run doesn’t become a stream of messages, and a found block sends a single
headline rather than three overlapping alerts. No new configuration — it rides the existing,
signature-verified notification target.

Honest stays honest: the pool runs publicly on mainnet but has not yet found a block — the full
block path is proven end-to-end on regtest and signet against a real Bitcoin Core. Bitcoin mining is
inherently probabilistic; nothing here promises a reward.

Repo: dvb-projekt/dvb-WarpPool: Bitcoin solo/pool mining server — Stratum V1 + V2 - Forgejo: Beyond coding. We forge. · Docs: https://docs.warppool.org ·
Comparison: Comparison (ckpool / public-pool / mkpool) - dvb-WarpPool

Taproot wallets can now prove the address is theirs

Quick intro for newcomers: dvb-WarpPool is a self-hosted Bitcoin solo mining pool written in Rust.
The block reward goes straight to your wallet through the coinbase — no middleman. In public mode every
visiting miner mines to their own address (0 % fee, non-custodial).

Each miner’s public page (/users/<address>) has an owner area: prove an address is yours — by signing
a short challenge in your wallet, no account, no funds moved — and you unlock privacy (hide the
address from the public list) and notifications (ntfy/webhook: block, a new personal-best share,
entering the all-time top 100, a rig going offline).

That ownership proof only had a format for legacy and SegWit addresses (BIP-137). Taproot (bc1p)
had no signed-message format — so it stayed locked out, even though Taproot addresses have always been
able to mine.
v1.24.0 fixes that: Taproot now verifies via BIP-322 (the format Sparrow
produces for Taproot). It feels identical to you — open the wallet, “Sign message”, paste, sign, done;
the wallet picks the right format itself.

For context, source-verified (I read the others’ code before writing sentences like this): of ckpool,
public-pool and mkpool, none ties privacy or notifications to any proof that the address is yours —
this “prove the address is yours, and the control over it is yours too” exists only on dvb-WarpPool as
of today. Other pools do things we don’t; this is one we’re alone on.

Honest framing: the pool runs publicly on mainnet but has not yet found a block (the full block
path is proven end-to-end on regtest and signet against a real Bitcoin Core). Bitcoin mining is
inherently probabilistic; nothing here promises a reward.

Repo: dvb-projekt/dvb-WarpPool: Bitcoin solo/pool mining server — Stratum V1 + V2 - Forgejo: Beyond coding. We forge. · Docs: https://docs.warppool.org ·
Comparison: Comparison (ckpool / public-pool / mkpool) - dvb-WarpPool