-
Notifications
You must be signed in to change notification settings - Fork 10
Stratum v2 Template Provider via IPC interface (multiprocess) #48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 2024/07/sv2-tp-common
Are you sure you want to change the base?
Conversation
@ryanofsky I slightly mangled e373642 because of bitcoin@4e1a434#r1681193702. I'll clean that up later. |
Incorporated the changes from bitcoin#30437 (comment) and cleaned up commit history. |
@ryanofsky do you have a commit somewhere that adds libmultiprocess to the guix build? |
c75792b
to
91720b7
Compare
Getting a cryptic Somehow related to the Template Provider depending on I can't make sense of the |
db58076
to
1ff4660
Compare
4354e96
to
3aa6f0a
Compare
1ff4660
to
ee010f5
Compare
re: #48 (comment)
I don't, since I haven't really experimented with the guix build. Maybe simplest approach to start with would enable the multiprocess build option and build and package all the multiprocess executables including bitcoin-tp and bitcoin-node. I know in the longer run you want to have separate releases as described in bitcoin#30437 (comment). re: #48 (comment)
This is a -bitcoin_mine_CPPFLAGS = $(bitcoin_bin_cppflags)
+bitcoin_mine_CPPFLAGS = $(bitcoin_bin_cppflags) $(BOOST_CPPFLAGS) to add the right -isystem option.
Not sure about this error. Link seems to be https://cirrus-ci.com/task/4759864851824640?logs=ci#L2486 |
19cc9f1
to
dabc32c
Compare
6c24b45
to
a8bb152
Compare
I'm getting the MSAN / TSAN error inconsistently on my self-hosted CI. Does not seem related to this PR. Trying to reproduce in isolation in #51. |
New IPC release: https://github.com/Sjors/bitcoin/releases/tag/sv2-tp-0.1.14-ipc |
fe053b0
to
5c3f9cb
Compare
5c3f9cb
to
802ffdc
Compare
Allows InitError and InitWarning to be used by other executables beside bitcoind and bitcoin-node.
See src/bitcoin-mine.cpp for usage information. Co-authored-by: Sjors Provoost <[email protected]>
Co-authored-by: Sjors Provoost <[email protected]>
802ffdc
to
6a29c1d
Compare
6a29c1d
to
b2f6576
Compare
Except for Windows and OpenBSD.
The bitcoin-node binary is built on all platforms which have multiprocess enabled, but for functional tests it's only used in CentOS native (depends) job. The next commit will also add a non-depends job.
Install capnp on non-depends CI jobs. Use the bitcoin-node binary in the macOS native non-depends job. Co-authored-by: Ryan Ofsky <[email protected]>
b2f6576
to
134d8b3
Compare
For now also build bitcoin-node.
The Template Provider binary: * won't have a wallet * probably won't have a gui * doesn't use the functional test framework Disable some CI stuff to speed it up. This is not a complete list, because: 1. That would be too hard to rebase 2. Some things might be added later, e.g. tracepoints
Rebased. Now that bitcoin#31741 and some other things landed, this PR is a lot simpler. New release: https://github.com/Sjors/bitcoin/releases/tag/sv2-tp-0.1.17-ipc |
This is an alternative approach to #68. Rather than integrating the Template Provider directly into Bitcoin Core, we make it an entirely separate application that communicates via IPC, see design/multiprocess.md.
Usage
Compile as usual, multiprocess is enabled by default.
Alternatively get a recent binary, see (unofficial, by me) releases ending in "ICP".
Start node:
Start the Template Provider:
See general Stratum v2 usage instructions in bitcoin#29432.
Rationale, PRs this builds on
Upstream PRs used:
There are multiple ways to create such an application. It could be built from scratch in Rust, using bits and pieces of the Stratum Reference Implementation SRI. It could be a c++ application built from scratch, perhaps using some libraries from Bitcoin Core.
But this PR goes about in a slightly different way. Similar to Elements or Knots it's a set of patches on top of the full Bitcoin Core codebase. This allows me to leverage the build system, subclass
Transport
and use various other useful bits.This lets me reuse almost all code from the integrated Template Provider bitcoin#29432. Both build direct on:
I modified the guix script to only produce
bitcoin-node
(for now) andbitcoin-mine
binaries.Goal
The goal is to drop
bitcoin-node
from the release here. Ideally users would install Bitcoin Core in the manner they're familiar with. They would then installbitcoin-mine
separately and it should just work(tm), at most having to add a line tobitcoin.conf
to turn IPC on.This won't work until we ship a release with multiprocess and the mining interface. See bitcoin#30437 for progress towards that.
Rebase hint
Rebase hint: