Add getTransactionsByTxID() and getTransactionsByWitnessID()#11
Merged
Conversation
210007c to
b15d4e9
Compare
Collaborator
Author
|
@rustaceanrob can you trigger a CI run? |
b15d4e9 to
c89092d
Compare
Collaborator
Author
c89092d to
774dc9f
Compare
Collaborator
Author
|
Rebased after #9. |
Member
|
Needs rebase |
774dc9f to
7107ace
Compare
Collaborator
Author
fac93e4 to
c98e1b9
Compare
Collaborator
Author
|
Rebased now that #14 landed. |
c98e1b9 to
e865c6c
Compare
Collaborator
Author
|
Rebased (no change) to do another run against the latest bitcoin/bitcoin#34020. |
e865c6c to
dcd32ee
Compare
Collaborator
Author
|
Rebased and updated to match the latest Bitcoin Core version. |
dcd32ee to
16776be
Compare
Collaborator
Author
|
Rewrote history to base it on #12, until that lands. |
16776be to
457adb0
Compare
Collaborator
Author
achow101
added a commit
to bitcoin/bitcoin
that referenced
this pull request
Jul 7, 2026
9784818 mining: add getTransactionsByWitnessID() IPC method (Sjors Provoost) d282ae6 mining: add getTransactionsByTxID() IPC method (Sjors Provoost) 0d5e4d4 test: restart node after IPC option override test (Sjors Provoost) f16b361 ipc: Serialize null CTransactionRef as empty Data (Sjors Provoost) 0f466e1 mempool: add lookup by witness hash (Sjors Provoost) Pull request description: For Stratum v2 custom job declaration to be bandwidth efficient, the pool can request[^0] only the transactions that it doesn't know about. The spec doesn't specify how this is achieved, but one method is to call the `getrawtransaction` RPC on each transaction id listed in [DeclareMiningJob](https://stratumprotocol.org/specification/06-Job-Declaration-Protocol?query=DeclareMiningJob#644-declareminingjob-client-server) (or a subset if the pool software maintains a cache). Using RPC is inefficient, made worse by the need to make multiple calls. It also doesn't support queuing by witness id (yet, see #34013). This PR introduces two new IPC methods: - `getTransactionsById()`: takes a list of `Txid`'s - `getTransactionsByWitnessID()`: : takes a list of `Wtxid`'s Both return a list of serialised transactions. An empty element is returned for transactions that were not found. Unlike the RPC counterpart, the IPC methods do not take advantage of `-txindex`. This could be done in a followup. For `Wtxid` that would involve adding a `-witnesstxindex`. I thought about having a single (or overloaded) `getTransactions()` that works with both `Txid` and `Wtxid`, but I prefer that clients are intentional about which one they want. A unit and functional test cover the new functionality. Sv2 probably only needs `getTransactionsByWitnessID()`, but it's easy enough to just add both. To rest with Rust use: - 2140-dev/bitcoin-capnp-types#11 [^0]: there's two reasons the pool requests these transactions: to approve the template and to broadcast the block if a solution is found (the miner will also broadcast via their template provider). See also stratum-mining/sv2-spec#170 ACKs for top commit: achow101: ACK 9784818 sedited: Re-ACK 9784818 ViniciusCestarii: Re-ACK 9784818 ismaelsadeeq: Code review ACK 9784818 Tree-SHA512: 3c6ceb572ab7d8bd090a8f31b5e331304a7a19a3d1f1551c9c2e1ee41339d76f96ca6c41bd634c87fca0a969e7d9bfa6a16c26fb06c0dd2315f6ca1c76a16a31
Add Mining interface methods getTransactionsByTxID and getTransactionsByWitnessID to the capnp schema. Expand integration tests to call both methods with empty inputs, a real mempool transaction id and witness id, and unknown ids, verifying serialized transaction bytes for hits and empty results for misses.
457adb0 to
6e4c998
Compare
Collaborator
Author
|
bitcoin/bitcoin#34020 landed so I'll merge this if CI passes. |
Draft
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds
getTransactionsByTxID()andgetTransactionsByWitnessID()which are introduced by bitcoin/bitcoin#34020.To be merged after: