-
v1.25.5
StableAll checks were successfulCI / Rust clippy (push) Successful in 1m40sCI / Rust fmt (push) Successful in 1m13sCI / Rust test (push) Successful in 5m34sCI / UI (SvelteKit) (push) Successful in 1m12sCI / Security Audit (push) Successful in 1m31sdocs / build (push) Successful in 35sRelease / Docker Multi-Arch (push) Successful in 20m20sRelease / Binary aarch64-unknown-linux-gnu (push) Successful in 10m56sRelease / Binary x86_64-unknown-linux-gnu (push) Successful in 10m10sRelease / Linux .deb + .rpm (amd64) (push) Successful in 10m59sRelease / Linux .deb + .rpm (arm64) (push) Successful in 11m51sRelease / Linux AppImage (aarch64) (push) Successful in 10m57sRelease / Linux AppImage (x86_64) (push) Successful in 10m8sRelease / Cosign sign artifacts (push) Successful in 28sRelease / Forgejo Release (push) Successful in 36sreleased this
2026-08-02 08:41:25 +00:00 | 7 commits to main since this releaseThe answer to "why do my Stratum V2 miners sit at 2-4% rejects?" — plus the
reason their connections kept dying. Both verified against the live miners
before tagging: nine block changes without a single reject (previously every
one produced a burst, 9.6 on average), and 75 minutes without one connection
abort (previously five in 68 minutes).Fixed
- Block-change jobs are now future jobs, activated by
SetNewPrevHash.
Every Sv2 job went out as "mine immediately" (min_ntimeset) followed
unconditionally by aSetNewPrevHash. Per spec, "immediately" means against
the prev hash the miner currently knows — on a block change, the old one.
Spec-conformant firmware therefore hashed the new merkle root against the
stale tip until the next 30-second refresh tick, and every one of those
shares came back as low-difficulty. Measured live: all 60 rejects in a
50-minute window sat within 90 seconds of a block change, median 16 s. Now
a block change ships the job as future (min_ntimeempty) and the
SetNewPrevHashactivates it; a template refresh ships an immediately
active job and noSetNewPrevHashat all (sending one there was itself
off-spec). The daemon'sclean_jobsflag — which V1 has always received —
now reaches the Sv2 path too. Stratum V1 never had this problem: its
mining.notifycarries the prev hash inside the job. - Sv2 connections no longer die with
Noise(Aead("Error")). The
encrypted-frame reader had two await points with an AEAD-nonce advance
between them, running insidetokio::select!— and every other branch
firing (the VarDiff idle tick, a job broadcast, a V1 line in the
translator) cancels the in-flight read. If that landed while a frame was
only partially received, the reader lost stream bytes or treated payload
ciphertext as a fresh header, the next tag check failed, and the connection
died — live, sessions lasted anywhere from 2 to 67 minutes, costing the
miner its in-flight work each time. The reader is now cancellation-safe:
bytes land in a persistent buffer, and decryption happens only once the
complete record is buffered. Both the server loop and the translator's
client use it. - The V1↔V2 translator understands future jobs. It paired job and prev
hash strictly by job id, which only ever matched because every push carried
a freshSetNewPrevHash. It now pairs an immediately-active job with the
latest known prev hash and takes its ntime from the job — without this,
refreshes would have stopped reaching V1 miners behind the translator.
Added
- Opt-in diagnostics behind the existing
lowdiff_diaglog target: rejected
shares are re-checked against every job in the history, and every job push
logs the history decision (new_block, ring length, prev-hash heads).
These two lines are how both bugs above were found.
dvb-WarpPool v1.25.5 — Downloads
Docker
git.warppool.org/dvb-projekt/dvb-warppool:v1.25.5(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.pubin the repo root):cosign verify-blob \ --key cosign.pub \ --bundle SHA256SUMS.bundle \ SHA256SUMS sha256sum --check SHA256SUMSFirst-time setup: run
dvb-warppool-setupfor the first-run wizard.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
1 download
- Block-change jobs are now future jobs, activated by