29 if (buffer.size() > 100'000)
return;
44 std::vector<CTxOut> spent_outputs;
45 for (
unsigned i = 0; i < tx.
vin.size(); ++i) {
52 spent_outputs.push_back(prevout);
55 txdata.
Init(tx, std::move(spent_outputs));
57 for (
unsigned i = 0; i < tx.
vin.size(); ++i) {
67 verify_flags &= ~fuzzed_flags;
69 verify_flags |= fuzzed_flags;
74 const bool ret_fuzzed =
VerifyScript(tx.
vin.at(i).scriptSig, prevout.
scriptPubKey, &tx.
vin.at(i).scriptWitness, verify_flags, checker, &serror_fuzzed);
79 }
catch (
const std::ios_base::failure&) {
bool MoneyRange(const CAmount &nValue)
The basic transaction that is broadcasted on the network and contained in blocks.
const std::vector< CTxIn > vin
An output of a transaction.
Double ended buffer combining vector and stream-like interfaces.
constexpr value_type as_int() const
static constexpr script_verify_flags from_int(value_type f)
bool VerifyScript(const CScript &scriptSig, const CScript &scriptPubKey, const CScriptWitness *witness, script_verify_flags flags, const BaseSignatureChecker &checker, ScriptError *serror)
@ ASSERT_FAIL
Abort execution through assertion failure (for consensus code)
static constexpr TransactionSerParams TX_WITH_WITNESS
enum ScriptError_t ScriptError
static DataStream & operator>>(DataStream &ds, script_verify_flags &f)
FUZZ_TARGET(script_flags)
constexpr deserialize_type deserialize
void Init(const T &tx, std::vector< CTxOut > &&spent_outputs, bool force=false)
Initialize this PrecomputedTransactionData with transaction data.
std::vector< CTxOut > m_spent_outputs
bool IsValidFlagCombination(script_verify_flags flags)
Flags that are not forbidden by an assert in script validation.