• v1.17.0 26f318357d

    v1.17.0
    All checks were successful
    CI / Rust clippy (push) Successful in 1m39s
    CI / Rust fmt (push) Successful in 1m3s
    CI / Rust test (push) Successful in 4m34s
    CI / UI (SvelteKit) (push) Successful in 1m4s
    CI / Security Audit (push) Successful in 1m13s
    docs / build (push) Successful in 24s
    Release / Docker Multi-Arch (push) Successful in 18m58s
    Release / Binary aarch64-unknown-linux-gnu (push) Successful in 10m20s
    Release / Binary x86_64-unknown-linux-gnu (push) Successful in 9m17s
    Release / Linux .deb + .rpm (amd64) (push) Successful in 10m10s
    Release / Linux .deb + .rpm (arm64) (push) Successful in 11m1s
    Release / Linux AppImage (aarch64) (push) Successful in 10m7s
    Release / Linux AppImage (x86_64) (push) Successful in 9m8s
    Release / Cosign sign artifacts (push) Successful in 17s
    Release / Forgejo Release (push) Successful in 28s
    Stable

    dvb-projekt released this 2026-07-12 23:52:40 +00:00 | 73 commits to main since this release

    Per-worker payout mode — WarpPool can now run as a public, non-custodial,
    0%-fee solo pool
    where every miner mines to their own address. Fully
    backward-compatible: single mode is the default and byte-for-byte unchanged.
    Rust suite grows to 1140 + 4 ignored (new real-Core regtest consensus E2E).

    Added

    • Per-worker coinbase ([mining] payout_mode = "per_worker"). Each miner
      supplies its own BTC address as the Stratum username; the coinbase is built
      per connection (V1) / per channel (Sv2) to pay that address the full block
      reward — one output, no pool fee. An invalid or wrong-network login address
      is rejected (no fallback to an operator address). The pool holds no funds.
      Config is fail-closed: per_worker with any fee/donation refuses to start.
    • Public per-wallet dashboard at /users/<address> — a ckpool-compatible
      JSON endpoint (firmware / ckstats parse it) plus a SvelteKit page: network
      panel, five hashrate windows, best-ever share, honest estimated-time-to-block,
      hashrate chart, and a per-rig table with detected mining software. Wallet rows
      on /wallets link straight to it.
    • Wallet ownership verification (BIP-137) — a miner proves control of an
      address by signing a pool-issued one-shot challenge (no funds moved). Once
      verified, an owner-only panel unlocks a privacy toggle (hide the wallet
      from the public list/pages) and per-wallet notifications (ntfy topic or
      webhook) for block-found and rig-offline events. All 22 owner-panel strings
      are translated in all 8 languages.
    • Public-pool deployment guide (docs/book/src/public-pool-setup.md) with a
      ready-to-paste hardening profile (per-IP caps, auto-ban, reject-ratio ban,
      IP-gate, TLS, reverse-proxy) and a deployment checklist.

    Security

    • Shared SSRF guard for all outbound, user-supplied targets (web-push and
      per-wallet notify). Private/loopback/link-local/CGNAT/0.0.0.0-8 hosts are
      refused, hostnames are re-checked against DNS-rebinding, and HTTP redirect
      following is disabled
      so a 3xx cannot smuggle a request onto an internal
      host. Single source of truth, reused by both paths.
    • The per-wallet hashrate time-series (/api/users/<addr>/hashrate and
      /api/hashrate?worker=) now honour the privacy flag — a private wallet's
      series is hidden from anyone who is not its verified owner (or an
      authenticated operator).

    Changed

    • Coinbase construction refactored around a shared, address-independent
      JobTemplate; single mode delegates to it and is proven byte-identical to
      the previous builder. Merkle branches and the witness commitment stay shared;
      only the payout output varies per address.

    Tests

    • Real-Core regtest consensus E2E (--ignored, opt-in): builds per-worker
      blocks for multiple distinct addresses, submits them to a live bitcoind
      regtest, and asserts each block is accepted, pays the correct address with a
      single value output, carries a correct witness commitment (incl. a non-empty
      tx set), and that single mode still produces a valid block.

    dvb-WarpPool v1.17.0 — Downloads

    Docker

    git.warppool.org/dvb-projekt/dvb-warppool:v1.17.0 (multi-arch amd64+arm64, ohne v-Präfix)

    Native packages

    • Linux .deb: amd64 + arm64 → apt install ./dvb-warppool_*.deb
    • Linux .rpm: amd64 + arm64 → dnf install ./dvb-warppool-*.rpm
    • Linux AppImage: x86_64 + aarch64 portable
    • Linux tarballs: x86_64 + aarch64 for manual installs
    • macOS .dmg: added shortly after publish (built separately) — or build from source
    • Windows .msi: paused since the forge migration (no Windows runner yet)

    Signatures

    • SHA256SUMS + cosign bundle (SHA256SUMS.bundle, project key)
    • SBOM (SPDX) for all dependencies

    Verify (project public key cosign.pub in the repo root):

    cosign verify-blob \
      --key cosign.pub \
      --bundle SHA256SUMS.bundle \
      SHA256SUMS
    sha256sum --check SHA256SUMS
    

    First-time setup: run dvb-warppool-setup for the first-run wizard.

    Downloads