aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordergoegge <n.goeggi@gmail.com>2023-10-02 14:21:35 +0100
committerdergoegge <n.goeggi@gmail.com>2023-10-04 13:16:52 +0100
commitfecec3e1c661ba273470ecc5ef12d4c070b53050 (patch)
tree9b7d27beb5e856a7bf0eb16ac8f82ffe06db2982
parent47520ed209d9341702a0fb6006bee6f63f7da42e (diff)
downloadbitcoin-fecec3e1c661ba273470ecc5ef12d4c070b53050.tar.xz
[net processing] FeeFilterRounder doesn't own a FastRandomContext
-rw-r--r--src/net_processing.cpp2
-rw-r--r--src/policy/fees.cpp5
-rw-r--r--src/policy/fees.h4
-rw-r--r--src/test/fuzz/fees.cpp3
-rw-r--r--src/test/policy_fee_tests.cpp3
5 files changed, 10 insertions, 7 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index b38965c0b8..d58db13424 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -1813,7 +1813,7 @@ PeerManagerImpl::PeerManagerImpl(CConnman& connman, AddrMan& addrman,
BanMan* banman, ChainstateManager& chainman,
CTxMemPool& pool, Options opts)
: 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_connman(connman),
m_addrman(addrman),
diff --git a/src/policy/fees.cpp b/src/policy/fees.cpp
index 553c88fddc..87bfa4cfc3 100644
--- a/src/policy/fees.cpp
+++ b/src/policy/fees.cpp
@@ -1054,8 +1054,9 @@ static std::set<double> MakeFeeSet(const CFeeRate& min_incremental_fee,
return fee_set;
}
-FeeFilterRounder::FeeFilterRounder(const CFeeRate& minIncrementalFee)
- : m_fee_set{MakeFeeSet(minIncrementalFee, MAX_FILTER_FEERATE, FEE_FILTER_SPACING)}
+FeeFilterRounder::FeeFilterRounder(const CFeeRate& minIncrementalFee, FastRandomContext& rng)
+ : m_fee_set{MakeFeeSet(minIncrementalFee, MAX_FILTER_FEERATE, FEE_FILTER_SPACING)},
+ insecure_rand{rng}
{
}
diff --git a/src/policy/fees.h b/src/policy/fees.h
index 8ed13482e9..69bda195be 100644
--- a/src/policy/fees.h
+++ b/src/policy/fees.h
@@ -320,7 +320,7 @@ private:
public:
/** 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. */
CAmount round(CAmount currentMinFee) EXCLUSIVE_LOCKS_REQUIRED(!m_insecure_rand_mutex);
@@ -328,7 +328,7 @@ public:
private:
const std::set<double> m_fee_set;
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
diff --git a/src/test/fuzz/fees.cpp b/src/test/fuzz/fees.cpp
index deb0ed65ca..38a8c6798e 100644
--- a/src/test/fuzz/fees.cpp
+++ b/src/test/fuzz/fees.cpp
@@ -17,7 +17,8 @@ FUZZ_TARGET(fees)
{
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
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) {
const CAmount current_minimum_fee = ConsumeMoney(fuzzed_data_provider);
const CAmount rounded_fee = fee_filter_rounder.round(current_minimum_fee);
diff --git a/src/test/policy_fee_tests.cpp b/src/test/policy_fee_tests.cpp
index 25fb5343e3..29d70cb5f8 100644
--- a/src/test/policy_fee_tests.cpp
+++ b/src/test/policy_fee_tests.cpp
@@ -13,7 +13,8 @@ BOOST_AUTO_TEST_SUITE(policy_fee_tests)
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
std::set<CAmount> results;