Releases: stratum-mining/stratum
v1.10.0
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_accountingnow tracks rejected shares alongside accepted shares, while share-work accounting has been updated to useu64where appropriate for improved correctness and scalability.channels_sv2::serveradded astable_hashrateflag, providing additional control over hashrate stability behavior.- Standardized
error_codeconstants were introduced across the protocol implementation. channels_sv2replaced 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
SetNewPrevHashand 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_hashrateflag tochannels_sv2::serverby @plebhash in #2152 - add
error_codeconstants by @plebhash in #2151 - represent share work as
u64(where appropriate) by @plebhash in #2138 channels_sv2::server::share_accountingkeeps track of rejected shares by @plebhash in #2149- refine
CONTRIBUTING.mdwith versioning exception tostratum-coreby @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_JOBSby @plebhash in #2162 - Revert "refine
CONTRIBUTING.mdwith versioning exception tostratum-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
- @rx18-eng made their first contribution in #2156
- @0xjc65eth made their first contribution in #2164
Full Changelog: v1.9.0...v1.10.0
v1.9.0
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_sv2now clamps standard and extended channel targets to the declaredmax_targetduring channel creation and vardiff updates, fixing low-hashrate miners getting stuck when vardiff computed an easier target than allowed.channels_sv2addedextranonce_manager, withExtranonceAllocatorand 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_apiclient/server trait methods now returnResults across authorization, subscription, submit handling, extranonce/version-rolling state, status updates, and request-id tracking, allowing missing-state errors to propagate.common_messages_sv2addedhas_declare_tx_data(flags)for checking the Job DeclarationDECLARE_TX_DATAsetup flag.- Framing and codec coverage improved with
quickcheckproperties 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, dispatchingstratum/mainupdates tosv2-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
- ci: dispatch stratum main updates to sv2-apps by @plebhash in #2121
- Fix CI by @GitGab19 in #2127
- Add prop test to framing by @Shourya742 in #2085
- contribution guidelines for crate versioning by @plebhash in #2133
- Make sv1 server trait methods return results by @Shourya742 in #2134
- bump sv1-api dependent crate by @Shourya742 in #2137
- channels_sv2: clamp target to max_target instead of erroring by @vnprc in #2118
- Add codec benches by @Shourya742 in #2058
- Add
extranonce_managermodule inchannels_sv2by @GitGab19 in #2098 - channels_sv2::client::share_accounting keeps track of
error_codefor rejected shares by @plebhash in #2139 - feat(common-messages): add has_declare_tx_data helper function by @wcqy-ye in #2129
- use rust 1.85 in
release-libsworkflow by @GitGab19 in #2144 - add override step to
release-libsworkflow by @GitGab19 in #2145 - update error handling in
release-libs.shby @GitGab19 in #2146
New Contributors
Full Changelog: v1.8.0...v1.9.0
v1.8.0
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_sv2received 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, andblocks_foundmetrics were added.- Several SV2 protocol crates were aligned more closely with the specification, including fixes to
channel_bit/message_typedefinitions, movingCHANNEL_BIT_RECONNECTtocommon_messages_sv2, and renaming the Job Declaration channel-bit constant toCHANNEL_BIT_PUSH_SOLUTION. sv1_apiis 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
- sv1: remove third-party hex crate dependency by @8144225309 in #2054
- Add btrust logo to readme by @pavlenex in #2061
- Add machete to CI by @Shourya742 in #2073
- feat(channels): add set_nominal_hashrate to client ExtendedChannel by @gimballock in #2077
- Fix ci by @Shourya742 in #2081
- move dependencies to workspace root by @Shourya742 in #2082
- Make encoder backend agnostic by @Shourya742 in #2052
- Add framing benches by @Shourya742 in #2051
- sv1: return errors instead of panicking in MerkleNode TryFrom by @ashishkrshaw in #2084
- defer
channels_sv2::clientshare acceptance to upstream acknowledgement by @plebhash in #2090 - feat(channels): add blocks_found metric to ShareAccounting by @gimballock in #2088
- Check for duplicate share on block found by @GitGab19 in #2097
- fix mismatches in
channel_bitandmessage_typeaccording to the specs by @lucasbalieiro in #2095 - clarify the reporting process in
SECURITY.mdby @lucasbalieiro in #2100 - prevent arithmetic overflow in certificate validity calculation by @lucasbalieiro in #2104
- fix
channels_sv2::server::ShareAccounting::update_share_accountingby @plebhash in #2102 - Fix version mask unvalid len by @exd02 in #2109
- Add fuzz targets for sv2 datatypes by @lucasbalieiro in #2074
- add fuzz target for the
noise_sv2crate. by @lucasbalieiro in #2106 - add codec prop test by @Shourya742 in #2087
channels-sv2: refine client share accounting counters by @plebhash in #2114
New Contributors
- @8144225309 made their first contribution in #2054
- @gimballock made their first contribution in #2077
- @ashishkrshaw made their first contribution in #2084
- @exd02 made their first contribution in #2109
Full Changelog: v1.7.0...v1.8.0
v1.7.0
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 tonoise_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
- update
run-integration-tests.shscripts to patch the sources from crates.io by @lucasbalieiro in #2012 - add
SECURITY.mdby @GitGab19 in #2016 - noise-sv2: add 10s clock skew tolerance to signature verification by @lucasbalieiro in #2017
- Remove deprecated actions-rs from workflow by @Shourya742 in #2024
- introduce fuzz coverage for all
subprotocol::common_messages_sv2by @lucasbalieiro in #2020 - avoid calling
mark_past_jobs_as_stale2x by @plebhash in #2025 - fix integration-test script patch by @lucasbalieiro in #2027
- ci: detect companion PR changes and conditionally trigger integration tests by @lucasbalieiro in #2026
JobStoretrait methods return owned types instead of refs by @plebhash in #2011- make
run-integration-tests.shupdate the integration tests Cargo.lock. by @lucasbalieiro in #2031 - rename
DeclareMiningJob.tx_ids_listtowtxid_listby @plebhash in #2029 - associate
TargettoJoband use it for share validation (instead of channelTarget) by @plebhash in #2000 - make SupportedChannelTypes Copy by @coleFD in #2033
- Add miri workflow by @Shourya742 in #2023
- Remove profile from workspace toml by @Shourya742 in #2036
- Add rust-toolchain.toml by @Shourya742 in #2034
- fuzz: refactor SV2 message fuzzing and expand coverage by @lucasbalieiro in #2028
- Avoid recursion when generating keypair by @Shourya742 in #2038
- Add context to sv1 handler by @Shourya742 in #2047
- add
rust-analyzertorust-toolchain.tomlby @plebhash in #2048 - implements the Display trait for sv1 messages by @lucasbalieiro in #2050
- add Group Channel adaptations on
channels_sv2+mining_sv2by @plebhash in #2044 - Add noise bench by @Shourya742 in #2037
- Arrange buffer-sv2 fuzz and bench correctly by @Shourya742 in #2035
- bump PATCH of
binary_sv2by @GitGab19 in #2055 - bump sv1_api version by @plebhash in #2056
Full Changelog: v1.6.0...v1.7.0
v1.6.0
General release information
Highlights of this release:
- added support for Sv2 Extensions via the introduction of
extensions_sv2crate, and some adaptations tohandlers_sv2andparsers_sv2 - started actively fuzzing and performing regression tests against the fuzzing corpus
- many crates were deprecated, namely:
binary_codec_sv2, with its functionality incorporated intobinary_sv2roles_logic_sv2, with some of its funcitonality inherited by crates likechannels_sv2,handlers_sv2,parsers_sv2, andstratum-apps(onsv2-appsrepo)network_helpers_sv2, with some of its functionality inherited bystratum-appscrate (onsv2-appsrepo)rpc_sv2, with some of its functionality inherited bystratum-appscrate (onsv2-appsrepo)bip32_derivationerror_handling
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
- Improve display for u32 fields in protocol messages by @lucasbalieiro in #1919
- Enforce upstream channel opening by @Shourya742 in #1917
- add readme to handlers_sv2 by @Shourya742 in #1920
- chore(IT): remove unused imports in integration test by @Shourya742 in #1922
- Fix extranonce size during client side channel initialization by @Shourya742 in #1923
- Fix extranonce range calculation in JDC by @Shourya742 in #1925
- Disable ascii for file by @Shourya742 in #1929
- tProxy: improve Sv1Server messages received in downstream.rs by @GitGab19 in #1930
- ci: migrate from deprecated macos-13 to macos-latest ARM64 runner by @GitGab19 in #1936
channels_sv2::outputs::deserialize_outputsby @plebhash in #1934- Cleanup roles logic sv2 utils by @lucasbalieiro in #1928
- deprecate
mining-device-sv1in favor ofminerdby @plebhash in #1937 - mining-device-sv1 removal from
coverage-roles.shscript by @GitGab19 in #1942 - Make handlers context aware by @Shourya742 in #1939
- Fix CI build failure by pinning generic-array to 0.14.7 by @Shourya742 in #1945
- Refactor Pool by @Shourya742 in #1926
- refine extranonce assumptions by @plebhash in #1944
- Improve crates re-exports by @GitGab19 in #1931
- Save only future template in pool by @Shourya742 in #1949
- deprecate
roles_logic_sv2,benches,error_handling,utils::bip32_derivationby @lucasbalieiro in #1947 - remove deprecated crate from coverage script by @lucasbalieiro in #1957
- remove noisy log when downloading the
minerdbinary by @lucasbalieiro in #1954 - update ITF to use TP
v.0.1.19by @GitGab19 in #1955 - Remove binary codec sv2 by @Shourya742 in #1952
- migrate
mining_sv2::Targettobitcoin::Targetby @icarusmaximal in #1950 - remove unnecessary files by @lucasbalieiro in #1960
- revert unnecessary version bumps by @plebhash in #1959
- Remove unreachable macro and add share validation error variant in Pool by @Shourya742 in #1962
- make roles use
bitcoinfromstratum-apps::stratum-coreby @GitGab19 in #1963 - improve share validation by @plebhash in #1966
- fix how
SubmitShares.Successis being crafted by @plebhash in #1968 - Correct Vardiff insertions by @Shourya742 in #1971
- New stratum-core structure by @lucasbalieiro in #1860
- update code coverage workflow by @lucasbalieiro in #1979
- fix channel_msg bit check in sv2 frame header by @vnprc in #1982
- fix potential arithmetic overflows on definition of
impl_into_encodable_field_for_seqofbinary_sv2by @plebhash in #1985 - refactor: improve fuzz test suite with targeted harnesses by @erickcestari in #1973
- Add message variant for mining handler by @Shourya742 in #1996
- add boundary checks to decodable proc_macro by @lucasbalieiro in #1989
- add github action to run a fuzz regression test by @lucasbalieiro in #1992
- fuzz: fix wrong
clonewhen callingto_bytesby @lucasbalieiro in #1999 - fix outdated Rust Docs for
ShareValidationResultby @plebhash in #2004 - properly mark past jobs as stale on server channels by @plebhash in #2002
- Add support for extensions negotiations,
TLV, andWorker-Specific Hashrate Trackingextension by @GitGab19 in #1983 - Fix version bumps in
derive_codec_sv2+ remove unused dependencies inextensions_sv2by @GitGab19 in #2005 - remove dev-dependencies from
extensions_sv2by @GitGab19 in #2006 - add
extensions_sv2andstratum-coreto semver-check workflow by @GitGab19 in #2007 - fix
stratum-corepath onrelease-libs.yamlby @plebhash in #2009
New Contributors
- @icarusmaximal made their first contribution in #1950
- @vnprc made their first contribution in #1982
- @erickcestari made their first contribution in #1973
Full Changelog: v1.5.0...v1.6.0
v1.5.0
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-translationcrate 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
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_sv2parsers_sv2channels_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
- isolate
channels_sv2andparsers_sv2into standalone crates by @plebhash in #1795 - introduce custom difficulty TP on Integration Tests by @plebhash in #1760
- Fix broken Getting Started link in README by @Cyber-Lord in #1803
- Improve tracing defaults and add download warning log by @lucasbalieiro in #1807
- standardize rewards to pool/solo mining into a single
scriptPubKeyby @lucasbalieiro in #1800 - Rename
config-helperstoconfig_helpers_sv2and remove of unusedroles-logic-sv2by @GitGab19 in #1812 - Update rpc_sv2 version to 1.1.0 in Cargo.toml and Cargo.lock by @GitGab19 in #1815
- ci: add semver checks for config-helpers in workflow by @GitGab19 in #1813
- deprecate
test/scalecrate by @lucasbalieiro in #1809 - bump:
sv1_apiv1.0.1 → v2.0.0 by @GitGab19 in #1820 - add noise stream by @Shourya742 in #1792
- Refactor handler by @Shourya742 in #1806
- Update roles rust edition to 2021 by @lucasbalieiro in #1818
- remove pool and miner tag from
extranonce_prefixby @plebhash in #1824 - run clippy and fmt across codebase by @lucasbalieiro in #1830
- fix overlooked consequences of
SetupConnection.REQUIRES_WORK_SELECTIONby @plebhash in #1826 - allow updating Standard Channel Server state with Extended Job from Group Channel by @plebhash in #1828
- Disambiguate handler method names for client/server message processing by @Shourya742 in #1831
- downgrade
roles_logic_sv2to 4.0.0 by @GitGab19 in #1836 - strip BIP141 from Extended Jobs by @plebhash in #1832
- feat: add stratum-translation library for SV1↔SV2 protocol translation by @GitGab19 in #1833
- Deprecate
sv2-fficrate by @GitGab19 in #1835 - fix sigops calculation for
CoinbaseOutputContraintsby @plebhash in #1838 - feat: add set_chain_tip method to client channels' APIs by @GitGab19 in #1839
- Finishes rust docs for
channel_sv2by @lucasbalieiro in #1817 - Turns
channel_sv2::client::*no_stdcompatible by @lucasbalieiro in #1840 - make
parsers_sv2no_stdcompatible by @lucasbalieiro in #1842 - fix
SetCustomMiningJobedge cases by @plebhash in #1845 channels_sv2adaptations for new JDC by @plebhash in #1846- enforce full allocation of template revenue on
JobFactory::new_coinbase_tx_prefix_and_suffixby @plebhash in #1849 - improve sniffer logging data by @lucasbalieiro in #1855
- fix the divergence of field names in DeclareMiningJob by @lucasbalieiro in #1856
- revert renaming
MAX_EXTRANONCE_LENby @plebhash in #1864 - Fix display trait behavior for
Str0255andB0255by @lucasbalieiro in #1865 - remove unnecessary Cargo.lock and add to .gitignore by @lucasbalieiro in #1868
- fix: remove unwrap in JDS by @GitGab19 in #1879
- chore: Clippy update by @Shourya742 in #1888
- Improve handlers by @Shourya742 in #1886
- Add close channel method to pool by @Shourya742 in #1890
JobStoreas generic by @plebhash in #1884- implements display traits for sv1 messages by @lucasbalieiro in #1891
- Make vardiff pool statically dispatch by @Shourya742 in #1896
- improve pool vardiff error logs by @plebhash in #1900
- Speed up (sv2 native) CPU miner by @Sjors in #1901
- New Job Declarator Client by @Shourya742 in #1843
- fix: correct typo 'Startum' to 'Stratum' in V1 protocol documentation by @BRIGHTON-ASUMANI in #1893
- New Translator Proxy by @GitGab19 in #1791
- cover
handlers_sv2onrelease-libs.yamlby @plebhash in #1908 - deprecate channel_logic and job_creator modules from
roles_logic_sv2crate by @GitGab19 in #1906 - ci(msrv): enforce locked builds in MSRV workflow by @Sjors in #1905
- bump PATCH of
binary_sv2crate by @GitGab19 in #1909 - specify dependencies versions of
stratum_translationcrate by @GitGab19 in #1910 - Fix
stratum-commonv4.0.0 andrpc_sv2v1.1.0 version conflict by @GitGab19 in #1913 - bump PATCH for
codec_sv2+framing_sv2+parsers_sv2+common_messages_sv2by @plebhash in #1912
New Contributors
- @Cyber-Lord made their first contribution in #1803
- @BRIGHTON-ASUMANI made their first contribution in #1893
Full Changelog: v1.4.0...v1.5.0
v1.4.0
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
vardifflogic to make it reusable across roles - Deprecated
mining_proxy_sv2and cleaned uproles_logic_sv2internals - 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:
handlerschannel_logic
it had the following modules removed, namely:
common_propertiesjob_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
- Use same(1.44.1) tokio version across the project by @jbesraa in #1603
- Make
Snifferunblocking and upgrade TP by @jbesraa in #1592 - rust
1.85set in cargo-semver-check workflow by @GitGab19 in #1622 - Reintroduce TProxy-JD integration test by @jbesraa in #1625
- Improve UpdateChannel/SetTarget handling on Pool and tProxy by @GitGab19 in #1620
- Remove unused
urlmodule by @jbesraa in #1636 - Refactor
IsUpstreamandIsMiningUpstreamtraits to simplify generics used inside handlers by @GitGab19 in #1628 - remove github hooks by @Shourya742 in #1645
- Change
SUBMIT_SOLUTION_JDtoPUSH_SOLUTIONby @jbesraa in #1629 - Renaming of
translator configandmining proxy configby @Sansh2356 in #1639 - JDS documentation improvements by @GitGab19 in #1640
- Move constants to
stratum-commonby @jbesraa in #1642 - #1629 followup by @jbesraa in #1646
- Remove
SetCustomMiningJob::extranonce_sizeby @jbesraa in #1651 - Upgrade
corepcto0.7.0by @jbesraa in #1663 - remove dockerfile from tproxy by @Shourya742 in #1656
- Change async mining terminology by @jbesraa in #1654
- Document pub code in pool by @Shourya742 in #1542
- Add translator docs by @Shourya742 in #1658
- Remove short transaction ids by @jbesraa in #1650
- SV2 Constants Cleanup by @jbesraa in #1667
- add jdc doc by @Shourya742 in #1614
sv1_api: Setup framework to test IsServer by @pool2win in #1668- Combine
Snifferintegration tests by @jbesraa in #1662 - remove run.sh from jd-client by @Shourya742 in #1711
- Add
MockDownstreamby @jbesraa in #1671 - remove special library naming in roles by @Shourya742 in #1709
- using Box for large variants in v1 crate by @Shourya742 in #1716
- remove redundant map_err's in translators by @Shourya742 in #1712
- Add
MockUpstreammodule by @jbesraa in #1715 - Refactor and unification of
CoinbaseOutputtype by @apoelstra in #1719 - introduce simplified APIs for channel and job logic (server side) by @plebhash in #1672
- fix integration tests lockfile by @plebhash in #1721
- stop excluding
config-helpersfromrolesworkspace by @plebhash in #1723 - separate vardiff module by @Shourya742 in #1714
- introduce simplified APIs for channel and job logic (client side) by @plebhash in #1724
- realocate constants to their specific crates by @plebhash in #1728
- add verification on
roles_logic_sv2::channels::*::standard::StandardChannel::set_extranonce_prefixby @plebhash in #1730 - migrate Pool to new
channelsmodule ofroles_logic_sv2by @plebhash in #1718 - Add vardiff test framework by @Shourya742 in #1729
- Refactor CLI argument parsing with
clapby @lucasbalieiro in #1739 - fix group channel handling on pool by @plebhash in #1748
- Update vardiff by @Shourya742 in #1747
- fix unnecessary version bumps by @plebhash in #1749
- add support for Custom Jobs on
channels::serverAPIs by @plebhash in #1741 - Simplify network helpers by @Shourya742 in #1750
- add
get_chain_tipto client channels by @plebhash in #1756 - add
get_share_accountingto client channels by @plebhash in #1757 - update imports in
rolesandteststo reflect library reorganization by @lucasbalieiro in #1744 - Add vardiff to pool by @Shourya742 in #1737
- run Integration Tests via
cargo nextestby @plebhash in #1758 - remove
SetCustomMiningJob.coinbase_tx_value_remainingby @plebhash in #1745 - remove redudant fields from
AllocateMiningJobToken.Successby @plebhash in #1759 - cover crate examples on CI by @plebhash in #1754
- Refactor network helpers pass 2 by @Shourya742 in #1764
- Correct Coinbase Output Length Calculation in
PoolRole Implementation by @lucasbalieiro in #1761 - Handle overlflow in u256 by @GitGab19 in #1752
- run clippy on the entire codebase by @lucasbalieiro in #1769
- change coverage workflows to run only when commits are pushed to main by @lucasbalieiro in #1767
- fix coinbase deserialization by @plebhash in #1772
- decouple job state from channels with JobStore by @coleFD in #1779
- Update readme logos by @pavlenex in #1784
- Refactor sv1 connection by @Shourya742 in #1782
- add check on coinbase output script pubkey for custom job on Pool by @plebhash in #1775
- Implements Display for messages across the codebase by @lucasbalieiro in #1755
- add static lifetime converters to
roles_logic_sv2::parsersmodule by @plebhash in #1790 - fix unnecessary creation of group channels on pool by @plebhash in #1788
- re-introduce dedicated function to deserialize outputs from
NewTemplatemessage by @plebhash in #1777 - deprecate
mining_proxy_sv2and related modules ofroles_logic_sv2by @plebhash in #1765 - use cursor in deserialize_template_outputs by @Shourya742 in #1794
- Implements roles functionality to write logs t...
v1.3.0
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:
handlersjob_creatorjob_dispatcherchannel_logic
it had the following modules removed:
routersselectors
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
- Test Pool role behavior if bad
coinbase_outputis provided by @jbesraa in #1306 - Integration tests cleanup by @jbesraa in #1297
- Propose an implementation of
noise_sv2with optionalno_stdby @Georges760 in #1238 - fix jdc sigterm signalling issue by @Shourya742 in #1321
- fix sigterm issue with translator sv2 by @Shourya742 in #1319
- docs
roles_logic_sv2by @plebhash in #1263 Sniffermessages cleaner by @jbesraa in #1341- Handle
cargo buildwarnings by @jbesraa in #1337 codec_sv2with optionalno_stdby @Georges760 in #1346- add vinteum to README by @plebhash in #1361
InterceptMessagecleanup by @plebhash in #1339- Remove benches execution from CI by @GitGab19 in #1357
- Integration tests avoid tmp dir by @plebhash in #1359
- remove MG
standard-coverage-testby @plebhash in #1363 integration_tests_sv2docs cleanup by @plebhash in #1340- Remove
replacement_mesage_typeby @jbesraa in #1367 - Allow backtrace print to stdout in integration tests by @jbesraa in #1382
- Add retry logic to ensure the pool waits and connect to TP by @Shourya742 in #1378
- Handle unwrap when shutting down JDC server by @jbesraa in #1352
- replace bitcoind with corpc-node crate by @Shourya742 in #1386
- avoid running workflows AFTER merging PRs by @plebhash in #1373
- retry mechanism addition to download bitcoind tarball by @GitGab19 in #1393
- cleanup
template-provider-testcrate fromexamplesby @plebhash in #1403 - remove benches workflow from CI by @GitGab19 in #1391
- disable codecov github checks annotation by @Shourya742 in #1400
- simplify
[package.metadata.docs.rs]on remaining crates by @plebhash in #1364 - add CI for Rust Docs by @plebhash in #1313
- guix cleanup by @plebhash in #1405
- cleanup
sv2-proxyexample by @plebhash in #1406 - Braiins/cross testing by @jakubtrnka in #1396
- Refactor ping pong example by @plebhash in #977
- point MG crate to crate.io, than using protocol relative path by @Shourya742 in #1422
- Refactor ping pong encrypted example by @plebhash in #1007
- Sniffer fixes by @jbesraa in #1401
- move Sv1 example to crate by @plebhash in #1404
- Add jds-do-not-fail-on-jdc-shutdown integration test by @Shourya742 in #1360
- remove shutdown notification from downstream disconnect by @Shourya742 in #1427
- remove async std from translator by @Shourya742 in #1424
- remove async-std from mining-device-sv1 by @Shourya742 in #1423
- Protocols v2 no_std support by @Georges760 in #1394
- cleanup
async_stdfromnetwork_helpers_sv2by @plebhash in #1433 - remove with_serde from roles by @Shourya742 in #1454
- remove serde feature from protocol crate by @Shourya742 in #1455
- remove binary sv2 serde by @Shourya742 in #1459
key-utils: make it no_std with astddefault feature by @Georges760 in #1398- Add
tracing-subscriberto itf by @jbesraa in #1430 TemplateProvidercleanup by @jbesraa in #1369- Add TemplateProvider::rpc_info by @jbesraa in #1429
- Remove reject auth test from MG and its footprint by @jbesraa in #1482
- Rename
pool_signaturefield ofchannel_factoryintoadditional_coinbase_script_data, and change the type fromStringtoVec<u8>by @plebhash in #1442 - update action checkout version semver by @Shourya742 in #1494
- sv1 mining device tweaks by @jbesraa in #1485
- Bump
rust-bitcointov0.32.5by @GitGab19 in #1487 - update
common/Cargo.lockby @plebhash in #1509 - remove assumption that coinbase scriptSig prefix contains only BIP34 by @plebhash in #1461
- Fix binary sv2 proc macro by @Shourya742 in #1502
- additional check on
template_idbefore updatinglast_set_new_prev_hashon JDC by @GitGab19 in #1512 poolconfig struct changes by @jbesraa in #1493- Test JDC connection with TP by @jbesraa in #1508
- remove env-filter by @Shourya742 in #1499
- run MG tests from new repo by @plebhash in #1428
- Test Translator, JD and miner setup by @jbesraa in #1354
- Upgrade actions in ci by @jbesraa in #1520
PoolMessagesremoval in favor of genericAnyMessageby @GitGab19 in #1521- Add sv2 mining device to itf by @jbesraa in #1526
- Use stable rust in
clippycheck and move to a shell script by @jbesraa in #1492 - Split tests by @jbesraa in #1529
- Prevent TP from immediately failing by @jbesraa in #1527
- Restructure JD configs by @jbesraa in #1507
- fix JDC listening address on example config files by @plebhash in #1536
- refactor: update dependencies for bip32 key derivation util by @average-gary in #1528
prev_hashaddition inLastDeclareJobto av...
v1.2.1
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]onprotocolscrates by @plebhash in #1318 - Fix timestamp bug -
min_ntimebecomes always the one sent by TP by @GitGab19 in #1325
Full Changelog: v1.2.0...v1.2.1
v1.2.0
General release information
This release adds new Rust Docs for the following crates:
buffer_sv2binary_sv2framing_sv2template_distribution_sv2mining_sv2job_declaration_sv2common_messages_sv2binary_sv2binary_codec_sv2derive_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_sv2framing_sv2template_distribution_sv2mining_sv2job_declaration_sv2common_messages_sv2binary_sv2binary_codec_sv2derive_codec_sv2serde_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
- bump crates versions for docs on release v1.1.0 by @plebhash in #1222
- Dont provie TP pubkey in test env by @jbesraa in #1225
- const_sv2: remove unused dep (secp256k1) by @Georges760 in #1237
- Fix ambiguous naming on Integration Tests Sniffer API (
next_upstream_messagevsnext_downstream_message) by @plebhash in #1236 - Update Bencher CLI usage by @epompeii in #1241
- update rustfmt.toml by @Shourya742 in #1246
- Fix missing transaction in light mempool bug by @Shourya742 in #1239
- enforce
no_stdfor some protocol/v2 crates by @Georges760 in #1230 - Update CI benchmarks workflows by @GitGab19 in #1255
- Add JDC/S initializers in integration tests by @jbesraa in #1226
- Add
tproxyinitializer for Integration Tests by @jbesraa in #1254 SnifferImprovements by @jbesraa in #1258sv1-mining-devicelib by @jbesraa in #1249- Allow altering messages exchanged by roles in test env by @jbesraa in #1228
tp_authority_public_keyupdate in pool & jdc configs by @GitGab19 in #1277- lock version for cargo semver-checks by @plebhash in #1276
common_messages_sv2docs by @jbesraa in #1242- Job Declaration Documentation by @jbesraa in #1265
- Docs for Template Distribution Messages by @jbesraa in #1257
- doc binary-sv2 by @Shourya742 in #1231
- Minor warning and error grammar and typo fixes by @pavlenex in #1281
- Utils buffer sv2 docs by @rrybarczyk in #1232
Sniffer::wait_for_message_typeby @plebhash in #1284- fix unwrap on
sv1-mining-devicetcp connection by @plebhash in #1289 - remove redundant
Dropimplementation from ITFTemplateProviderby @plebhash in #1291 - Duplicate tproxy MG test in integration tests by @jbesraa in #1262
- add unix specific execution permission to tp binary executable by @Shourya742 in #1293
- disable MG tproxy CI by @plebhash in #1298
- Have JDS ping local mempool less frequently by @Sjors in #1299
mining_sv2docs by @jbesraa in #1243sv2-mining-proxylib by @jbesraa in #1252- use
cargo semver-checksv0.37 and bump crate versions as a follow-up to #1276 by @plebhash in #1300 - change macos-14 to macos-13 by @Shourya742 in #1304
- bump
buffer_sv2patch by @plebhash in #1302 - bump
derive_codec_sv2as a consequence of Rust Docs by @plebhash in #1303 framing-sv2doc cmts to conform to standard by @rrybarczyk in #1179- add codecov.yml to remove ci error by @Shourya742 in #1308
- feat: update println! and eprintln! to info using tracing cargo. by @devworlds in #1309
- Bump TP to 0.1.13 for CI by @Sjors in #1310
subprotocolcratesno_stdsupport by @Georges760 in #1315
New Contributors
- @Georges760 made their first contribution in #1237
- @epompeii made their first contribution in #1241
- @devworlds made their first contribution in #1309
Full Changelog: v1.1.0...v1.2.0