diff options
author | Zsolt Felfoldi <zsfelfoldi@gmail.com> | 2017-08-19 03:52:20 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2017-09-06 16:13:13 +0800 |
commit | 4ea4d2dc3473afd9d2eda6ef6b359accce1f0946 (patch) | |
tree | e651cfc2e3aa36083b333bf34dc3cccef2623f26 /core/types | |
parent | 1e67378df879b1ce566f17dd95a3b126056254b5 (diff) | |
download | go-tangerine-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.tar.gz go-tangerine-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.tar.zst go-tangerine-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.zip |
core, eth: add bloombit indexer, filter based on it
Diffstat (limited to 'core/types')
-rw-r--r-- | core/types/bloom9.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/core/types/bloom9.go b/core/types/bloom9.go index 60aacc301..bdc6e60e7 100644 --- a/core/types/bloom9.go +++ b/core/types/bloom9.go @@ -106,6 +106,20 @@ func LogsBloom(logs []*Log) *big.Int { return bin } +type BloomIndexList [3]uint + +// BloomIndexes returns the bloom filter bit indexes belonging to the given key +func BloomIndexes(b []byte) BloomIndexList { + b = crypto.Keccak256(b[:]) + + var r [3]uint + for i, _ := range r { + r[i] = (uint(b[i+i+1]) + (uint(b[i+i]) << 8)) & 2047 + } + + return r +} + func bloom9(b []byte) *big.Int { b = crypto.Keccak256(b[:]) |