11
11
#include < span.h>
12
12
#include < primitives/transaction.h>
13
13
14
+ #include < optional>
14
15
#include < vector>
15
16
#include < stdint.h>
16
17
@@ -215,6 +216,9 @@ struct ScriptExecutionData
215
216
bool m_validation_weight_left_init = false ;
216
217
// ! How much validation weight is left (decremented for every successful non-empty signature check).
217
218
int64_t m_validation_weight_left;
219
+
220
+ // ! The hash of the corresponding output
221
+ std::optional<uint256> m_output_hash;
218
222
};
219
223
220
224
/* * Signature hash sizes */
@@ -244,7 +248,7 @@ class BaseSignatureChecker
244
248
return false ;
245
249
}
246
250
247
- virtual bool CheckSchnorrSignature (Span<const unsigned char > sig, Span<const unsigned char > pubkey, SigVersion sigversion, const ScriptExecutionData& execdata, ScriptError* serror = nullptr ) const
251
+ virtual bool CheckSchnorrSignature (Span<const unsigned char > sig, Span<const unsigned char > pubkey, SigVersion sigversion, ScriptExecutionData& execdata, ScriptError* serror = nullptr ) const
248
252
{
249
253
return false ;
250
254
}
@@ -272,7 +276,7 @@ enum class MissingDataBehavior
272
276
};
273
277
274
278
template <typename T>
275
- bool SignatureHashSchnorr (uint256& hash_out, const ScriptExecutionData& execdata, const T& tx_to, uint32_t in_pos, uint8_t hash_type, SigVersion sigversion, const PrecomputedTransactionData& cache, MissingDataBehavior mdb);
279
+ bool SignatureHashSchnorr (uint256& hash_out, ScriptExecutionData& execdata, const T& tx_to, uint32_t in_pos, uint8_t hash_type, SigVersion sigversion, const PrecomputedTransactionData& cache, MissingDataBehavior mdb);
276
280
277
281
template <class T >
278
282
class GenericTransactionSignatureChecker : public BaseSignatureChecker
@@ -292,7 +296,7 @@ class GenericTransactionSignatureChecker : public BaseSignatureChecker
292
296
GenericTransactionSignatureChecker (const T* txToIn, unsigned int nInIn, const CAmount& amountIn, MissingDataBehavior mdb) : txTo(txToIn), m_mdb(mdb), nIn(nInIn), amount(amountIn), txdata(nullptr ) {}
293
297
GenericTransactionSignatureChecker (const T* txToIn, unsigned int nInIn, const CAmount& amountIn, const PrecomputedTransactionData& txdataIn, MissingDataBehavior mdb) : txTo(txToIn), m_mdb(mdb), nIn(nInIn), amount(amountIn), txdata(&txdataIn) {}
294
298
bool CheckECDSASignature (const std::vector<unsigned char >& scriptSig, const std::vector<unsigned char >& vchPubKey, const CScript& scriptCode, SigVersion sigversion) const override ;
295
- bool CheckSchnorrSignature (Span<const unsigned char > sig, Span<const unsigned char > pubkey, SigVersion sigversion, const ScriptExecutionData& execdata, ScriptError* serror = nullptr ) const override ;
299
+ bool CheckSchnorrSignature (Span<const unsigned char > sig, Span<const unsigned char > pubkey, SigVersion sigversion, ScriptExecutionData& execdata, ScriptError* serror = nullptr ) const override ;
296
300
bool CheckLockTime (const CScriptNum& nLockTime) const override ;
297
301
bool CheckSequence (const CScriptNum& nSequence) const override ;
298
302
};
@@ -313,7 +317,7 @@ class DeferringSignatureChecker : public BaseSignatureChecker
313
317
return m_checker.CheckECDSASignature (scriptSig, vchPubKey, scriptCode, sigversion);
314
318
}
315
319
316
- bool CheckSchnorrSignature (Span<const unsigned char > sig, Span<const unsigned char > pubkey, SigVersion sigversion, const ScriptExecutionData& execdata, ScriptError* serror = nullptr ) const override
320
+ bool CheckSchnorrSignature (Span<const unsigned char > sig, Span<const unsigned char > pubkey, SigVersion sigversion, ScriptExecutionData& execdata, ScriptError* serror = nullptr ) const override
317
321
{
318
322
return m_checker.CheckSchnorrSignature (sig, pubkey, sigversion, execdata, serror);
319
323
}
0 commit comments