18 static const unsigned int MAX_BLOOM_FILTER_SIZE = 36000;
19 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 void insert(
const std::vector<unsigned char>& vKey);
75 bool contains(
const std::vector<unsigned char>& vKey)
const;
80 void reset(
const unsigned int nNewTweak);
118 void insert(
const std::vector<unsigned char>& vKey);
120 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
std::vector< unsigned char > vData
bool Merge(const CBloomFilter &filter)
Copies filter into this.
void reset(const unsigned int nNewTweak)
void insert(const std::vector< unsigned char > &vKey)
bool MatchesAll() const
Returns true if this filter will match anything.
bool IsRelevantAndUpdate(const CTransaction &tx)
Also adds any outputs which match the filter to the filter (to match their spending txes)
SERIALIZE_METHODS(CBloomFilter, obj)
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(const unsigned int nElements, const double nFPRate)
int nEntriesPerGeneration
int nEntriesThisGeneration
std::vector< uint64_t > data
The basic transaction that is broadcasted on the network and contained in blocks.