• v1.25.3 4ee4b273ba

    v1.25.3 — WITHDRAWN, do not install
    All checks were successful
    CI / Rust clippy (push) Successful in 2m6s
    CI / Rust fmt (push) Successful in 1m11s
    CI / Rust test (push) Successful in 5m29s
    CI / UI (SvelteKit) (push) Successful in 1m15s
    CI / Security Audit (push) Successful in 1m23s
    Release / Docker Multi-Arch (push) Successful in 20m7s
    Release / Binary aarch64-unknown-linux-gnu (push) Successful in 11m8s
    Release / Binary x86_64-unknown-linux-gnu (push) Successful in 9m55s
    Release / Linux .deb + .rpm (amd64) (push) Successful in 10m41s
    Release / Linux .deb + .rpm (arm64) (push) Successful in 11m43s
    Release / Linux AppImage (aarch64) (push) Successful in 10m48s
    Release / Linux AppImage (x86_64) (push) Successful in 9m49s
    docs / build (push) Successful in 34s
    Release / Cosign sign artifacts (push) Successful in 25s
    Release / Forgejo Release (push) Successful in 36s
    Pre-release

    dvb-projekt released this 2026-08-01 09:22:51 +00:00 | 13 commits to main since this release

    Caution

    Withdrawn — do not install this version

    v1.25.3 rejected every share from Stratum V1 miners as malformed. If you
    mine with a Bitaxe, NerdMiner, NerdAxe or any other V1 device, this build
    throws away all of their work. It was withdrawn on 2026-08-01, a few hours
    after it was published.

    Use v1.25.4
    or later.
    It carries the same Stratum V2 coinbase fix, with the V1 side kept
    intact — the two protocols now split the extranonce gap differently instead of
    sharing one layout.

    The downloads and the container image tag 1.25.3 have been removed so this
    build cannot be installed by accident. The original notes are kept below for
    the record.


    A Stratum V2 miner asking for more extranonce room than the coinbase had could
    produce a block the network would reject. Found while chasing something else.

    Fixed

    • The Sv2 extranonce now fits the coinbase gap exactly — a block found by a
      NerdQAxe-class miner would previously have been rejected by the network.
      An
      extended channel handed the miner back whatever size it asked for, checked
      only against a 1..16 range and never against the gap the job was actually
      built for. Per the spec min_extranonce_size is only the miner's lower bound;
      the pool sets the real size in its reply. A NerdQAxe asks for 6, the pool's
      own prefix takes 4, and the gap held 8 — ten bytes into an eight-byte hole.
      The coinbase then came out two bytes longer than its own scriptSig length
      field claims, which makes it an invalid transaction: Bitcoin Core's
      decoderawtransaction refuses those exact bytes. Shares were unaffected,
      because the miner and the pool concatenate the same way and therefore agree on
      the hash — the damage would only have surfaced on a block find, when that
      coinbase goes to submitblock. Stratum V1 was never exposed: it has always
      rejected an extranonce2 whose length is not exactly extranonce2_size.
    • extranonce2 grows from 4 to 8 bytes, so the gap is now 12 and miners
      asking for 6 fit. Without this, behaving correctly would have meant refusing
      those miners outright. V1 miners see the new size in the mining.subscribe
      reply and adopt it automatically; Sv2 miners get it when they open a channel.
    • The extranonce sizes are now one constant (EXTRANONCE1_SIZE,
      EXTRANONCE2_SIZE, EXTRANONCE_TOTAL_SIZE in job-builder) instead of a
      literal 4, 4 repeated across the daemon and the V1 server config. The two
      always had to agree; now that is enforced rather than remembered. The share
      reconstruction additionally refuses to build a coinbase whose parts do not sum
      to the gap — the same guard V1 has had all along.

    Added

    • Diagnostic: a rejected low-difficulty share is now rebuilt against every job
      in the history
      , not just the one the miner named, behind the existing opt-in
      lowdiff_diag log target. It reports whether another job would have made the
      share valid — which separates a misfiled job from a genuine mismatch, two
      cases that previously looked identical in the log. Never runs on the accept
      path.

    dvb-WarpPool v1.25.3 — Downloads

    Docker

    git.warppool.org/dvb-projekt/dvb-warppool:v1.25.3 (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