Module bitcoin::util::bip158[][src]

Expand description

BIP158 Compact Block Filters for Light Clients

Implements a structure for compact filters on block data, for use in the BIP 157 light client protocol. The filter construction proposed is an alternative to Bloom filters, as used in BIP 37, that minimizes filter size by using Golomb-Rice coding for compression.

Example

fn get_script_for_coin(coin: &OutPoint) -> Result<Script, BlockFilterError> {
  // get utxo ...
}
  
// create a block filter for a block (server side)
let filter = BlockFilter::new_script_filter(&block, get_script_for_coin)?;

// or create a filter from known raw data
let filter = BlockFilter::new(content);
  
// read and evaluate a filter
  
let query: Iterator<Item=Script> = // .. some scripts you care about
if filter.match_any(&block_hash, &mut query.map(|s| s.as_bytes())) {
  // get this block
}

Structs

BitStreamReader

Bitwise stream reader

BitStreamWriter

Bitwise stream writer

BlockFilter

a computed or read block filter

BlockFilterReader

Reads and interpret a block filter

BlockFilterWriter

Compiles and writes a block filter

GCSFilterReader

Golomb-Rice encoded filter reader

GCSFilterWriter

Colomb-Rice encoded filter writer

Enums

Error

Errors for blockfilter