![]() |
BSHA3
0.17.99
P2P Blockchain, based on Bitcoin
|
RollingBloomFilter is a probabilistic "keep track of most recently inserted" set. More...
#include <bloom.h>
Public Member Functions | |
| CRollingBloomFilter (const unsigned int nElements, const double nFPRate) | |
| void | insert (const std::vector< unsigned char > &vKey) |
| void | insert (const uint256 &hash) |
| bool | contains (const std::vector< unsigned char > &vKey) const |
| bool | contains (const uint256 &hash) const |
| void | reset () |
Private Attributes | |
| int | nEntriesPerGeneration |
| int | nEntriesThisGeneration |
| int | nGeneration |
| std::vector< uint64_t > | data |
| unsigned int | nTweak |
| int | nHashFuncs |
RollingBloomFilter is a probabilistic "keep track of most recently inserted" set.
Construct it with the number of items to keep track of, and a false-positive rate. Unlike CBloomFilter, by default nTweak is set to a cryptographically secure random value for you. Similarly rather than clear() the method reset() is provided, which also changes nTweak to decrease the impact of false-positives.
contains(item) will always return true if item was one of the last N to 1.5*N insert()'ed ... but may also return true for items that were not inserted.
It needs around 1.8 bytes per element per factor 0.1 of false positive rate. (More accurately: 3/(log(256)*log(2)) * log(1/fpRate) * nElements bytes)
| CRollingBloomFilter::CRollingBloomFilter | ( | const unsigned int | nElements, |
| const double | nFPRate | ||
| ) |
| bool CRollingBloomFilter::contains | ( | const std::vector< unsigned char > & | vKey | ) | const |
| bool CRollingBloomFilter::contains | ( | const uint256 & | hash | ) | const |
| void CRollingBloomFilter::insert | ( | const std::vector< unsigned char > & | vKey | ) |
| void CRollingBloomFilter::insert | ( | const uint256 & | hash | ) |
| void CRollingBloomFilter::reset | ( | ) |
1.8.14