aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-17 23:05:17 +0800
committerobscuren <geffobscura@gmail.com>2015-03-17 23:05:17 +0800
commitc21293cd91f5cd95a823065eb2345c840feec1a0 (patch)
tree2ba865d420834d4dff1b43d27350b49544e1456a
parent0fa7859b94ddb0a35a6fbdb2c29139b0baaa2bfa (diff)
downloaddexon-c21293cd91f5cd95a823065eb2345c840feec1a0.tar.gz
dexon-c21293cd91f5cd95a823065eb2345c840feec1a0.tar.zst
dexon-c21293cd91f5cd95a823065eb2345c840feec1a0.zip
bloom
-rw-r--r--core/types/bloom9.go7
-rw-r--r--tests/vm/gh_test.go25
-rw-r--r--vm/environment.go2
3 files changed, 20 insertions, 14 deletions
diff --git a/core/types/bloom9.go b/core/types/bloom9.go
index 55bfe2756..59b6c69c3 100644
--- a/core/types/bloom9.go
+++ b/core/types/bloom9.go
@@ -28,7 +28,7 @@ func LogsBloom(logs state.Logs) *big.Int {
}
for _, b := range data {
- bin.Or(bin, common.BigD(bloom9(crypto.Sha3(b[:])).Bytes()))
+ bin.Or(bin, bloom9(crypto.Sha3(b[:])))
}
}
@@ -38,9 +38,10 @@ func LogsBloom(logs state.Logs) *big.Int {
func bloom9(b []byte) *big.Int {
r := new(big.Int)
- for i := 0; i < 16; i += 2 {
+ for i := 0; i < 6; i += 2 {
t := big.NewInt(1)
- b := uint(b[i+1]) + 1024*(uint(b[i])&1)
+ //b := uint(b[i+1]) + 512*(uint(b[i])&1)
+ b := (uint(b[i+1]) + (uint(b[i]) << 8)) & 511
r.Or(r, t.Lsh(t, b))
}
diff --git a/tests/vm/gh_test.go b/tests/vm/gh_test.go
index f352e862d..bce34bb5d 100644
--- a/tests/vm/gh_test.go
+++ b/tests/vm/gh_test.go
@@ -2,11 +2,13 @@ package vm
import (
"bytes"
+ "fmt"
"math/big"
"strconv"
"testing"
"github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/state"
@@ -80,6 +82,9 @@ func RunVmTest(p string, t *testing.T) {
helper.CreateFileTests(t, p, &tests)
for name, test := range tests {
+ if name != "log2_nonEmptyMem" {
+ continue
+ }
db, _ := ethdb.NewMemDatabase()
statedb := state.New(common.Hash{}, db)
for addr, account := range test.Pre {
@@ -167,16 +172,16 @@ func RunVmTest(p string, t *testing.T) {
if len(test.Logs) != len(logs) {
t.Errorf("log length mismatch. Expected %d, got %d", len(test.Logs), len(logs))
} else {
- /*
- fmt.Println("A", test.Logs)
- fmt.Println("B", logs)
- for i, log := range test.Logs {
- genBloom := common.LeftPadBytes(types.LogsBloom(state.Logs{logs[i]}).Bytes(), 256)
- if !bytes.Equal(genBloom, common.Hex2Bytes(log.BloomF)) {
- t.Errorf("bloom mismatch")
- }
- }
- */
+ fmt.Println("A", test.Logs)
+ fmt.Println("B", logs)
+ for i, log := range test.Logs {
+ genBloom := common.LeftPadBytes(types.LogsBloom(state.Logs{logs[i]}).Bytes(), 256)
+ fmt.Println("A BLOOM", log.BloomF)
+ fmt.Printf("B BLOOM %x\n", genBloom)
+ if !bytes.Equal(genBloom, common.Hex2Bytes(log.BloomF)) {
+ t.Errorf("'%s' bloom mismatch", name)
+ }
+ }
}
}
//statedb.Trie().PrintRoot()
diff --git a/vm/environment.go b/vm/environment.go
index fdce526ee..5d493166c 100644
--- a/vm/environment.go
+++ b/vm/environment.go
@@ -88,5 +88,5 @@ func (self *Log) RlpData() interface{} {
*/
func (self *Log) String() string {
- return fmt.Sprintf("[A=%x T=%x D=%x]", self.address, self.topics, self.data)
+ return fmt.Sprintf("{%x %x %x}", self.address, self.data, self.topics)
}