Releases: stratum-mining/sv2-apps
v0.3.4
This is a PATCH release.
After v0.3.1 we started a group of early testers. This release is fixing issues reported by them.
What's Changed
- add
descriptionfield tointegration_tests_sv2Cargo.tomlby @plebhash in #413 - chore(deps): update stratum-core to ab5b17f by @SV2-bot in #414
- Make sure JDC and Pool shuts on no bitcoin conn by @Shourya742 in #420
- JDC exits immediately if
node.sockis not available (no retry) by @plebhash in #422 - Make sure to use display for types which implements it in Tproxy by @Shourya742 in #421
- Remove broadcast channel by @Shourya742 in #317
- update/fix
ServerStandardChannelInfoshare accounting by @plebhash in #425 - Remove status main loop from Pool by @Shourya742 in #426
- version bumps for v0.3.4 by @plebhash in #429
Full Changelog: v0.3.3...v0.3.4
v0.3.3
This is a PATCH release.
After v0.3.1 we started a group of early testers. This release is fixing issues reported by them.
What's Changed
- remove
high_diff_chainfrom workspace and make it downloadable by @lucasbalieiro in #401 - (Tproxy): add hotpath to sv1 server impl by @Shourya742 in #405
- Remove no-op retain from handle set custom mining job success by @Shourya742 in #406
- reintroduce
mining_devicebin by @plebhash in #408 - add config option to start JDC in solo mining mode by @xyephy in #398
- bump
jd_client_sv2; updateintegration_tests_sv2dependency versions by @plebhash in #411 - Aggregate monitoring data for internal extended channels in tproxy in aggregated mode by @Shourya742 in #410
Full Changelog: v0.3.2...v0.3.3
v0.3.2
This is a PATCH release.
After v0.3.1 we started a group of early testers. This release is fixing issues reported by them.
What's Changed
- Add panic hook to pass panic and backtrace as a tracing event by @Shourya742 in #393
- Fix translator handshake flow by @Shourya742 in #387
- Truncate user_identity to 32 bytes. by @Shourya742 in #395
- JDC doesn't fallback if
SetCustomMiningJob.Error.error_code == stale-chain-tipby @plebhash in #385
Full Changelog: v0.3.1...v0.3.2
v0.3.1
General release information
This is a PATCH release.
After v0.3.0 we noticed some race conditions on JD message flow (see #364) arising from the JDS refactor carried via #299
These race conditions arise due to the current bitcoin_core_sv2::job_declaration_protocol design, which relies on a MempoolMirror (which is arguably suboptimal).
This was addressed via #365 + #372 + #375. On the long term (ideally Bitcoin Core v32), we expect bitcoin/bitcoin#34020 to allow us to simplify bitcoin_core_sv2 design, reducing the need for all the workarounds on the suboptimal MempoolMirror design.
Moreover, #375 also addressed a small bug on jd_server_sv2::job_declarator::token_management::TokenManager (via 7b1d763).
What's Changed
- Remove one keyword in tProxy
Cargo.tomlby @GitGab19 in #348 - Add solution subdirectory to solution_block_dir by @Shourya742 in #350
- remove verbose debug log from
bitcoin_core_sv2::job_declaration_protocolby @plebhash in #361 - JDC asks for token when none is available for
RequestTransactionData.Successhandler by @plebhash in #363 - update hotpath and increase UI limit to max by @Shourya742 in #357
- Adapt tproxy
user_identitymanipulation to SRI pool patterns by @GitGab19 in #370 - fix JD chain tip race by @plebhash in #365
- ci: replace stratum freshness check with event-driven stratum-core sync by @plebhash in #353
- refine how JDS handles downstream disconnections by @plebhash in #352
- refine JD race patch by @plebhash in #372
- make
mining_deviceinto submodule ofintegration_tests_sv2crate by @plebhash in #355 - chore(deps): update stratum-core to 47b9f92 by @SV2-bot in #374
- further refine JD race patch + refine TokenManager by @plebhash in #375
Full Changelog: v0.3.0...v0.3.1
v0.3.0
General release information
Highlights of this release:
- added solo mining mode to
pool_sv2, allowing payout routing directly fromuser_identitypatterns - major refactor of
jd-server(JDS), together with multiplejd_client_sv2improvements around configurable JD mode, token allocation - expanded and hardened
translator_sv2/ tProxy with a newtproxymode, better concurrent channel handling, more robust no-upstream behavior, and improved hashrate reporting - improved operational tooling across the apps with shutdown APIs, broader
monitoringfeature support, a betterglobalendpoint, and newblocks_foundPrometheus metrics - hardened monitoring with fixes for snapshot-cache DoS risk, redundant metrics removal, and cleaner behavior when vardiff is disabled
- upstream connections now support hostname resolution with timeouts, and the Docker setup now relies on Docker DNS instead of static IPs
- improved protocol correctness and shutdown flow across
pool_sv2,jd_client_sv2, andtranslator_sv2, including share acceptance on upstream acknowledgement and cancellation-token-based shutdown coordination - expanded test and release coverage with new monitoring/integration tests, a dedicated
tests.yamlworkflow,stratum-corefreshness checks, and improved publishing of app crates
What's Changed
- Get
bitcoin-capnp-typesfrom crates.io and publish apps on release by @GitGab19 in #208 - Remove check alive check from spawn job keepalive loop method by @Shourya742 in #213
- Add btrust logo to readme by @pavlenex in #218
- (Tproxy): log on no upstream channel instead of shutdown by @Shourya742 in #217
- add
SHUTDOWN_BROADCAST_CAPACITYconstant by @plebhash in #214 - Initialize downstream channel with eventual
future_jobsin AGGREGATED mode by @GitGab19 in #231 - Add tproxy mode by @Shourya742 in #229
- Add machete to CI by @Shourya742 in #233
- Add clean_queue method to Sniffer by @xyephy in #226
- fix(channels): Update channel nominal hashrate from downstream vardiff estimate by @gimballock in #245
- Migrate tproxy to dashmap by @Shourya742 in #228
- remove channel from extended channels in
ChannelManagerafter it receives aCloseChannelfrom the Sv1Server by @GitGab19 in #244 - remove
upstream_extended_channelfrom tProxy's ChannelManager and useAGGREGATED_CHANNEL_IDby @GitGab19 in #246 - add
.dockerignoreby @lucasbalieiro in #250 - fix
shares_submittedtracking in server monitoring for tProxy and JDC by @GitGab19 in #254 - fix(monitoring): remove redundant sv2_client_channel_shares_per_minute metric by @gimballock in #252
- Move test suite to tests.yaml workflow (Fixes #235) by @therohityadav in #251
- Add implicit SetupConnection handling to MockDownstream and MockUpstream by @xyephy in #191
- update
downstream_channel_id_and_job_id_to_template_idmappings inhandle_new_templateby @GitGab19 in #259 - fix(monitoring): Eliminate DoS vulnerability via snapshot cache by @gimballock in #193
- Fix: JDC sends bad SetupConnection.Success.flags (#266) by @therohityadav in #270
- fix(monitoring): make nominal_hashrate Optional and omit metrics when vardiff disabled by @gimballock in #263
- replace
tokio::sync::broadcastas the main shutdown notification system by @plebhash in #225 - improve
global/API endpoint by @GitGab19 in #277 - JDC + tProxy defer
channels_sv2::clientshare acceptance to upstream acknowledgement by @plebhash in #283 - feat(monitoring): expose blocks_found metric via Prometheus by @gimballock in #278
- fix JDC extranonce ranges by @plebhash in #284
- fix(pool): set correct SetupConnection.Success.flags instead of echoing client flags by @average-gary in #296
- fix(tproxy): report SV1 downstream hashrate when vardiff is disabled by @gimballock in #291
- Make the server not hang the application when the handshake is incomplete. by @Shourya742 in #290
- Set JD Mode from config by @Shourya742 in #180
- add retry police to the integration test
pool_does_not_hang_on_no_handshakeby @lucasbalieiro in #306 - add
monitoringfeature to jd-client, translator, and pool by @GitGab19 in #307 - remove time sensitive assertion from
snapshot_cache::tests::test_snapshot_refreshby @lucasbalieiro in #302 - Cache shares JDC by @Shourya742 in #174
- feat: add hostname resolution for upstream connections by @average-gary in #286
- make the docker setup rely on docker DNS instead of using static IPs by @lucasbalieiro in #316
- fix(config): make server_id, supported_extensions, required_extensions optional by @average-gary in #294
- Add shutdown apis to apps by @Shourya742 in #315
- improve JDC token allocation by @plebhash in #314
- sniffer: add assert_message_not_present_for for reliable negative assertions by @xyephy in #253
- Make concurrent Open channel request handling in Tproxy better by @Shourya742 in #312
- add stratum-freshness job to lockfiles workflow by @GitGab19 in #327
- JDC
start_downstream_serverbreaks loop on fallback by @plebhash in #334 - Add unit and integration tests for monitoring module by @gimballock in #281
- refresh
stratum-corelockfiles by @plebhash in #339 - add solo mining mode to the pool app by @lucasbalieiro in #321
- refresh stratum-core lockfiles by @Shourya742 in #341
- JDS refactor by @plebhash in #299
- re-enable publishing of JDS after refactor by @plebhash in #344
- client share accounting refinement by @plebhash in #328
- Install capnp in
release-appsworkflow and remove jd-server frombinary-releaseworkflow by @GitGab19 in #346 - Fix versions by @GitGab19 in #347
- Remove one keyword in tProxy
Cargo.tomlby @GitGab19 in #348
New Contributors
- @pavlenex made their first contribution in #218
- @gimballock made their first contribution in #245
- @therohityadav made their first contribution in #251
- @average-gary made their first contribution in #296
Full Changelog: v0.2.0...v0.3.0
v0.2.0
General release information
Highlights of this release:
- updated
pool_sv2,jd_client_sv2andtranslator_sv2to 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
- now
pool_sv2andjd_client_sv2always treat every Extended Channel as part of the same Group Channel, under some given connection - now
translator_sv2can deal with Sv2 messages addressed to a Group Channel
bitcoin_core_sv2now supports Bitcoin Corev30.2- added HTTP monitoring APIs to
pool_sv2,jd_client_sv2andtranslator_sv2(along with support for Swagger UI and OpenAPI schemas) - added
hotpathtopool_sv2,jd_client_sv2andtranslator_sv2to enable performance monitoring translator_sv2now optionally sends Sv1 "keepalive" job (incrementing timestamps), whenever there's a long period of time without Sv2 jobs- improved UI/UX of
pool_sv2andjd_client_sv2with regards to UNIX path of Bitcoin Core - general improvements on
pool_sv2,jd_client_sv2andtranslator_sv2 - added new Integration Tests, expanding coverage
- started publishing
stratum-appstocrates.io
What's Changed
- add issue template for docker and binary problems by @lucasbalieiro in #103
- Add mainnet config examples by @GitGab19 in #112
- warn users in apps README about the need for accurate system clock by @lucasbalieiro in #111
- change Pool, JDS, and TP ports on testnet4 by @GitGab19 in #114
- impl Display trait for
network_helpers::errorby @lucasbalieiro in #116 - update
binary-release.yamlto have just one config file per binary by @lucasbalieiro in #123 - add
signetvariants toconfig-examplesby @plebhash in #127 - make
bitcoin_core_sv2andstratum-appsgetstratum-corefrom github by @lucasbalieiro in #133 - adapt Pool and JDC to
channels_sv2changes from stratum-mining/stratum#2011 by @plebhash in #122 - Fix Pool sending
NewExtendedMiningJobmessages to JDC by @GitGab19 in #131 - rename
DeclareMiningJob.tx_ids_listtowtxid_listby @plebhash in #134 - Add integration tests for BitcoinCoreIpc template provider by @xyephy in #106
- JDC sends
CoinbaseOutputConstraintsonconnect_to_bitcoin_coreby @plebhash in #117 - Remove unwrap or in JDC by @Shourya742 in #153
- Adapt to new sv1 handler by @Shourya742 in #160
- update Bitcoin Core v30 download URL after upstream security change by @lucasbalieiro in #166
- add
rust-analyzertorust-toolchain.tomlby @plebhash in #167 - refactor
integration_tests_sv2::{MockDownstream, MockUpstream}by @plebhash in #154 - Role Profiler by @Shourya742 in #159
- Add keealive mechanism to Sv1Server in tProxy by @GitGab19 in #138
- Add hotpath patch by @Shourya742 in #171
- fix
hotpathpanic oncoverageCI by @plebhash in #172 - ci: validate docker config templates against toml examples by @lucasbalieiro in #163
- update template provider downloaded by the integration tests by @lucasbalieiro in #176
- Add contextual error by @Shourya742 in #132
- Add auto-detection of node.sock location for Bitcoin Core IPC by @xyephy in #128
- Monitoring module to expose channels' data through HTTP APIs by @GitGab19 in #129
bitcoin_core_sv2leverages newinterruptWaitIPC call by @plebhash in #177- Reject non mining protocol SetupConnection message in Pool by @Shourya742 in #173
- add shell-style path expansion for config paths by @lucasbalieiro in #184
- allow
SV1Sniffermsg content assertion by @jbesraa in #190 - Add retry loop for Sniffer upstream connection by @xyephy in #192
- automate publishing
sv2-appscrates tocrates.ioby @plebhash in #194 - add Group Channel adaptations on apps by @plebhash in #156
- Remove circular dependency on Sv1Server and downstream in tproxy by @Shourya742 in #162
- release
v0.2.0by @plebhash in #199 - make
scripts/release-apps.yamlexecutable by @plebhash in #201
Full Changelog: v0.1.0...v0.2.0
v0.1.0
General release information
Highlights of this release:
This is the first release of the new sv2-apps repository, which will carry SV2 application (a.k.a. "roles") crates. SV2 library crates will remain under stratum-mining/stratum.
- added native Bitcoin Core v30 support via the
bitcoin_core_sv2crate, integrated into JDC and Pool - added Docker support for SV2 Apps to simplify cross-platform deployment
- precompiled binaries for all major platforms
What's Changed
- remove channels from
vardiffonce channel is dropped by @lucasbalieiro in #45 - Remove Plain connection from network helpers by @Shourya742 in #49
- make Pool's
CLIENT_SEARCH_SPACE_BYTESmore permissive by @plebhash in #47 - Replace frames with messages in internal message flow in jdc by @Shourya742 in #53
- add workflow to build binaries when a new release is created by @lucasbalieiro in #52
- update workflows that uses unmaintained actions by @lucasbalieiro in #68
- JDC and JDS listen on
0.0.0.0instead of127.0.0.1by @plebhash in #67 - remove sv1 feature macro from
test_basic_sv1()by @GitGab19 in #70 - Replace Frame with message in translator by @Shourya742 in #54
- Adapt JDC to new handlers_sv2 API by @Shourya742 in #51
- Add Bitcoin Core v30 + standalone sv2-tp in integration tests by @xyephy in #61
- Remove unwanted error variants in JDC by @Shourya742 in #74
- Run clippy workflow with rust v1.85 + add
rust-toolchain.tomlby @GitGab19 in #79 - Improve task spawning translator by @Shourya742 in #77
- update rust-miniscript to 13.0.0 by @apoelstra in #56
- Refactor role utils by @Shourya742 in #73
- Add request_id to downstream_id mapping in translator by @Shourya742 in #76
- Tproxy fallback on SetupConnection.Error and OpenMiningMessage.Error by @Shourya742 in #84
- Implement
Extensions NegotiationandWorker Specific Hashrate Trackingin applications by @GitGab19 in #65 - Publish
integration_tests_sv2by @jbesraa in #94 - fix
publish-apps.shby @plebhash in #95 - get
stratum-corefrom crates.io by @GitGab19 in #96 - Bitcoin Core IPC by @plebhash in #59
- add
capnpinstallation tocoverage.yamlby @plebhash in #98 - remove
sudofromcoverage.yamlby @plebhash in #99 - partially reverts
49550d7by @plebhash in #100 - add workflow to build docker images and bootstrap docker setup by @lucasbalieiro in #85
New Contributors
- @lucasbalieiro made their first contribution in #45
- @Shourya742 made their first contribution in #49
- @plebhash made their first contribution in #47
- @GitGab19 made their first contribution in #70
- @xyephy made their first contribution in #61
- @apoelstra made their first contribution in #56
- @jbesraa made their first contribution in #94
Full Changelog: https://github.com/stratum-mining/sv2-apps/commits/v0.1.0