Skip to content

Releases: stratum-mining/stratum

v1.10.0

03 Jun 14:30
f465e0a

Choose a tag to compare

General release information

This release focuses on share accounting improvements, channel-management API refinements, and protocol/specification alignment.

Notable highlights include:

  • channels_sv2::server::share_accounting now tracks rejected shares alongside accepted shares, while share-work accounting has been updated to use u64 where appropriate for improved correctness and scalability.
  • channels_sv2::server added a stable_hashrate flag, providing additional control over hashrate stability behavior.
  • Standardized error_code constants were introduced across the protocol implementation.
  • channels_sv2 replaced reference-based getters with accessor APIs, simplifying the public API and improving encapsulation.
  • Custom-work mining received stability improvements, fixing a share-validation panic after SetNewPrevHash and correcting chain-tip transition handling for custom mining jobs.
  • Specification compatibility was improved through protocol-alignment fixes, ensuring closer adherence to the latest Stratum V2 specifications.

Crate changes

stratum-core
crate version was bumped from 0.3.0 to 0.4.0

channels_sv2
crate version was bumped from 5.0.0 to 5.1.0

mining_sv2
crate version was bumped from 9.0.0 to 10.0.0

job_declaration_sv2
crate version was bumped from 7.0.0 to 8.0.0

template_distribution_sv2
crate version was bumped from 5.0.0 to 5.1.0

common_messages_sv2
crate version was bumped from 7.1.0 to 7.2.0

parsers_sv2
crate version was bumped from 0.3.0 to 0.4.0

handlers_sv2
crate version was bumped from 0.3.0 to 0.4.0

stratum_translation
crate version was bumped from 0.2.0 to 0.3.0

What's Changed

  • add stable_hashrate flag to channels_sv2::server by @plebhash in #2152
  • add error_code constants by @plebhash in #2151
  • represent share work as u64 (where appropriate) by @plebhash in #2138
  • channels_sv2::server::share_accounting keeps track of rejected shares by @plebhash in #2149
  • refine CONTRIBUTING.md with versioning exception to stratum-core by @plebhash in #2158
  • fix validate_share panic after on_set_new_prev_hash in custom-work mode by @rx18-eng in #2156
  • add ERROR_CODE_OPEN_MINING_CHANNEL_EXTENDED_CHANNELS_NOT_SUPPORTED_FOR_STANDARD_JOBS by @plebhash in #2162
  • Revert "refine CONTRIBUTING.md with versioning exception to stratum-core" by @plebhash in #2160
  • fix specs incompatibilities by @GitGab19 in #2165
  • Fix custom mining job chain-tip transitions by @0xjc65eth in #2164
  • channels_sv2: replace ref getters with accessor APIs by @plebhash in #2161

New Contributors

Full Changelog: v1.9.0...v1.10.0

v1.9.0

05 May 15:36
6ab03af

Choose a tag to compare

General release information

Highlights of this release:

This release focuses on channels_sv2 extranonce and target improvements, fallible Sv1 APIs, and stronger framing/codec validation.

Notable highlights include:

  • channels_sv2 now clamps standard and extended channel targets to the declared max_target during channel creation and vardiff updates, fixing low-hashrate miners getting stuck when vardiff computed an easier target than allowed.
  • channels_sv2 added extranonce_manager, with ExtranonceAllocator and typed prefixes backed by a shared bitmap. It supports pool allocation and proxy sub-allocation from upstream prefixes, prevents standard/extended prefix overlap, and frees slots when prefixes are dropped.
  • Client share accounting now tracks rejected shares by upstream error_code, rather than only keeping a single rejected-share count.
  • sv1_api client/server trait methods now return Results across authorization, subscription, submit handling, extranonce/version-rolling state, status updates, and request-id tracking, allowing missing-state errors to propagate.
  • common_messages_sv2 added has_declare_tx_data(flags) for checking the Job Declaration DECLARE_TX_DATA setup flag.
  • Framing and codec coverage improved with quickcheck properties for SV2 headers/frames/handshake framing, plus Criterion benchmarks for encoding, decoding, serialization, Noise paths, and buffer-pool behavior.
  • Maintenance improved by committing Cargo.lock, dispatching stratum/main updates to sv2-apps, and documenting crate versioning rules for SemVer and public dependency exposure.

Crate changes

stratum-core
crate version was bumped from 0.2.1 to 0.3.0

channels_sv2
crate version was bumped from 4.0.0 to 5.0.0

mining_sv2
crate version was bumped from 8.0.0 to 9.0.0

common_messages_sv2
crate version was bumped from 7.0.0 to 7.1.0

parsers_sv2
crate version was bumped from 0.2.2 to 0.3.0

handlers_sv2
crate version was bumped from 0.2.2 to 0.3.0

sv1_api
crate version was bumped from 3.0.0 to 4.0.0

stratum_translation
crate version was bumped from 0.1.3 to 0.2.0

What's Changed

New Contributors

Full Changelog: v1.8.0...v1.9.0

v1.8.0

19 Mar 12:46
9d9cc06

Choose a tag to compare

General release information

Highlights of this release:

This release focuses on protocol correctness, share-accounting fixes, and stronger testing across the Stratum stack.

Notable highlights include:

  • channels_sv2 received the biggest functional improvements in this release: client-side share accounting now defers accepted-share totals to upstream acknowledgements, server-side batch accounting was corrected, duplicate shares are rejected even for block-finding submissions, and blocks_found metrics were added.
  • Several SV2 protocol crates were aligned more closely with the specification, including fixes to channel_bit / message_type definitions, moving CHANNEL_BIT_RECONNECT to common_messages_sv2, and renaming the Job Declaration channel-bit constant to CHANNEL_BIT_PUSH_SOLUTION.
  • sv1_api is safer and more robust: invalid Merkle-node conversions and invalid version-mask lengths now return errors instead of panicking.
  • Reliability and developer confidence improved with backend-agnostic codec encoding, new framing benchmarks, fuzz targets for SV2 datatypes and noise_sv2, codec property tests, CI cleanup, and workspace-level dependency consolidation.

Crate changes

stratum-core

crate version was bumped from 0.2.0 to 0.2.1

buffer_sv2

crate version was bumped from 3.0.0 to 3.0.1

handlers_sv2

crate version was bumped from 0.2.1 to 0.2.2

noise_sv2

crate version was bumped from 1.4.1 to 1.4.2

parsers_sv2

crate version was bumped from 0.2.1 to 0.2.2

common_messages_sv2

crate version was bumped from 6.0.2 to 7.0.0

template_distribution_sv2

crate version was bumped from 4.0.2 to 5.0.0

channels_sv2

crate version was bumped from 3.0.0 to 4.0.0

stratum-translation

crate version was bumped from 0.1.2 to 0.1.3

mining_sv2

crate version was bumped from 7.0.0 to 8.0.0

job_declaration_sv2

crate version was bumped from 6.0.0 to 7.0.0

sv1_api

crate version was bumped from 2.1.3 to 3.0.0

codec_sv2

crate version was bumped from 4.0.1 to 5.0.0

What's Changed

New Contributors

Full Changelog: v1.7.0...v1.8.0

v1.7.0

22 Jan 13:35
ec0f2c5

Choose a tag to compare

General release information

Highlights of this release:

  • updated protocol crates to be aligned with latest breaking GROUP CHANNEL changes in the Sv2 specification (see stratum-mining/sv2-spec#162)
    • Extended Channels can now be grouped into Group Channels, bringing them in line with the long-standing behavior of Standard Channels
  • fuzzing coverage expanded to all Sv2 messages
  • multiple improvements on jobs management in channels_sv2
  • benchmarking fixed on buffer_sv2, and also added to noise_sv2, laying the groundwork for more systematic performance analysis

Crate changes

stratum-core

crate version was bumped from 0.1.0 to 0.2.0

channels_sv2

crate version was bumped from 2.0.0 to 3.0.0

codec_sv2

crate version was bumped from 4.0.0 to 4.0.1

handlers_sv2

crate version was bumped from 0.2.0 to 0.2.1

binary_sv2

crate version was bumped from 5.0.0 to 5.0.1

mining_sv2

crate version was bumped from 6.0.0 to 7.0.0

framing_sv2

crate version was bumped from 6.0.0 to 6.0.1

parsers_sv2

crate version was bumped from 0.2.0 to 0.2.1

stratum-translation

crate version was bumped from 0.1.1 to 0.1.2

noise_sv2

crate version was bumped from 1.4.0 to 1.4.1

job_declaration_sv2

crate version was bumped from 5.0.2 to 6.0.0

buffer_sv2

crate version was bumped from 2.0.0 to 3.0.0

sv1_api

crate version was bumped from 2.1.2 to 2.1.3

What's Changed

Full Changelog: v1.6.0...v1.7.0

v1.6.0

26 Nov 19:21
91ca49e

Choose a tag to compare

General release information

Highlights of this release:

  • added support for Sv2 Extensions via the introduction of extensions_sv2 crate, and some adaptations to handlers_sv2 and parsers_sv2
  • started actively fuzzing and performing regression tests against the fuzzing corpus
  • many crates were deprecated, namely:
    • binary_codec_sv2, with its functionality incorporated into binary_sv2
    • roles_logic_sv2, with some of its funcitonality inherited by crates like channels_sv2, handlers_sv2, parsers_sv2, and stratum-apps (on sv2-apps repo)
    • network_helpers_sv2, with some of its functionality inherited by stratum-apps crate (on sv2-apps repo)
    • rpc_sv2, with some of its functionality inherited by stratum-apps crate (on sv2-apps repo)
    • bip32_derivation
    • error_handling

⚠️ Most importantly, this is the first release where SRI is split across different repositories. Moving forward, this repository will carry library crates (and continue under the same global versioning scheme), and Sv2 applications (a.k.a. "roles") will live under https://github.com/stratum-mining/sv2-apps under a new global versioning scheme.

Crate changes

channels_sv2

crate version was bumped from 1.0.2 to 2.0.0

codec_sv2

crate version was bumped from 3.0.1 to 4.0.0

handlers_sv2

crate version was bumped from 0.1.0 to 0.2.0

binary_sv2

crate version was bumped from 4.0.0 to 5.0.0

mining_sv2

crate version was bumped from 5.0.1 to 6.0.0

framing_sv2

crate version was bumped from 5.0.2 to 6.0.0

parsers_sv2

crate version was bumped from 0.1.2 to 0.2.0

What's Changed

New Contributors

Full Changelog: v1.5.0...v1.6.0

v1.5.0

25 Sep 11:21
30405fa

Choose a tag to compare

General release information

Highlights of this release:

  • Translator Proxy was re-written with new functionality, namely:

    • aggregated and non-aggregated modes
    • optional vardiff
    • ability to fallback
  • Job Declarator Client was re-written with new functionality, namely:

    • allowing multiple downstream clients at the same time
    • allowing downstream clients to establish Standard Channels
  • new stratum-translation crate modularizes Sv1 ↔ Sv2 translation logic

  • BIP141 fields are now stripped from coinbase on Extended Jobs

  • new APIs added to network_helpers_sv2, expanding ways it can be used

⚠️ Most importantly, this is the last release where SRI is structured as a monorepo. Moving forward, this repository will carry library crates (and continue under the same global versioning scheme), and Sv2 applications (a.k.a. "roles") will live under https://github.com/stratum-mining/sv2-apps under a new global versioning scheme.

Crate changes

sv2_ffi

this crate was deprecated

roles_logic_sv2

crate version was bumped from 3.0.0 to 4.0.0

based on interactions with early adopters, some modules of roles_logic_sv2 were isolated into standalone crates, namely:

  • handlers_sv2
  • parsers_sv2
  • channels_sv2

handlers_sv2

new crate published at version 0.1.0

parsers_sv2

new crate published at version 0.1.1

channels_sv2

new crate published at version 0.1.0 and then bumped to 1.0.2

network_helpers_sv2

crate version was bumped from 4.0.0 to 4.0.1

stratum-common

crate version was bumped from 4.0.0 to 4.0.1

common_messages_sv2

crate version was bumped from 5.0.0 to 6.0.1

binary_codec_sv2

crate version was bumped from 2.0.0 to 3.0.0

binary_sv2

crate version was bumped from 3.0.0 to 4.0.0

framing_sv2

crate version was bumped from 5.0.0 to 5.0.1

codec_sv2

crate version was bumped from 2.1.0 to 3.0.1

mining_sv2

crate version was bumped from 4.0.0 to 5.0.1

job_declaration_sv2

crate version was bumped from 4.0.0 to 5.0.1

template_distribution_sv2

crate version was bumped from 3.0.0 to 4.0.1

sv1_api

crate version was bumped from 2.1.0 to 2.1.1

rpc_sv2

crate version was bumped from 1.1.0 to 1.1.1

PR List

New Contributors

Full Changelog: v1.4.0...v1.5.0

v1.4.0

09 Jul 17:40
0b083ab

Choose a tag to compare

General release information

Highlights of this release:

  • Implemented recent Job Declaration (JD) spec changes in SRI
  • Introduced simplified and unified channel/job APIs in roles_logic_sv2, enabling correct SV2 behavior across all channel states without imposing architectural decisions on adopters. Pool migrated to use these APIs
  • Modularized vardiff logic to make it reusable across roles
  • Deprecated mining_proxy_sv2 and cleaned up roles_logic_sv2 internals
  • Simplified UX for configuring custom coinbase output with user-defined reward address
  • Added documentation for all roles: Pool, JDS, JDC, and tProxy

This release also includes internal refactors, documentation improvements, and CI/test enhancements.

Crate changes

const_sv2

this crate has been deprecated

roles_logic_sv2

some new modules were introduced, namely:

  • channels

some modules were refactored, namely:

  • handlers
  • channel_logic

it had the following modules removed, namely:

  • common_properties
  • job_dispatcher

crate version was bumped from 2.0.0 to 3.0.0

stratum_common

crate version was bumped from 2.0.0 to 3.0.0

network_helpers_sv2

crate version was bumped from 3.0.0 to 4.0.0

job_declaration_sv2

crate version was bumped from 3.0.0 to 4.0.0

mining_sv2

crate version was bumped from 3.0.0 to 4.0.0

common_messages_sv2

crate version was bumped from 4.0.0 to 5.0.0

framing_sv2

crate version was bumped from 4.0.0 to 5.0.0

noise_sv2

crate version was bumped from 1.3.0 to 1.4.0

template_distribution_sv2

crate version was bumped from 3.0.0 to 3.1.0

codec_sv2

crate version was bumped from 2.0.0 to 2.1.0

sv2_ffi

crate version was bumped from 2.0.0 to 2.1.0

binary_sv2

crate version was bumped from 2.0.0 to 3.0.0

PR List

Read more

v1.3.0

28 Mar 19:55
6a4874d

Choose a tag to compare

General release information

This release migrates the old CI system based on Message Generator into the new SRI Integration Tests Framework.

crate changes

noise_sv2

no_std compatibility was made optional

crate version was bumped from v1.2.1 to v1.3.0

codec_sv2

no_std compatibility was made optional

crate version was bumped from v1.3.1 to v2.0.0

key-utils

was made no_std-compatible (optionally)

crate version was bumped from v1.1.0 to v1.2.0

roles_logic_sv2

some modules were refactored, namely:

  • handlers
  • job_creator
  • job_dispatcher
  • channel_logic

it had the following modules removed:

  • routers
  • selectors

crate version was bumped from v1.2.3 to v2.0.0

network_helpers_sv2

the async_std flavors were removed, leaving only tokio flavor

Connection no longer returns AbortHandles

crate version was bumped from v2.0.2 to v3.0.0

framing_sv2

with_serde feature flag was removed

crate version was bumped from v3.0.0 to v4.0.0

common_messages_sv2

with_serde feature flag was removed

crate version was bumped from v3.0.0 to v4.0.0

job_declaration_sv2

with_serde feature flag was removed

crate version was bumped from v2.0.0 to v3.0.0

mining_sv2

with_serde feature flag was removed

ExtendedExtranonce was refactored

crate version was bumped from v2.0.0 to v3.0.0

template_distribution_sv2

with_serde feature flag was removed

crate version was bumped from v2.0.0 to v3.0.0

sv2-ffi

with_serde feature flag was removed

crate version was bumped from v1.0.2 to v2.0.0

buffer_sv2

with_serde feature flag was removed

crate version was bumped from v1.1.1 to v2.0.0

binary_sv2

serde-based functionality was deprecated

crate version was bumped from v1.2.1 to v2.0.0

PR list

Read more

v1.2.1

08 Jan 17:05
dbc349b

Choose a tag to compare

General release information

This is a PATCH release.

After v1.2.0 we identified a bug on roles_logic_sv2 crate, which is described in detail on #1324

The bug manifested while mining on testnet4. Originally, the non-future job creation logic on roles_logic_sv2 always used the system time for the header timestamp, instead of the timestamp defined by the SetNewPrevHash message sent by the Template Provider. This went un-noticed for a long time, until it was noticed while mining on testnet4 (where blocks are regularly mined with timestamps pushed into the future in order to exploit the difficulty adjustment mechanism).

Now, non-future jobs are always created by using the original timestamp defined by the Template Provider.

What's Changed

  • simplify [package.metadata.docs.rs] on protocols crates by @plebhash in #1318
  • Fix timestamp bug - min_ntime becomes always the one sent by TP by @GitGab19 in #1325

Full Changelog: v1.2.0...v1.2.1

v1.2.0

27 Dec 17:48
651f35a

Choose a tag to compare

General release information

This release adds new Rust Docs for the following crates:

  • buffer_sv2
  • binary_sv2
  • framing_sv2
  • template_distribution_sv2
  • mining_sv2
  • job_declaration_sv2
  • common_messages_sv2
  • binary_sv2
  • binary_codec_sv2
  • derive_codec_sv2

All the public APIs should now have documentation accessible easily for the library users through https://www.docs.rs/

no_std support was made into a default on the following crates:

  • buffer_sv2
  • framing_sv2
  • template_distribution_sv2
  • mining_sv2
  • job_declaration_sv2
  • common_messages_sv2
  • binary_sv2
  • binary_codec_sv2
  • derive_codec_sv2
  • serde_sv2

Finally, a Translator Proxy CI test that was based on the Message Generator was migrated into the new Integration Tests Framework

What's Changed

New Contributors

Full Changelog: v1.1.0...v1.2.0