Issue Details

Number
31098
Title
Stratum v2 via IPC Mining Interface tracking issue
Description
After much discussion in https://github.com/bitcoin/bitcoin/pull/29432 it appears there's currently little support for directly supporting Stratum v2 in Bitcoin Core, with most contributors favouring the creation of a Mining IPC interface that external applications can use. The only such application currently is the Template Provider implemented by me in https://github.com/Sjors/bitcoin/pull/48. This also serves to illustrate how the interface is used and that it's complete. The folks working on SRI should be able to build a Template Provider as well, once the interface is complete and shipped in a release. ### Needed for (hopefully) v29 / v30 To complete the interface: - [x] #31318 - [ ] #31283 (replaces #31003) - [x] #31325 - [x] #31581 - [ ] #31785 - [x] #31346 - [x] #31196 - [x] #31197 - [x] #31288 - [x] https://github.com/chaincodelabs/libmultiprocess/issues/122 (not used by Stratum v2) For multiprocess release binaries - [x] #31763 (pending "officially" shipping `bitcoin-node`) - [ ] #31375 - To resolve #30983 - [ ] #31741 - [ ] #30975 - [x] https://github.com/chaincodelabs/libmultiprocess/pull/119 - [x] https://github.com/chaincodelabs/libmultiprocess/issues/117 - [x] #31455 - [x] #31151 - [ ] https://github.com/chaincodelabs/libmultiprocess/issues/123 - [x] https://github.com/chaincodelabs/libmultiprocess/issues/128 Libmultiprocess bugfixes - [x] https://github.com/chaincodelabs/libmultiprocess/pull/120 - [x] https://github.com/chaincodelabs/libmultiprocess/pull/121 - [x] https://github.com/chaincodelabs/libmultiprocess/pull/127 ### Can wait for later releases - [x] #31827 - [ ] Windows support - [ ] https://github.com/chaincodelabs/libmultiprocess/issues/114 - [ ] add `bitcoin-node.exe` etc to Windows build - [ ] add `bitcoin.exe` to Windows build (e.g. 26d3a069f94e2cabcc8d1f73fd2cfa3e7c320497) - [ ] https://github.com/bitcoin/bitcoin/pull/30437 - [x] #31002 DATUM developers are currently uninterested in taking advantage of the more performant interface, preferring to use the `getblocktemplate` RPC instead, despite an earlier concept ACK on Stratum v2 support https://github.com/bitcoin/bitcoin/pull/27854#issuecomment-1605237375. - new interface methods: - `createFutureBlock()` for faster work switching, see #31109 - `waitNewPowBlock()` for SPV mining, see #31109 - `verifyBlock(CBlock block, bool allow_rollback, bool check_pow, uint256 target)` * for Stratum v2 pools to verify a proposed block, ignoring PoW * can also be used to verify weak blocks in P2pool like systems * can use the mempool to accelerate validation, but doesn't update it * (maybe) can optionally roll back, to inspect older templates ### Current Template Provider users As a stop-gap measure I plan to maintain https://github.com/Sjors/bitcoin/pull/68 which is a continuation of https://github.com/bitcoin/bitcoin/pull/29432, since people are currently using that. Once the Mining interface makes it into a release, along with multiprocess enabled Guix binaries, I plan to drop that in favour of https://github.com/Sjors/bitcoin/pull/48. Additionally I plan to convert the latter from a patch set on top of Bitcoin Core into a standalone application, to make it easier for others to contribute. That should make it less dependent on my own effort. The Bitcoin Core project could decide in the future to "adopt" this project, but that is entirely uncertain and most contributors seems averse to this idea.
URL
https://github.com/bitcoin/bitcoin/issue/31098
Closed by
Back to List