Python implementation of the Ethereum Trie structure
Project description
# Ethereum Bloom Filter
A python implementation of the bloom filter used by Ethereum.
`shell $ pip install ethereum-bloom `
## Usage
The BloomFilter object
`python >>> from eth_bloom import BloomFilter >>> b = BloomFilter() >>> b'a value' in b # check whether a value is present False >>> b.add(b'a value') # add a single value >>> b'a value' in b True >>> int(b) # cast to an integer 3458628712844765018311492773359360516229024449585949240367644166080576879632652362184119765613545163153674691520749911733485693171622325900647078772681584616740134230153806267998022370194756399579977294154062696916779055028045657302214591620589415314367270329881298073237757853875497241510733954508399863880080986777555986663988492288946856978031023631618215522505971170427986911575695114157059398791122395379400594948096 >>> bin(b) # cast to a binary string '0b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' `
You can also add an iterable of items to a bloom filter.
`python >>> b = BloomFilter() >>> b'value-a' in b False >>> b'value-b' in b False >>> b.extend([b'value-a', b'value-b']) >>> b'value-a' in b True >>> b'value-b' in b True `
You can initialize a bloom filter from an iterable of byte strings.
`python >>> b = BloomFilter.from_iterable([b'value-a', b'value-b']) # initialize from an iterable of values. >>> b'value-a' in b True >>> b'value-b' in b True `
You can initialize a bloom filter from the integer representation of the bloom bits.
`python >>> b = BloomFilter(3458628712844765018311492773359360516229024449585949240367644166080576879632652362184119765613545163153674691520749911733485693171622325900647078772681584616740134230153806267998022370194756399579977294154062696916779055028045657302214591620589415314367270329881298073237757853875497241510733954508399863880080986777555986663988492288946856978031023631618215522505971170427986911575695114157059398791122395379400594948096) >>> b'a value' in b True `
You can also merge bloom filters
`python >>> from eth_bloom import BloomFilter >>> b1 = BloomFilter() >>> b2 = BloomFilter() >>> b1.add(b'a') >>> b1.add(b'common') >>> b2.add(b'b') >>> b2.add(b'common') >>> b'a' in b1 True >>> b'b' in b1 False >>> b'common' in b1 True >>> b'a' in b2 False >>> b'b' in b2 True >>> b'common' in b2 True >>> b3 = b1 + b2 # using addition >>> b'a' in b3 True >>> b'b' in b3 True >>> b'common' in b3 True >>> b4 = b1 | b2 # or using bitwise or >>> b'a' in b4 True >>> b'b' in b4 True >>> b'common' in b4 True >>> b1 |= b2 # or using in-place operations (works with += too) >>> b'a' in b1 True >>> b'b' in b1 True >>> b'common' in b1 True `
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ethereum_bloom-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fb4ec709cda0077f856f774833f8cd9581f77d155bda747edb7ec7ac1ab4725 |
|
MD5 | ba8739f8dc1c99dc4425711a75e64922 |
|
BLAKE2b-256 | cc7707674af4d22ad277b3380e5971a2d8d564b3296edeaac78128c2db2f0221 |