bloom
This commit is contained in:
parent
0fa7859b94
commit
c21293cd91
@ -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))
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user