5 #ifndef BITCOIN_BLOOM_H 6 #define BITCOIN_BLOOM_H 17 static const unsigned int MAX_BLOOM_FILTER_SIZE = 36000;
18 static const unsigned int MAX_HASH_FUNCS = 50;
47 std::vector<unsigned char>
vData;
54 unsigned int Hash(
unsigned int nHashNum,
const std::vector<unsigned char>& vDataToHash)
const;
66 CBloomFilter(
const unsigned int nElements,
const double nFPRate,
const unsigned int nTweak,
unsigned char nFlagsIn);
71 template <
typename Stream,
typename Operation>
79 void insert(
const std::vector<unsigned char>& vKey);
83 bool contains(
const std::vector<unsigned char>& vKey)
const;
88 void reset(
const unsigned int nNewTweak);
123 void insert(
const std::vector<unsigned char>& vKey);
125 bool contains(
const std::vector<unsigned char>& vKey)
const;
139 #endif // BITCOIN_BLOOM_H CRollingBloomFilter(const unsigned int nElements, const double nFPRate)
bloomflags
First two bits of nFlags control how much IsRelevantAndUpdate actually updates The remaining bits are...
void insert(const std::vector< unsigned char > &vKey)
bool IsRelevantAndUpdate(const CTransaction &tx)
Also adds any outputs which match the filter to the filter (to match their spending txes) ...
BloomFilter is a probabilistic filter which SPV clients provide so that we can filter the transaction...
RollingBloomFilter is a probabilistic "keep track of most recently inserted" set. ...
std::vector< unsigned char > vData
unsigned int Hash(unsigned int nHashNum, const std::vector< unsigned char > &vDataToHash) const
void reset(const unsigned int nNewTweak)
void insert(const std::vector< unsigned char > &vKey)
bool contains(const std::vector< unsigned char > &vKey) const
An outpoint - a combination of a transaction hash and an index n into its vout.
std::vector< uint64_t > data
int nEntriesThisGeneration
void UpdateEmptyFull()
Checks for empty and full filters to avoid wasting cpu.
The basic transaction that is broadcasted on the network and contained in blocks. ...
void SerializationOp(Stream &s, Operation ser_action)
bool IsWithinSizeConstraints() const
True if the size is <= MAX_BLOOM_FILTER_SIZE and the number of hash functions is <= MAX_HASH_FUNCS (c...
bool contains(const std::vector< unsigned char > &vKey) const
int nEntriesPerGeneration