Bitcoin Core
26.1.0
P2P Digital Currency
src
test
fuzz
util
mempool.cpp
Go to the documentation of this file.
1
// Copyright (c) 2022 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 <
consensus/amount.h
>
6
#include <
consensus/consensus.h
>
7
#include <
kernel/mempool_entry.h
>
8
#include <
primitives/transaction.h
>
9
#include <
test/fuzz/FuzzedDataProvider.h
>
10
#include <
test/fuzz/util.h
>
11
#include <
test/fuzz/util/mempool.h
>
12
13
#include <cassert>
14
#include <cstdint>
15
#include <limits>
16
17
CTxMemPoolEntry
ConsumeTxMemPoolEntry
(
FuzzedDataProvider
& fuzzed_data_provider,
const
CTransaction
& tx) noexcept
18
{
19
// Avoid:
20
// policy/feerate.cpp:28:34: runtime error: signed integer overflow: 34873208148477500 * 1000 cannot be represented in type 'long'
21
//
22
// Reproduce using CFeeRate(348732081484775, 10).GetFeePerK()
23
const
CAmount
fee{
ConsumeMoney
(fuzzed_data_provider,
/*max=*/
std::numeric_limits<CAmount>::max() /
CAmount
{100
'000})};
24
assert(MoneyRange(fee));
25
const int64_t time = fuzzed_data_provider.ConsumeIntegral<int64_t>();
26
const uint64_t entry_sequence{fuzzed_data_provider.ConsumeIntegral<uint64_t>()};
27
const unsigned int entry_height = fuzzed_data_provider.ConsumeIntegral<unsigned int>();
28
const bool spends_coinbase = fuzzed_data_provider.ConsumeBool();
29
const unsigned int sig_op_cost = fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>(0, MAX_BLOCK_SIGOPS_COST);
30
return CTxMemPoolEntry{MakeTransactionRef(tx), fee, time, entry_height, entry_sequence, spends_coinbase, sig_op_cost, {}};
31
}
transaction.h
FuzzedDataProvider.h
CTxMemPoolEntry
CTxMemPoolEntry stores data about the corresponding transaction, as well as data about all in-mempool...
Definition:
mempool_entry.h:65
mempool.h
CAmount
int64_t CAmount
Amount in satoshis (Can be negative)
Definition:
amount.h:12
ConsumeTxMemPoolEntry
CTxMemPoolEntry ConsumeTxMemPoolEntry(FuzzedDataProvider &fuzzed_data_provider, const CTransaction &tx) noexcept
Definition:
mempool.cpp:17
FuzzedDataProvider
Definition:
FuzzedDataProvider.h:31
mempool_entry.h
util.h
ConsumeMoney
CAmount ConsumeMoney(FuzzedDataProvider &fuzzed_data_provider, const std::optional< CAmount > &max) noexcept
Definition:
util.cpp:30
consensus.h
amount.h
CTransaction
The basic transaction that is broadcasted on the network and contained in blocks. ...
Definition:
transaction.h:294
Generated on Thu Mar 28 2024 12:00:00 for Bitcoin Core by
1.8.14