aboutsummaryrefslogtreecommitdiffstats
path: root/core/types/bloom9.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-18 01:00:03 +0800
committerobscuren <geffobscura@gmail.com>2015-03-18 01:00:03 +0800
commit86661de07746cd4e4ad8d016afee9fa8074aa141 (patch)
treeb22bf25b04536ef1cdfce4e92e717b1cd83ebfd9 /core/types/bloom9.go
parentc21293cd91f5cd95a823065eb2345c840feec1a0 (diff)
downloaddexon-86661de07746cd4e4ad8d016afee9fa8074aa141.tar
dexon-86661de07746cd4e4ad8d016afee9fa8074aa141.tar.gz
dexon-86661de07746cd4e4ad8d016afee9fa8074aa141.tar.bz2
dexon-86661de07746cd4e4ad8d016afee9fa8074aa141.tar.lz
dexon-86661de07746cd4e4ad8d016afee9fa8074aa141.tar.xz
dexon-86661de07746cd4e4ad8d016afee9fa8074aa141.tar.zst
dexon-86661de07746cd4e4ad8d016afee9fa8074aa141.zip
Fixed tests and bloom
Diffstat (limited to 'core/types/bloom9.go')
-rw-r--r--core/types/bloom9.go17
1 files changed, 10 insertions, 7 deletions
diff --git a/core/types/bloom9.go b/core/types/bloom9.go
index 59b6c69c3..64a8ff49a 100644
--- a/core/types/bloom9.go
+++ b/core/types/bloom9.go
@@ -20,15 +20,15 @@ func CreateBloom(receipts Receipts) Bloom {
func LogsBloom(logs state.Logs) *big.Int {
bin := new(big.Int)
for _, log := range logs {
- data := make([]common.Hash, len(log.Topics())+1)
- data[0] = log.Address().Hash()
+ data := make([]common.Hash, len(log.Topics()))
+ bin.Or(bin, bloom9(log.Address().Bytes()))
for i, topic := range log.Topics() {
- data[i+1] = topic
+ data[i] = topic
}
for _, b := range data {
- bin.Or(bin, bloom9(crypto.Sha3(b[:])))
+ bin.Or(bin, bloom9(b[:]))
}
}
@@ -36,21 +36,24 @@ func LogsBloom(logs state.Logs) *big.Int {
}
func bloom9(b []byte) *big.Int {
+ b = crypto.Sha3(b[:])
+
r := new(big.Int)
for i := 0; i < 6; i += 2 {
t := big.NewInt(1)
- //b := uint(b[i+1]) + 512*(uint(b[i])&1)
- b := (uint(b[i+1]) + (uint(b[i]) << 8)) & 511
+ b := (uint(b[i+1]) + (uint(b[i]) << 8)) & 2047
r.Or(r, t.Lsh(t, b))
}
return r
}
+var Bloom9 = bloom9
+
func BloomLookup(bin Bloom, topic common.Hash) bool {
bloom := bin.Big()
- cmp := bloom9(crypto.Sha3(topic[:]))
+ cmp := bloom9(topic[:])
return bloom.And(bloom, cmp).Cmp(cmp) == 0
}