Skip to content

A JavaScript bloom filter suitable for use in Bitcoin Connection Bloom Filtering

License

Notifications You must be signed in to change notification settings

isabella232/bloom-filter

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bloom-filter

A bloom filter suitable for use in Bitcoin Connection Bloom Filtering as part of BIP37.

Get Started

npm install bloom-filter
var BloomFilter = require('bloom-filter');

// convenient method to initialize the filter
var numberOfElements = 3;
var falsePositiveRate = 0.01;
var filter = BloomFilter.create(numberOfElements, falsePositiveRate);

// elements
var a = new Buffer('99108ad8ed9bb6274d3980bab5a85c048f0950c8', 'hex');
var b = new Buffer('19108ad8ed9bb6274d3980bab5a85c048f0950c8', 'hex');
var c = new Buffer('b5a2c786d9ef4658287ced5914b37a1b4aa32eee', 'hex');

// insert elements
filter.insert(a);
filter.insert(b);

// check if elements match
assert(!filter.contains(c));
assert(filter.contains(a));

// reinstantiate from an object
var serialized = filter.toObject();
var filter = new BloomFilter(serialized);

// initialize directly
var filter = new BloomFilter({
  vData: [], // the data of the filter
  nHashFuncs: 3, // the number of hash functions to use
  nTweak: 2147483649, // the seed used for the hash fuctions
  nFlags: 0 // flags used to update the filter when matched
});

Browser

To build a browser version you can run:

cd /path/to/bloom-filter
browserify --require ./lib/index.js:bloom-filter -o bloom-filter.js
<!doctype html>
<html lang=en-us>
  <head>
    <meta charset=utf-8>
    <title>Bloom Filter</title>
    <script src="bloom-filter.js"></script>
    <script>
      var BloomFilter = require('bloom-filter');
      console.log(BloomFilter);
    </script>
  </head>
  <body>
  </body>
</html>

License

Code released under the MIT license.

Copyright 2015 BitPay, Inc.

About

A JavaScript bloom filter suitable for use in Bitcoin Connection Bloom Filtering

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%