This commit is contained in:
obscuren 2015-03-17 16:05:17 +01:00
parent 0fa7859b94
commit c21293cd91
3 changed files with 20 additions and 14 deletions

View File

@ -28,7 +28,7 @@ func LogsBloom(logs state.Logs) *big.Int {
} }
for _, b := range data { 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 { func bloom9(b []byte) *big.Int {
r := new(big.Int) r := new(big.Int)
for i := 0; i < 16; i += 2 { for i := 0; i < 6; i += 2 {
t := big.NewInt(1) 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)) r.Or(r, t.Lsh(t, b))
} }

View File

@ -2,11 +2,13 @@ package vm
import ( import (
"bytes" "bytes"
"fmt"
"math/big" "math/big"
"strconv" "strconv"
"testing" "testing"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/state" "github.com/ethereum/go-ethereum/state"
@ -80,6 +82,9 @@ func RunVmTest(p string, t *testing.T) {
helper.CreateFileTests(t, p, &tests) helper.CreateFileTests(t, p, &tests)
for name, test := range tests { for name, test := range tests {
if name != "log2_nonEmptyMem" {
continue
}
db, _ := ethdb.NewMemDatabase() db, _ := ethdb.NewMemDatabase()
statedb := state.New(common.Hash{}, db) statedb := state.New(common.Hash{}, db)
for addr, account := range test.Pre { for addr, account := range test.Pre {
@ -167,16 +172,16 @@ func RunVmTest(p string, t *testing.T) {
if len(test.Logs) != len(logs) { if len(test.Logs) != len(logs) {
t.Errorf("log length mismatch. Expected %d, got %d", len(test.Logs), len(logs)) t.Errorf("log length mismatch. Expected %d, got %d", len(test.Logs), len(logs))
} else { } else {
/* fmt.Println("A", test.Logs)
fmt.Println("A", test.Logs) fmt.Println("B", logs)
fmt.Println("B", logs) for i, log := range test.Logs {
for i, log := range test.Logs { genBloom := common.LeftPadBytes(types.LogsBloom(state.Logs{logs[i]}).Bytes(), 256)
genBloom := common.LeftPadBytes(types.LogsBloom(state.Logs{logs[i]}).Bytes(), 256) fmt.Println("A BLOOM", log.BloomF)
if !bytes.Equal(genBloom, common.Hex2Bytes(log.BloomF)) { fmt.Printf("B BLOOM %x\n", genBloom)
t.Errorf("bloom mismatch") if !bytes.Equal(genBloom, common.Hex2Bytes(log.BloomF)) {
} t.Errorf("'%s' bloom mismatch", name)
} }
*/ }
} }
} }
//statedb.Trie().PrintRoot() //statedb.Trie().PrintRoot()

View File

@ -88,5 +88,5 @@ func (self *Log) RlpData() interface{} {
*/ */
func (self *Log) String() string { 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)
} }