Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
test
fuzz
fees.cpp
Go to the documentation of this file.
1
// Copyright (c) 2020-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 <
common/messages.h
>
6
#include <
consensus/amount.h
>
7
#include <
policy/fees/block_policy_estimator.h
>
8
#include <
test/fuzz/FuzzedDataProvider.h
>
9
#include <
test/fuzz/fuzz.h
>
10
#include <
test/fuzz/util.h
>
11
12
#include <cstdint>
13
#include <string>
14
#include <vector>
15
16
using
common::StringForFeeReason
;
17
18
FUZZ_TARGET
(fees)
19
{
20
FuzzedDataProvider
fuzzed_data_provider(buffer.data(), buffer.size());
21
const
CFeeRate
minimal_incremental_fee{
ConsumeMoney
(fuzzed_data_provider)};
22
FastRandomContext
rng{
/*fDeterministic=*/
true
};
23
FeeFilterRounder
fee_filter_rounder{minimal_incremental_fee, rng};
24
LIMITED_WHILE
(fuzzed_data_provider.
ConsumeBool
(), 10000) {
25
const
CAmount
current_minimum_fee =
ConsumeMoney
(fuzzed_data_provider);
26
const
CAmount
rounded_fee = fee_filter_rounder.
round
(current_minimum_fee);
27
assert
(
MoneyRange
(rounded_fee));
28
}
29
const
FeeReason
fee_reason = fuzzed_data_provider.
PickValueInArray
({
FeeReason::NONE
,
FeeReason::HALF_ESTIMATE
,
FeeReason::FULL_ESTIMATE
,
FeeReason::DOUBLE_ESTIMATE
,
FeeReason::CONSERVATIVE
,
FeeReason::MEMPOOL_MIN
,
FeeReason::FALLBACK
,
FeeReason::REQUIRED
});
30
(void)
StringForFeeReason
(fee_reason);
31
}
FuzzedDataProvider.h
amount.h
MoneyRange
bool MoneyRange(const CAmount &nValue)
Definition
amount.h:27
CAmount
int64_t CAmount
Amount in satoshis (Can be negative).
Definition
amount.h:12
block_policy_estimator.h
FeeReason
FeeReason
Definition
block_policy_estimator.h:60
FeeReason::CONSERVATIVE
@ CONSERVATIVE
Definition
block_policy_estimator.h:65
FeeReason::FULL_ESTIMATE
@ FULL_ESTIMATE
Definition
block_policy_estimator.h:63
FeeReason::NONE
@ NONE
Definition
block_policy_estimator.h:61
FeeReason::HALF_ESTIMATE
@ HALF_ESTIMATE
Definition
block_policy_estimator.h:62
FeeReason::DOUBLE_ESTIMATE
@ DOUBLE_ESTIMATE
Definition
block_policy_estimator.h:64
FeeReason::REQUIRED
@ REQUIRED
Definition
block_policy_estimator.h:68
FeeReason::FALLBACK
@ FALLBACK
Definition
block_policy_estimator.h:67
FeeReason::MEMPOOL_MIN
@ MEMPOOL_MIN
Definition
block_policy_estimator.h:66
CFeeRate
Fee rate in satoshis per virtualbyte: CAmount / vB the feerate is represented internally as FeeFrac.
Definition
feerate.h:32
FastRandomContext
Fast randomness source.
Definition
random.h:386
FeeFilterRounder
Definition
block_policy_estimator.h:325
FeeFilterRounder::round
CAmount round(CAmount currentMinFee) EXCLUSIVE_LOCKS_REQUIRED(!m_insecure_rand_mutex)
Quantize a minimum fee for privacy purpose before broadcast.
Definition
block_policy_estimator.cpp:1109
FuzzedDataProvider
Definition
FuzzedDataProvider.h:32
FuzzedDataProvider::ConsumeBool
bool ConsumeBool()
Definition
FuzzedDataProvider.h:289
FuzzedDataProvider::PickValueInArray
T PickValueInArray(const T(&array)[size])
Definition
FuzzedDataProvider.h:304
fuzz.h
FUZZ_TARGET
#define FUZZ_TARGET(...)
Definition
fuzz.h:35
LIMITED_WHILE
#define LIMITED_WHILE(condition, limit)
Can be used to limit a theoretically unbounded loop.
Definition
fuzz.h:22
messages.h
common::StringForFeeReason
std::string StringForFeeReason(FeeReason reason)
Definition
messages.cpp:27
StringForFeeReason
std::string StringForFeeReason(FeeReason reason)
Definition
messages.cpp:27
ConsumeMoney
CAmount ConsumeMoney(FuzzedDataProvider &fuzzed_data_provider, const std::optional< CAmount > &max) noexcept
Definition
util.cpp:29
util.h
assert
assert(!tx.IsCoinBase())
Generated on
for Bitcoin Core by
1.17.0