aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2019-09-26 16:48:47 +0800
committerfanquake <fanquake@gmail.com>2019-09-26 17:07:20 +0800
commitfdfaeb67de3694b436656f57ff65f1dc94b893f0 (patch)
treee3dda615c9f896433a8a7630a18022bfa77d1235
parent4c4ff4911a6dbf1555fb4cfc05092cb8fe2f9eba (diff)
parentfa607c229295e0f0b89d5177b94d3381ab5e37d8 (diff)
Merge #16956: validation: Make GetWitnessCommitmentIndex public
fa607c229295e0f0b89d5177b94d3381ab5e37d8 validation: Make GetWitnessCommitmentIndex public (MarcoFalke) Pull request description: `GenerateCoinbaseCommitment` is public and can be used in unit tests to update the witness commitment after the list of txs in a block has been changed. However, for it to work, the existing commitment (added by default in `CreateNewBlock`) must be removed (and thus its index must be known). Make that possible by exposing the `GetWitnessCommitmentIndex` helper function in the header. ACKs for top commit: jb55: ACK fa607c229295e0f0b89d5177b94d3381ab5e37d8 jamesob: ACK https://github.com/bitcoin/bitcoin/pull/16956/commits/fa607c229295e0f0b89d5177b94d3381ab5e37d8 promag: ACK fa607c229295e0f0b89d5177b94d3381ab5e37d8. fanquake: ACK fa607c229295e0f0b89d5177b94d3381ab5e37d8 - This unblocks work in #15845. Tree-SHA512: d563aa2c201d5fb4874e506a28f468c37e457cc8a20229c377178af08c22d3be44e19ee6e8e524b6de99236cd5f2c9e39b8009d88c26854aa774737912bd5889
-rw-r--r--src/validation.cpp4
-rw-r--r--src/validation.h3
2 files changed, 4 insertions, 3 deletions
diff --git a/src/validation.cpp b/src/validation.cpp
index 4caee52424..1e7b9c7e68 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -3280,9 +3280,7 @@ bool IsWitnessEnabled(const CBlockIndex* pindexPrev, const Consensus::Params& pa
return (height >= params.SegwitHeight);
}
-// Compute at which vout of the block's coinbase transaction the witness
-// commitment occurs, or -1 if not found.
-static int GetWitnessCommitmentIndex(const CBlock& block)
+int GetWitnessCommitmentIndex(const CBlock& block)
{
int commitpos = -1;
if (!block.vtx.empty()) {
diff --git a/src/validation.h b/src/validation.h
index 615b83f028..96d249b6d3 100644
--- a/src/validation.h
+++ b/src/validation.h
@@ -384,6 +384,9 @@ bool IsWitnessEnabled(const CBlockIndex* pindexPrev, const Consensus::Params& pa
/** When there are blocks in the active chain with missing data, rewind the chainstate and remove them from the block index */
bool RewindBlockIndex(const CChainParams& params) LOCKS_EXCLUDED(cs_main);
+/** Compute at which vout of the block's coinbase transaction the witness commitment occurs, or -1 if not found */
+int GetWitnessCommitmentIndex(const CBlock& block);
+
/** Update uncommitted block structures (currently: only the witness reserved value). This is safe for submitted blocks. */
void UpdateUncommittedBlockStructures(CBlock& block, const CBlockIndex* pindexPrev, const Consensus::Params& consensusParams);