aboutsummaryrefslogtreecommitdiffstats
path: root/core/types
diff options
context:
space:
mode:
authorZsolt Felfoldi <zsfelfoldi@gmail.com>2017-08-19 03:52:20 +0800
committerPéter Szilágyi <peterke@gmail.com>2017-09-06 16:13:13 +0800
commit4ea4d2dc3473afd9d2eda6ef6b359accce1f0946 (patch)
treee651cfc2e3aa36083b333bf34dc3cccef2623f26 /core/types
parent1e67378df879b1ce566f17dd95a3b126056254b5 (diff)
downloaddexon-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.tar
dexon-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.tar.gz
dexon-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.tar.bz2
dexon-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.tar.lz
dexon-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.tar.xz
dexon-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.tar.zst
dexon-4ea4d2dc3473afd9d2eda6ef6b359accce1f0946.zip
core, eth: add bloombit indexer, filter based on it
Diffstat (limited to 'core/types')
-rw-r--r--core/types/bloom9.go14
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[:])