@@ -1420,7 +1420,7 @@ uint256 GetSpentScriptsSHA256(const std::vector<CTxOut>& outputs_spent)
1420
1420
} // namespace
1421
1421
1422
1422
template <class T >
1423
- void PrecomputedTransactionData::Init (const T& txTo, std::vector<CTxOut>&& spent_outputs)
1423
+ void PrecomputedTransactionData::Init (const T& txTo, std::vector<CTxOut>&& spent_outputs, bool force )
1424
1424
{
1425
1425
assert (!m_spent_outputs_ready);
1426
1426
@@ -1431,9 +1431,9 @@ void PrecomputedTransactionData::Init(const T& txTo, std::vector<CTxOut>&& spent
1431
1431
}
1432
1432
1433
1433
// Determine which precomputation-impacting features this transaction uses.
1434
- bool uses_bip143_segwit = false ;
1435
- bool uses_bip341_taproot = false ;
1436
- for (size_t inpos = 0 ; inpos < txTo.vin .size (); ++inpos) {
1434
+ bool uses_bip143_segwit = force ;
1435
+ bool uses_bip341_taproot = force ;
1436
+ for (size_t inpos = 0 ; inpos < txTo.vin .size () && !(uses_bip143_segwit && uses_bip341_taproot) ; ++inpos) {
1437
1437
if (!txTo.vin [inpos].scriptWitness .IsNull ()) {
1438
1438
if (m_spent_outputs_ready && m_spent_outputs[inpos].scriptPubKey .size () == 2 + WITNESS_V1_TAPROOT_SIZE &&
1439
1439
m_spent_outputs[inpos].scriptPubKey [0 ] == OP_1) {
@@ -1478,8 +1478,8 @@ PrecomputedTransactionData::PrecomputedTransactionData(const T& txTo)
1478
1478
}
1479
1479
1480
1480
// explicit instantiation
1481
- template void PrecomputedTransactionData::Init (const CTransaction& txTo, std::vector<CTxOut>&& spent_outputs);
1482
- template void PrecomputedTransactionData::Init (const CMutableTransaction& txTo, std::vector<CTxOut>&& spent_outputs);
1481
+ template void PrecomputedTransactionData::Init (const CTransaction& txTo, std::vector<CTxOut>&& spent_outputs, bool force );
1482
+ template void PrecomputedTransactionData::Init (const CMutableTransaction& txTo, std::vector<CTxOut>&& spent_outputs, bool force );
1483
1483
template PrecomputedTransactionData::PrecomputedTransactionData(const CTransaction& txTo);
1484
1484
template PrecomputedTransactionData::PrecomputedTransactionData(const CMutableTransaction& txTo);
1485
1485
0 commit comments