mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-10-11 03:53:22 +02:00
Make CRollingBloomFilter set nTweak for you
While CBloomFilter is usually used with an explicitly set nTweak, CRollingBloomFilter is only used internally. Requiring every caller to set nTweak is error-prone and redundant; better to have the class handle that for you with a high-quality randomness source. Additionally when clearing the filter it makes sense to change nTweak as well to recover from a bad setting, e.g. due to insufficient randomness at initialization, so the clear() method is replaced by a reset() method that sets a new, random, nTweak value.
This commit is contained in:
committed by
Pieter Wuille
parent
a3d65fedaa
commit
d2d7ee0e86
@@ -469,7 +469,7 @@ static std::vector<unsigned char> RandomData()
|
||||
BOOST_AUTO_TEST_CASE(rolling_bloom)
|
||||
{
|
||||
// last-100-entry, 1% false positive:
|
||||
CRollingBloomFilter rb1(100, 0.01, 0);
|
||||
CRollingBloomFilter rb1(100, 0.01, 1);
|
||||
|
||||
// Overfill:
|
||||
static const int DATASIZE=399;
|
||||
@@ -500,7 +500,7 @@ BOOST_AUTO_TEST_CASE(rolling_bloom)
|
||||
BOOST_CHECK(nHits < 175);
|
||||
|
||||
BOOST_CHECK(rb1.contains(data[DATASIZE-1]));
|
||||
rb1.clear();
|
||||
rb1.reset(1);
|
||||
BOOST_CHECK(!rb1.contains(data[DATASIZE-1]));
|
||||
|
||||
// Now roll through data, make sure last 100 entries
|
||||
@@ -527,7 +527,7 @@ BOOST_AUTO_TEST_CASE(rolling_bloom)
|
||||
BOOST_CHECK(nHits < 100);
|
||||
|
||||
// last-1000-entry, 0.01% false positive:
|
||||
CRollingBloomFilter rb2(1000, 0.001, 0);
|
||||
CRollingBloomFilter rb2(1000, 0.001, 1);
|
||||
for (int i = 0; i < DATASIZE; i++) {
|
||||
rb2.insert(data[i]);
|
||||
}
|
||||
|
Reference in New Issue
Block a user