48 const unsigned int size = compressed[0];
54 assert(script == decompressed_script);
58 bool is_standard_ret =
IsStandard(script, std::nullopt, which_type);
59 if (!is_standard_ret) {
68 assert(script.IsUnspendable());
70 if (script.IsUnspendable()) {
77 if (!extract_destination_ret) {
86 assert(!extract_destination_ret);
95 std::vector<std::vector<unsigned char>> solutions;
96 (void)
Solver(script, solutions);
98 (void)script.HasValidOps();
99 (void)script.IsPayToScriptHash();
100 (void)script.IsPayToWitnessScriptHash();
101 (void)script.IsPushOnly();
102 (void)script.GetSigOpCount(
false);
107 compressed_script.
assign(bytes.begin(), bytes.end());
109 if (compressed_script.
size() >= 32) {
111 DecompressScript(decompressed_script, fuzzed_data_provider.ConsumeIntegral<
unsigned int>(), compressed_script);
115 const std::optional<CScript> other_script = ConsumeDeserializable<CScript>(fuzzed_data_provider);
122 const uint32_t
u32{fuzzed_data_provider.ConsumeIntegral<uint32_t>()};
126 for (
const auto& s : random_string_vector) {
127 wit.
stack.emplace_back(s.begin(), s.end());
140 append_script << fuzzed_data_provider.ConsumeIntegral<int64_t>();
142 append_script <<
CScriptNum{fuzzed_data_provider.ConsumeIntegral<int64_t>()};
148 fuzzed_data_provider.ConsumeBool() ?
158 Assert(dest.empty() != valid);
162 (void)(tx_destination_1 < tx_destination_2);
163 if (tx_destination_1 == tx_destination_2) {
void assign(size_type n, const T &val)
bool ExtractDestination(const CScript &scriptPubKey, CTxDestination &addressRet)
Parse a standard scriptPubKey for the destination address.
std::vector< std::string > ConsumeRandomLengthStringVector(FuzzedDataProvider &fuzzed_data_provider, const size_t max_vector_size=16, const size_t max_string_length=16) noexcept
static const std::string REGTEST
bool IsValidDestinationString(const std::string &str, const CChainParams ¶ms)
size_t CountWitnessSigOps(const CScript &scriptSig, const CScript &scriptPubKey, const CScriptWitness *witness, unsigned int flags)
opcodetype ConsumeOpcodeType(FuzzedDataProvider &fuzzed_data_provider) noexcept
bool IsValidDestination(const CTxDestination &dest)
Check whether a CTxDestination is a CNoDestination.
CScript ConsumeScript(FuzzedDataProvider &fuzzed_data_provider, const bool maybe_p2wsh) noexcept
std::vector< std::vector< unsigned char > > stack
UniValue DescribeAddress(const CTxDestination &dest)
CKeyID GetKeyForDestination(const SigningProvider &store, const CTxDestination &dest)
Return the CKeyID of the key involved in a script (if there is a unique one).
bool IsStandard(const CScript &scriptPubKey, const std::optional< unsigned > &max_datacarrier_bytes, TxoutType &whichType)
bool IsSegWitOutput(const SigningProvider &provider, const CScript &script)
Check whether a scriptPubKey is known to be segwit.
unspendable OP_RETURN script that carries data
FUZZ_TARGET_INIT(script, initialize_script)
Users of this module must hold an ECCVerifyHandle.
bool CompressScript(const CScript &script, CompressedScript &out)
void SelectParams(const std::string &network)
Sets the params returned by Params() to those for the given chain name.
std::string ScriptErrorString(const ScriptError serror)
iterator erase(iterator pos)
std::string write(unsigned int prettyIndent=0, unsigned int indentLevel=0) const
std::vector< uint8_t > ConsumeRandomLengthByteVector(FuzzedDataProvider &fuzzed_data_provider, const std::optional< size_t > &max_length=std::nullopt) noexcept
std::variant< CNoDestination, PKHash, ScriptHash, WitnessV0ScriptHash, WitnessV0KeyHash, WitnessV1Taproot, WitnessUnknown > CTxDestination
A txout script template with a specific destination.
CScript GetScriptForDestination(const CTxDestination &dest)
Generate a Bitcoin scriptPubKey for the given CTxDestination.
Implements a drop-in replacement for std::vector<T> which stores up to N elements directly (without h...
std::unique_ptr< Descriptor > InferDescriptor(const CScript &script, const SigningProvider &provider)
Find a descriptor for the specified script, using information from provider where possible...
std::string GetOpName(opcodetype opcode)
Serialized script, used inside transaction inputs and outputs.
TxoutType Solver(const CScript &scriptPubKey, std::vector< std::vector< unsigned char >> &vSolutionsRet)
Parse a scriptPubKey and identify script type for standard scripts.
static size_t RecursiveDynamicUsage(const CScript &script)
std::string EncodeDestination(const CTxDestination &dest)
CTxDestination DecodeDestination(const std::string &str, std::string &error_msg, std::vector< int > *error_locations)
bool DecompressScript(CScript &script, unsigned int nSize, const CompressedScript &in)
int FindAndDelete(CScript &script, const CScript &b)
CTxDestination ConsumeTxDestination(FuzzedDataProvider &fuzzed_data_provider) noexcept
#define Assert(val)
Identity function.