Bitcoin Core
31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
src
test
fuzz
difference_formatter.cpp
Go to the documentation of this file.
1
// Copyright (c) 2025-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
blockencodings.h
>
6
#include <
streams.h
>
7
#include <random.h>
8
#include <
test/fuzz/fuzz.h
>
9
10
#include <vector>
11
12
FUZZ_TARGET
(difference_formatter)
13
{
14
const
auto
block_hash =
InsecureRandomContext
{{}}.
rand256
();
15
DataStream
ss
{};
16
ss
<< block_hash << std::span{buffer};
17
18
// Test deserialization
19
try
{
20
BlockTransactionsRequest
test_container;
21
ss
>> test_container;
22
assert
(test_container.
blockhash
== block_hash);
23
24
// Invariant: strictly monotonic increasing (no duplicates allowed)
25
for
(
size_t
i = 1; i < test_container.
indexes
.size(); ++i) {
26
assert
(test_container.
indexes
[i] > test_container.
indexes
[i-1]);
27
}
28
29
}
catch
(
const
std::ios_base::failure&) {
30
// Expected for malformed input
31
}
32
}
blockencodings.h
BlockTransactionsRequest
Definition
blockencodings.h:45
BlockTransactionsRequest::indexes
std::vector< uint16_t > indexes
Definition
blockencodings.h:49
BlockTransactionsRequest::blockhash
uint256 blockhash
Definition
blockencodings.h:48
DataStream
Double ended buffer combining vector and stream-like interfaces.
Definition
streams.h:133
InsecureRandomContext
xoroshiro128++ PRNG.
Definition
random.h:425
RandomMixin::rand256
uint256 rand256() noexcept
generate a random uint256.
Definition
random.h:317
fuzz.h
FUZZ_TARGET
#define FUZZ_TARGET(...)
Definition
fuzz.h:35
streams.h
ss
DataStream ss
Definition
uint256_tests.cpp:181
assert
assert(!tx.IsCoinBase())
Generated on
for Bitcoin Core by
1.16.1