MCPcopy Create free account
hub / github.com/ElementsProject/elements / FUZZ_TARGET_INIT

Function FUZZ_TARGET_INIT

src/test/fuzz/block.cpp:26–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24}
25
26FUZZ_TARGET_INIT(block, initialize_block)
27{
28 CDataStream ds(buffer, SER_NETWORK, INIT_PROTO_VERSION);
29 CBlock block;
30 try {
31 int nVersion;
32 ds >> nVersion;
33 ds.SetVersion(nVersion);
34 ds >> block;
35 } catch (const std::ios_base::failure&) {
36 return;
37 }
38 const Consensus::Params& consensus_params = Params().GetConsensus();
39 BlockValidationState validation_state_pow_and_merkle;
40 const bool valid_incl_pow_and_merkle = CheckBlock(block, validation_state_pow_and_merkle, consensus_params, /* fCheckPOW= */ true, /* fCheckMerkleRoot= */ true);
41 assert(validation_state_pow_and_merkle.IsValid() || validation_state_pow_and_merkle.IsInvalid() || validation_state_pow_and_merkle.IsError());
42 (void)validation_state_pow_and_merkle.Error("");
43 BlockValidationState validation_state_pow;
44 const bool valid_incl_pow = CheckBlock(block, validation_state_pow, consensus_params, /* fCheckPOW= */ true, /* fCheckMerkleRoot= */ false);
45 assert(validation_state_pow.IsValid() || validation_state_pow.IsInvalid() || validation_state_pow.IsError());
46 BlockValidationState validation_state_merkle;
47 const bool valid_incl_merkle = CheckBlock(block, validation_state_merkle, consensus_params, /* fCheckPOW= */ false, /* fCheckMerkleRoot= */ true);
48 assert(validation_state_merkle.IsValid() || validation_state_merkle.IsInvalid() || validation_state_merkle.IsError());
49 BlockValidationState validation_state_none;
50 const bool valid_incl_none = CheckBlock(block, validation_state_none, consensus_params, /* fCheckPOW= */ false, /* fCheckMerkleRoot= */ false);
51 assert(validation_state_none.IsValid() || validation_state_none.IsInvalid() || validation_state_none.IsError());
52 if (valid_incl_pow_and_merkle) {
53 assert(valid_incl_pow && valid_incl_merkle && valid_incl_none);
54 } else if (valid_incl_merkle || valid_incl_pow) {
55 assert(valid_incl_none);
56 }
57 (void)block.GetHash();
58 (void)block.ToString();
59 (void)BlockMerkleRoot(block);
60 if (!block.vtx.empty()) {
61 (void)BlockWitnessMerkleRoot(block);
62 }
63 (void)GetBlockWeight(block);
64 (void)GetWitnessCommitmentIndex(block);
65 const size_t raw_memory_size = RecursiveDynamicUsage(block);
66 const size_t raw_memory_size_as_shared_ptr = RecursiveDynamicUsage(std::make_shared<CBlock>(block));
67 assert(raw_memory_size_as_shared_ptr > raw_memory_size);
68 CBlock block_copy = block;
69 block_copy.SetNull();
70 const bool is_null = block_copy.IsNull();
71 assert(is_null);
72}

Callers

nothing calls this directly

Calls 15

CheckBlockFunction · 0.85
BlockMerkleRootFunction · 0.85
BlockWitnessMerkleRootFunction · 0.85
GetBlockWeightFunction · 0.85
RecursiveDynamicUsageFunction · 0.85
IsInvalidMethod · 0.80
IsErrorMethod · 0.80
ErrorMethod · 0.80
ParamsClass · 0.50
SetVersionMethod · 0.45
IsValidMethod · 0.45

Tested by

no test coverage detected