23 const std::optional<CPartialMerkleTree> opt_partial_merkle_tree = ConsumeDeserializable<CPartialMerkleTree>(fuzzed_data_provider);
24 if (opt_partial_merkle_tree) {
25 partial_merkle_tree = *opt_partial_merkle_tree;
30 const std::optional<CBlock> opt_block = ConsumeDeserializable<CBlock>(fuzzed_data_provider,
TX_WITH_WITNESS);
33 if (opt_block && !opt_block->vtx.empty()) {
34 if (fuzzed_data_provider.ConsumeBool()) {
36 }
else if (fuzzed_data_provider.ConsumeBool()) {
43 partial_merkle_tree = merkle_block.
txn;
45 (void)partial_merkle_tree.GetNumTransactions();
46 std::vector<uint256> matches;
47 std::vector<unsigned int> indices;
48 (void)partial_merkle_tree.ExtractMatches(matches, indices);
BloomFilter is a probabilistic filter which SPV clients provide so that we can filter the transaction...
#define LIMITED_WHILE(condition, limit)
Can be used to limit a theoretically unbounded loop.
Data structure that represents a partial merkle tree.
Used to relay blocks as header + vector<merkle branch> to filtered nodes.
static transaction_identifier FromUint256(const uint256 &id)
size_t CallOneOf(FuzzedDataProvider &fuzzed_data_provider, Callables... callables)
uint256 ConsumeUInt256(FuzzedDataProvider &fuzzed_data_provider) noexcept
static constexpr TransactionSerParams TX_WITH_WITNESS