Fabcoin Core
0.16.2
P2P Digital Currency
|
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 | ( | ) |