Blake3DCR · Decred's BLAKE3 Proof-of-Work, at near native speed
The browser as a mining rig — a byte-exact WebGPU solving kernel for Decred's DCP0011 (BLAKE3-256 over the 180-byte header), wrapped in a stable mining loop, a local stratum pool, and a live-chain E2E. No GPU required to read this; one is recommended for the rest.
The scoreboard
| Metric | Value | The story |
|---|---|---|
| Kernel throughput (AMD RX 5700 XT) | 5.9–6.5 Gh/s | Same class as gominer's OpenCL miner |
| The gap we closed | 243M → 6.51 Gh/s | ~27× — it was a fence round-trip, not the math |
| Kernel ceiling vs ALU peak | ~66% | Know the physics before you optimize |
| Validation gates | K1–K10c, 69/69 vectors | Every byte proven, none assumed |
| Live simnet E2E | dcrd 0 → 126 blocks, 0 rejected shares | A browser mined a real chain, through a real pool |
Why this is a thing
- The midstate trick. Only the last 64-byte block changes per nonce, so we hash the constant prefix once. Per-attempt cost collapsed from a full hash to a single compression — the difference between "mining" and "wishing".
- Correctness is a build artifact, not a hope. A Go reference, triple-cross-checked against two independent implementations and official vectors, compiled to a WASM oracle; every WGSL stage diffs byte-exact against it. Gates that prove the filter is alive — with planted nonces (B7 accepted, B0 rejected) — not gates that pass because the expected set was empty.
- The pipeline runs, or it doesn't. Decoupled burst loop: fill the ring, drain it, batch the synchronization. GPU idle gap: 0 ms. Device lost, rebuild, resume — with the receipts to prove it.
- It ships where it says it ships. A local dcrpool-compatible stratum pool (Go), a zero-dependency browser stratum client, and a one-command E2E that starts a private simnet node, mines with your GPU, and only exits 0 when shares are accepted and the chain advanced.
Run it
# on the Windows rig (real GPU): same chain, 5.9 Gh/s, headful browser window ./run-simnet-rig.ps1 -Seconds 75 -Sharediff 67108864 # the kernel's full-capacity benchmark page (save URL to Desktop and stare) node src/harness/server.js 8333 src/
Layout
src/blake3dcr/ Go reference + official test vectors + WASM oracle
src/wgsl/ the kernel — 7 rounds, fully unrolled, no mercy
src/harness/ gates, MinerLoop, bench, browser stratum client, E2E runners
src/pool/ the local stratum pool that speaks Decred
2026 DeepSeek V4 Flash