diff options
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/interpreter.cpp | 10 | ||||
-rw-r--r-- | src/script/interpreter.h | 4 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index 2fa7e5e1ab..c322ecb1a0 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -1294,10 +1294,12 @@ uint256 GetOutputsSHA256(const T& txTo) } // namespace template <class T> -void PrecomputedTransactionData::Init(const T& txTo) +void PrecomputedTransactionData::Init(const T& txTo, std::vector<CTxOut>&& spent_outputs) { assert(!m_ready); + m_spent_outputs = std::move(spent_outputs); + // Cache is calculated only for transactions with witness if (txTo.HasWitness()) { hashPrevouts = SHA256Uint256(GetPrevoutsSHA256(txTo)); @@ -1311,12 +1313,12 @@ void PrecomputedTransactionData::Init(const T& txTo) template <class T> PrecomputedTransactionData::PrecomputedTransactionData(const T& txTo) { - Init(txTo); + Init(txTo, {}); } // explicit instantiation -template void PrecomputedTransactionData::Init(const CTransaction& txTo); -template void PrecomputedTransactionData::Init(const CMutableTransaction& txTo); +template void PrecomputedTransactionData::Init(const CTransaction& txTo, std::vector<CTxOut>&& spent_outputs); +template void PrecomputedTransactionData::Init(const CMutableTransaction& txTo, std::vector<CTxOut>&& spent_outputs); template PrecomputedTransactionData::PrecomputedTransactionData(const CTransaction& txTo); template PrecomputedTransactionData::PrecomputedTransactionData(const CMutableTransaction& txTo); diff --git a/src/script/interpreter.h b/src/script/interpreter.h index 0ff4c4bc95..64cefc0d6c 100644 --- a/src/script/interpreter.h +++ b/src/script/interpreter.h @@ -15,6 +15,7 @@ class CPubKey; class CScript; class CTransaction; +class CTxOut; class uint256; /** Signature hash types/flags */ @@ -122,11 +123,12 @@ struct PrecomputedTransactionData { uint256 hashPrevouts, hashSequence, hashOutputs; bool m_ready = false; + std::vector<CTxOut> m_spent_outputs; PrecomputedTransactionData() = default; template <class T> - void Init(const T& tx); + void Init(const T& tx, std::vector<CTxOut>&& spent_outputs); template <class T> explicit PrecomputedTransactionData(const T& tx); |