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
File details
Details for the file ethereum-bloom-0.4.0.tar.gz
.
File metadata
- Download URL: ethereum-bloom-0.4.0.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b14d48901b82809091f3ef7d8aa4501501d5ea5ba90b1ef1279678f8fe492548 |
|
MD5 | ff29fc79f75f155f8c5d22e4a1ee43b6 |
|
BLAKE2b-256 | 51b9f2a417944b260189e774e549f169eea219fc818a320ae0f6049af368e8c1 |
File details
Details for the file ethereum_bloom-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: ethereum_bloom-0.4.0-py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fb4ec709cda0077f856f774833f8cd9581f77d155bda747edb7ec7ac1ab4725 |
|
MD5 | ba8739f8dc1c99dc4425711a75e64922 |
|
BLAKE2b-256 | cc7707674af4d22ad277b3380e5971a2d8d564b3296edeaac78128c2db2f0221 |