mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-12 18:01:57 +02:00
[net processing] FeeFilterRounder doesn't own a FastRandomContext
This commit is contained in:
parent
47520ed209
commit
fecec3e1c6
@ -1813,7 +1813,7 @@ PeerManagerImpl::PeerManagerImpl(CConnman& connman, AddrMan& addrman,
|
|||||||
BanMan* banman, ChainstateManager& chainman,
|
BanMan* banman, ChainstateManager& chainman,
|
||||||
CTxMemPool& pool, Options opts)
|
CTxMemPool& pool, Options opts)
|
||||||
: m_rng{opts.deterministic_rng},
|
: m_rng{opts.deterministic_rng},
|
||||||
m_fee_filter_rounder{CFeeRate{DEFAULT_MIN_RELAY_TX_FEE}},
|
m_fee_filter_rounder{CFeeRate{DEFAULT_MIN_RELAY_TX_FEE}, m_rng},
|
||||||
m_chainparams(chainman.GetParams()),
|
m_chainparams(chainman.GetParams()),
|
||||||
m_connman(connman),
|
m_connman(connman),
|
||||||
m_addrman(addrman),
|
m_addrman(addrman),
|
||||||
|
@ -1054,8 +1054,9 @@ static std::set<double> MakeFeeSet(const CFeeRate& min_incremental_fee,
|
|||||||
return fee_set;
|
return fee_set;
|
||||||
}
|
}
|
||||||
|
|
||||||
FeeFilterRounder::FeeFilterRounder(const CFeeRate& minIncrementalFee)
|
FeeFilterRounder::FeeFilterRounder(const CFeeRate& minIncrementalFee, FastRandomContext& rng)
|
||||||
: m_fee_set{MakeFeeSet(minIncrementalFee, MAX_FILTER_FEERATE, FEE_FILTER_SPACING)}
|
: m_fee_set{MakeFeeSet(minIncrementalFee, MAX_FILTER_FEERATE, FEE_FILTER_SPACING)},
|
||||||
|
insecure_rand{rng}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
/** Create new FeeFilterRounder */
|
/** Create new FeeFilterRounder */
|
||||||
explicit FeeFilterRounder(const CFeeRate& min_incremental_fee);
|
explicit FeeFilterRounder(const CFeeRate& min_incremental_fee, FastRandomContext& rng);
|
||||||
|
|
||||||
/** Quantize a minimum fee for privacy purpose before broadcast. */
|
/** Quantize a minimum fee for privacy purpose before broadcast. */
|
||||||
CAmount round(CAmount currentMinFee) EXCLUSIVE_LOCKS_REQUIRED(!m_insecure_rand_mutex);
|
CAmount round(CAmount currentMinFee) EXCLUSIVE_LOCKS_REQUIRED(!m_insecure_rand_mutex);
|
||||||
@ -328,7 +328,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
const std::set<double> m_fee_set;
|
const std::set<double> m_fee_set;
|
||||||
Mutex m_insecure_rand_mutex;
|
Mutex m_insecure_rand_mutex;
|
||||||
FastRandomContext insecure_rand GUARDED_BY(m_insecure_rand_mutex);
|
FastRandomContext& insecure_rand GUARDED_BY(m_insecure_rand_mutex);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BITCOIN_POLICY_FEES_H
|
#endif // BITCOIN_POLICY_FEES_H
|
||||||
|
@ -17,7 +17,8 @@ FUZZ_TARGET(fees)
|
|||||||
{
|
{
|
||||||
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
|
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
|
||||||
const CFeeRate minimal_incremental_fee{ConsumeMoney(fuzzed_data_provider)};
|
const CFeeRate minimal_incremental_fee{ConsumeMoney(fuzzed_data_provider)};
|
||||||
FeeFilterRounder fee_filter_rounder{minimal_incremental_fee};
|
FastRandomContext rng{/*fDeterministic=*/true};
|
||||||
|
FeeFilterRounder fee_filter_rounder{minimal_incremental_fee, rng};
|
||||||
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
|
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
|
||||||
const CAmount current_minimum_fee = ConsumeMoney(fuzzed_data_provider);
|
const CAmount current_minimum_fee = ConsumeMoney(fuzzed_data_provider);
|
||||||
const CAmount rounded_fee = fee_filter_rounder.round(current_minimum_fee);
|
const CAmount rounded_fee = fee_filter_rounder.round(current_minimum_fee);
|
||||||
|
@ -13,7 +13,8 @@ BOOST_AUTO_TEST_SUITE(policy_fee_tests)
|
|||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(FeeRounder)
|
BOOST_AUTO_TEST_CASE(FeeRounder)
|
||||||
{
|
{
|
||||||
FeeFilterRounder fee_rounder{CFeeRate{1000}};
|
FastRandomContext rng{/*fDeterministic=*/true};
|
||||||
|
FeeFilterRounder fee_rounder{CFeeRate{1000}, rng};
|
||||||
|
|
||||||
// check that 1000 rounds to 974 or 1071
|
// check that 1000 rounds to 974 or 1071
|
||||||
std::set<CAmount> results;
|
std::set<CAmount> results;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user