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 uproles_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
PR List
- Use same(1.44.1) tokio version across the project by @jbesraa in #1603
- Make
Sniffer
unblocking and upgrade TP by @jbesraa in #1592 - rust
1.85
set 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
url
module by @jbesraa in #1636 - Refactor
IsUpstream
andIsMiningUpstream
traits to simplify generics used inside handlers by @GitGab19 in #1628 - remove github hooks by @Shourya742 in #1645
- Change
SUBMIT_SOLUTION_JD
toPUSH_SOLUTION
by @jbesraa in #1629 - Renaming of
translator config
andmining proxy config
by @Sansh2356 in #1639 - JDS documentation improvements by @GitGab19 in #1640
- Move constants to
stratum-common
by @jbesraa in #1642 - #1629 followup by @jbesraa in #1646
- Remove
SetCustomMiningJob::extranonce_size
by @jbesraa in #1651 - Upgrade
corepc
to0.7.0
by @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
Sniffer
integration tests by @jbesraa in #1662 - remove run.sh from jd-client by @Shourya742 in #1711
- Add
MockDownstream
by @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
MockUpstream
module by @jbesraa in #1715 - Refactor and unification of
CoinbaseOutput
type 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-helpers
fromroles
workspace 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_prefix
by @plebhash in #1730 - migrate Pool to new
channels
module ofroles_logic_sv2
by @plebhash in #1718 - Add vardiff test framework by @Shourya742 in #1729
- Refactor CLI argument parsing with
clap
by @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::server
APIs by @plebhash in #1741 - Simplify network helpers by @Shourya742 in #1750
- add
get_chain_tip
to client channels by @plebhash in #1756 - add
get_share_accounting
to client channels by @plebhash in #1757 - update imports in
roles
andtests
to reflect library reorganization by @lucasbalieiro in #1744 - Add vardiff to pool by @Shourya742 in #1737
- run Integration Tests via
cargo nextest
by @plebhash in #1758 - remove
SetCustomMiningJob.coinbase_tx_value_remaining
by @plebhash in #1745 - remove redudant fields from
AllocateMiningJobToken.Success
by @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
Pool
Role 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::parsers
module by @plebhash in #1790 - fix unnecessary creation of group channels on pool by @plebhash in #1788
- re-introduce dedicated function to deserialize outputs from
NewTemplate
message by @plebhash in #1777 - deprecate
mining_proxy_sv2
and related modules ofroles_logic_sv2
by @plebhash in #1765 - use cursor in deserialize_template_outputs by @Shourya742 in #1794
- Implements roles functionality to write logs to file and set log level by @lucasbalieiro in #1785
- Fix unnecessary version bumps done by mistake by @GitGab19 in #1796
- Allow specifying descriptors (including
raw
andaddr
) as coinbase outputs by @apoelstra in #1720
New Contributors
- @Sansh2356 made their first contribution in #1639
- @pool2win made their first contribution in #1668
- @apoelstra made their first contribution in #1719
- @lucasbalieiro made their first contribution in #1739
Full Changelog: v1.3.0...v1.4.0