Skip to content

Releases

Release notes

Curated, validated exports of the engine. This page rebuilds whenever a new release is published on GitHub.

  1. CashStratum 1.2.5

    v1.2.5 ↗

    CashStratum 1.2.5 is an engine release limited to the Stratum V2 Noise handshake. Builds configured with --disable-sv2 are functionally identical to 1.2.4.

    🔐 Stratum V2 certificate format version 0

    The SV2 responder signed its Noise certificate (SIGNATURE_NOISE_MESSAGE) with format version 1. The SV2 specification requires 0 and instructs initiators to reject any other value, so clients built on SRI noise_sv2 2.0.0 and later aborted the handshake with InvalidCertificate. Reported in #3.

    • The server now signs certificate format version 0.
    • CashStratum's own SV2 client (ckproxy and the job-declarator client) rejects any other certificate version before checking the signature.
    • Certificates served by a long-running listener are re-dated per handshake when within a day of expiry, so a pool up for more than the 365-day window no longer serves an expired certificate.
    • Ports upstream CKPool commits 528b9baf and 3c45dbe8; the Base58Check [1, 0] authority-key prefix is unchanged.

    🚀 Upgrading an SV2 deployment

    A restart is enough. The certificate is signed under the same authority key, so published stratum2+tcp://host:port/<key> URLs do not change. Roll out pool servers before proxies and job-declarator clients: an updated client refuses an upstream that still serves version 1.

    ✅ Validation

    • SV2-enabled Linux build: make check 15/15, including the new negative test (versions 1, 0x0100 and 0xffff refused) and the long-uptime renewal test.
    • --disable-sv2 build: make distcheck passes.
    • Interop with an SRI noise_sv2 ≥ 2.0.0 initiator was verified from SRI source, not executed; reports from operators running SRI clients are welcome on #3.

    Full details: CHANGELOG.md · Operator note: docs/installation.md

    CashStratum 1.2.4

    v1.2.4 ↗

    CashStratum 1.2.4 is a documentation and proof release. No engine, API or installer code changed — a 1.2.3 build and a 1.2.4 build are functionally identical.

    ⛏️ 81 BCH mainnet blocks — 12 of them on a CashStratum release

    1.2.3 Now
    Blocks on BCH mainnet 78 81
    Gross rewards 243.94151949 BCH 253.31946287 BCH
    Blocks on CashStratum v1.2.1 9 12
    Blocks with redacted solve logs 45 48

    Three more blocks were found on 2026-10-12, the same day as 972517: 972524, 972529 and 972535. Each has a redacted solve log and SHA-256 checksums.

    💵 Valuation at the price each block was found

    The headline value now uses the BCH/USD price BlockSniper saved for each block (≈ $132,752.44): 72 database snapshots, 2 separately marked BlockSniper screenshot prices and 7 historical Coinbase minute-price fallbacks. Every row is labelled with its basis. The independent Coinbase/Bitstamp calculation is kept for comparison (≈ $132,647.28), and verify-values.py checks both.

    🎨 A new README

    • Light/dark hero, feature showcase and architecture artwork (WebP/SVG, mobile variants).
    • A typeset excerpt of block 972535's real solve log.
    • Node choice explained: BCHN (RPC + ZMQ, installer + regtest gate), BCHD and Flowee the Hub (RPC + polling, since 1.2.2).
    • Address-based vs username-based mining, rental difficulty handling, regional /ping latency probes.
    • Release validation: regtest and testnet before every engine release.

    🔍 Verify it yourself

    cd docs/proofs
    python3 verify.py            # re-fetch all 81 blocks + coinbases from a public BCH API
    python3 verify-values.py     # re-check every reward sum, both valuation methods (offline)
    

    Full details: CHANGELOG.md · Proofs: docs/proofs/

    CashStratum 1.2.3

    v1.2.3 ↗

    CashStratum 1.2.3 is a documentation and proof release. No engine, API or installer code changed — a 1.2.2 build and a 1.2.3 build are functionally identical.

    ⛏️ 78 BCH mainnet blocks — 9 of them on a CashStratum release

    Before Now
    Blocks on BCH mainnet 69 78
    Gross rewards 215.80288934 BCH 243.94151949 BCH
    Historical value ≈ $121,575.15 ≈ $129,968.85
    Blocks with redacted solve logs 35 45

    The 9 new blocks — 971726, 971744, 971770, 971817, 971860, 972310, 972313, 972318 and 972517, 2026-10-06 → 2026-10-12 — are the first found by a tagged CashStratum release (v1.2.1) rather than its predecessor fork. Each has a redacted solve log (candidate → BLOCK ACCEPTED! → ZMQ tip change) with SHA-256 checksums and a two-exchange valuation. Block 966569's solve log was also recovered.

    🔍 Verify it yourself

    cd docs/proofs
    python3 verify.py            # re-fetch all 78 blocks + coinbases from a public BCH API
    python3 verify-values.py     # re-check every reward sum and price boundary (offline)
    

    📚 Also in this release

    • README rebuilt around the evidence: headline figures, the proof timeline by era (EloPool → BlockSniper → CashStratum v1.2.1), a verify-it-yourself walkthrough and a documentation map.
    • Proof records found on a tagged release now carry a software field.
    • verify-values.py reads the block count from the data instead of a hard-coded 69.
    • pools.yml: the reference deployment listing reflects the 78 blocks.

    Full details: CHANGELOG.md · Proofs: docs/proofs/

    CashStratum 1.2.2

    v1.2.2 ↗

    CashStratum 1.2.2 adds BCHD and Flowee the Hub as supported nodes alongside Bitcoin Cash Node. It also closes a latent zero-reward coinbase path. Behaviour on BCHN is unchanged.

    Contributed by @CyberAshven, who runs CashStratum in a StartOS package where operators choose their node. Thank you! 🙏


    🧩 Node support

    Node Status
    Bitcoin Cash Node (BCHN) Reference. Solo installer, regtest mining gate, reference deployment
    BCHD New. Manual configuration: --notls on localhost, "notify": false
    Flowee the Hub New. Manual configuration, "notify": false

    What changed under the hood:

    • Every JSON-RPC request carries an id. BCHD treats a request without one as a notification and never replies.
    • getblocktemplate no longer asks for coinbasetxn. With that capability, BCHD returns a coinbase transaction instead of coinbasevalue, or an error when it has no --miningaddr.
    • coinbaseaux is optional, as BIP22 allows, because Flowee the Hub omits it.
    • Chain detection recognises BCHD's network names (mainnet, testnet3).

    Setup for each node is in Supported nodes.

    🔒 Security

    • A block template without a usable coinbasevalue is refused. The missing field used to be read as zero, so a node answering with a coinbase transaction alone would have produced work whose coinbase paid nothing.

    ✅ Verification

    • New test/nodecompat unit test (in make check). It drives the real RPC layer with BCHN-, Flowee- and BCHD-style replies and checks all nine request strings. It fails 17 checks against 1.2.1 and passes on 1.2.2.
    • BCHN regtest mining gate: 89/89, including real payout blocks, the same as 1.2.1.
    • BCHN behaves the same: it ignores the capability list and always returns coinbaseaux and an integer coinbasevalue, so its parsed template is identical.

    ⬆️ Upgrading

    git fetch --tags && git checkout v1.2.2
    ./autogen.sh && ./configure && make
    
    # or with the solo installer (BCHN)
    sudo scripts/install-cashstratum-solo.sh --ref v1.2.2
    

    No configuration changes are needed on BCHN. The solo installer remains BCHN-only.


    Full details: CHANGELOG.md · Install guide: docs/installation.md

    CashStratum 1.2.1

    v1.2.1 ↗

    CashStratum 1.2.1 is a security and reliability release for the 1.2 line. It tightens how shares and difficulty are accounted for, keeps every transaction in very large BCH block templates, and fixes two operator-facing issues. We recommend that all 1.2.0 operators upgrade.

    ⛏️ Already finding blocks

    The reference deployment, blocksniper.ai, moved to 1.2.1 on release day and mined two BCH mainnet blocks on this build within hours:

    Block Mined (UTC) Reward Transactions Explorer
    971726 2026-10-06 11:04 3.12769687 BCH 62 Blockchair · Bitcoin.com
    971744 2026-10-06 14:15 3.12597374 BCH 43 Blockchair · Bitcoin.com

    In both blocks the solo miner was paid on-chain, directly in the coinbase, to their own CashAddr. No pool custody and no payout run were involved.


    🔒 Security hardening

    Area Before Now
    Difficulty requests mining.suggest_difficulty and rental defaults could exceed maxdiff; password parsing accepted partial numbers and an embedded diff= Requests are clamped to the configured range and password difficulty tokens must be complete numbers
    Hashrate accounting Rejected SV2 submissions and repeated stale SV1 submissions could count toward rate estimates Only eligible shares earn rate credit. Block detection and accepted latency-grace work are unchanged
    Share logs Writing by filename could truncate a log that was open for append Writes go through the append stream, and write/close failures are checked
    Client framing Parsing past a newline could accept a malformed frame or dispatch one request twice Exactly one complete frame is parsed at a time. EOF is handled, and the buffer is kept if a resize fails
    Proxy merkle branches Hex encoding was not fully validated Encoding is validated and branches share the common capacity
    Payout scripts Startup and remote-user address conversion results went unchecked An empty payout script is refused instead of producing work that pays nothing

    Each change and the original finding it addresses are listed in docs/security-hardening.md.

    🧱 Large BCH templates

    Templates above 65,535 transactions used to be truncated silently. Merkle construction is now heap-backed with 32-level branches across the template and proxy paths. A malformed template is rejected rather than replaced with empty work. A new C test, test/merklebranch, compares reconstructed branches against independently computed trees at 65,535, 65,536 and 300,000 transactions.

    🐛 Fixes

    • Chain detection fails closed. An RPC failure or an unknown chain no longer drops the pool onto mainnet. It retries until the node reports a supported chain.
    • Block notifications recover on their own. Notification mode adds a five-second RPC tip-polling backstop, bounded ZMQ polling and recovery from failed sockets.
    • disableproxy on a parent proxy now takes effect. Before, only the parent socket closed. Its subproxies kept serving and new ones kept being recruited, so miners never moved. A disabled parent now takes its subproxies down and stops recruiting, and the active proxy switches over in the same second.
    • monitor.sh and clean-old-blocks.sh find your install. They used to guess the install directory from $HOME, which broke installs under /opt/cashstratum and runs as another user. They now resolve from the script's own location, following symlinks, and use the first candidate that holds a pool log. CASHSTRATUM_DIR and CKPOOL_DIR still take precedence.

    ✅ Verification

    • BCH regtest gate: 89/89 assertions. These include real payout blocks and difficulty rejection and clamping.
    • C unit tests pass on a clean Ubuntu build with SV2 enabled.
    • New regressions under testing/ cover connector framing, difficulty policy, network-prefix selection, notification recovery, remote payout registration and share accounting.

    ⬆️ Upgrading

    # from a checkout
    git fetch --tags && git checkout v1.2.1
    ./autogen.sh && ./configure && make
    
    # or with the solo installer
    sudo scripts/install-cashstratum-solo.sh --ref v1.2.1
    

    Behaviour to be aware of after upgrading:

    • A miner that asks for a difficulty above maxdiff is clamped to maxdiff.
    • A password difficulty token that is not a complete number (for example d=500x) is ignored rather than partially parsed.
    • If the node cannot report its chain at startup, the pool waits and retries instead of assuming mainnet.
    • The home-directory monitor shortcut written by post-install.sh is now a symlink to the installed script.

    No configuration changes are required.


    Full details: CHANGELOG.md · Install guide: docs/installation.md · Requires an existing, synced Bitcoin Cash Node.

    CashStratum 1.2.0

    v1.2.0 ↗

    First public CashStratum release — a BCH-first Stratum V1 server and solo mining pool engine built on CKPool 1.2.0.

    Included

    • C mining engine with native CashAddr, direct per-address solo payouts and a configurable operator fee
    • Go operator API and block notifier
    • Installers: install-cashstratum.sh + post-install.sh (interactive, from a checkout) and scripts/install-cashstratum-solo.sh --ref v1.2.0 (root, validates your BCHN node, systemd, rollback)
    • Unit tests, the regtest money gate, and the mirrored block proofs under docs/proofs/

    See CHANGELOG.md for the full entry and docs/installation.md to get started. Requires an existing, synced Bitcoin Cash Node.