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;
70 CBloomFilter(
unsigned int nElements,
double nFPRate,
unsigned int nTweak,
unsigned char nFlagsIn);
75 template <
typename Stream,
typename Operation>
83 void insert(
const std::vector<unsigned char>& vKey);
87 bool contains(
const std::vector<unsigned char>& vKey)
const;
92 void reset(
unsigned int nNewTweak);
127 void insert(
const std::vector<unsigned char>& vKey);
129 bool contains(
const std::vector<unsigned char>& vKey)
const;
bloomflags
First two bits of nFlags control how much IsRelevantAndUpdate actually updates The remaining bits are...
@ BLOOM_UPDATE_P2PUBKEY_ONLY
BloomFilter is a probabilistic filter which SPV clients provide so that we can filter the transaction...
bool IsWithinSizeConstraints() const
True if the size is <= MAX_BLOOM_FILTER_SIZE and the number of hash functions is <= MAX_HASH_FUNCS (c...
unsigned int Hash(unsigned int nHashNum, const std::vector< unsigned char > &vDataToHash) const
void reset(unsigned int nNewTweak)
std::vector< unsigned char > vData
void SerializationOp(Stream &s, Operation ser_action)
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)
void UpdateEmptyFull()
Checks for empty and full filters to avoid wasting cpu.
bool contains(const std::vector< unsigned char > &vKey) const
An outpoint - a combination of a transaction hash and an index n into its vout.
RollingBloomFilter is a probabilistic "keep track of most recently inserted" set.
void insert(const std::vector< unsigned char > &vKey)
bool contains(const std::vector< unsigned char > &vKey) const
CRollingBloomFilter(unsigned int nElements, double nFPRate)
int nEntriesPerGeneration
int nEntriesThisGeneration
std::vector< uint64_t > data
The basic transaction that is broadcasted on the network and contained in blocks.