5 #ifndef BITCOIN_BLOCKFILTER_H 6 #define BITCOIN_BLOCKFILTER_H 10 #include <unordered_set> 26 typedef std::vector<unsigned char>
Element;
27 typedef std::unordered_set<Element, ByteVectorHash>
ElementSet;
61 GCSFilter(
const Params& params, std::vector<unsigned char> encoded_filter);
124 std::vector<unsigned char> filter);
144 template <
typename Stream>
151 template <
typename Stream>
153 std::vector<unsigned char> encoded_filter;
164 throw std::ios_base::failure(
"unknown filter_type");
170 #endif // BITCOIN_BLOCKFILTER_H GCSFilter m_filter
Definition: blockfilter.h:114
const std::vector< BlockFilterType > & AllBlockFilterTypes()
Definition: blockfilter.cpp:224
bool MatchAny(const ElementSet &elements) const
Definition: blockfilter.cpp:201
uint64_t m_siphash_k1
Definition: blockfilter.h:32
constexpr uint32_t BASIC_FILTER_M
Definition: blockfilter.h:85
const std::string & BlockFilterTypeName(BlockFilterType filter_type)
Definition: blockfilter.cpp:207
BlockFilterType GetFilterType() const
Definition: blockfilter.h:129
constexpr uint8_t BASIC_FILTER_P
Definition: blockfilter.h:84
uint32_t m_M
Inverse false positive rate.
Definition: blockfilter.h:34
void Serialize(Stream &s) const
Definition: blockfilter.h:145
bool BlockFilterTypeByName(const std::string &name, BlockFilterType &filter_type)
Definition: blockfilter.cpp:214
uint8_t m_P
Golomb-Rice coding parameter.
Definition: blockfilter.h:33
const uint256 & GetBlockHash() const
Definition: blockfilter.h:130
GCSFilter(const Params ¶ms=Params())
Definition: blockfilter.cpp:106
unsigned char uint8_t
Definition: stdint.h:19
const GCSFilter & GetFilter() const
Definition: blockfilter.h:131
Definition: blockfilter.h:29
std::vector< uint64_t > BuildHashedSet(const ElementSet &elements) const
Definition: blockfilter.cpp:95
void Unserialize(Stream &s)
Definition: blockfilter.h:152
const Params & GetParams() const
Definition: blockfilter.h:67
BlockFilterType
Definition: blockfilter.h:87
bool Match(const Element &element) const
Definition: blockfilter.cpp:195
unsigned int uint32_t
Definition: stdint.h:21
const char * name
Definition: rest.cpp:39
BlockFilterType m_filter_type
Definition: blockfilter.h:112
const std::vector< unsigned char > & GetEncodedFilter() const
Definition: blockfilter.h:133
unsigned long long uint64_t
Definition: stdint.h:22
uint256 GetHash() const
Compute the filter hash.
Definition: blockfilter.cpp:319
Params(uint64_t siphash_k0=0, uint64_t siphash_k1=0, uint8_t P=0, uint32_t M=1)
Definition: blockfilter.h:36
bool MatchInternal(const uint64_t *sorted_element_hashes, size_t size) const
Definition: blockfilter.cpp:163
const std::string & ListBlockFilterTypes()
Definition: blockfilter.cpp:239
uint32_t m_N
Number of elements in the filter.
Definition: blockfilter.h:43
uint256 m_block_hash
Definition: blockfilter.h:113
std::unordered_set< Element, ByteVectorHash > ElementSet
Definition: blockfilter.h:27
Params m_params
Definition: blockfilter.h:42
uint64_t HashToRange(const Element &element) const
Definition: blockfilter.cpp:87
Definition: blockfilter.h:23
uint64_t m_siphash_k0
Definition: blockfilter.h:31
Definition: uint256.h:121
uint256 ComputeHeader(const uint256 &prev_header) const
Compute the filter header given the previous one.
Definition: blockfilter.cpp:328
const CChainParams & Params()
Definition: chainparams.cpp:399
const std::vector< unsigned char > & GetEncoded() const
Definition: blockfilter.h:68
std::vector< unsigned char > Element
Definition: blockfilter.h:26
uint64_t m_F
Range of element hashes, F = N * M.
Definition: blockfilter.h:44
uint32_t GetN() const
Definition: blockfilter.h:66
bool BuildParams(GCSFilter::Params ¶ms) const
Definition: blockfilter.cpp:303
Definition: blockfilter.h:109
std::vector< unsigned char > m_encoded
Definition: blockfilter.h:45