diff options
author | obscuren <geffobscura@gmail.com> | 2014-11-04 18:04:02 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-11-04 18:04:02 +0800 |
commit | f4b717cb9da6113304f243caea6a3799a1aeecf3 (patch) | |
tree | c26eea3def5379f6a87f1302d519aac08d3ecb07 /chain | |
parent | f59a3b67f69b26f969084e0de165435e80bd8e12 (diff) | |
download | go-tangerine-f4b717cb9da6113304f243caea6a3799a1aeecf3.tar.gz go-tangerine-f4b717cb9da6113304f243caea6a3799a1aeecf3.tar.zst go-tangerine-f4b717cb9da6113304f243caea6a3799a1aeecf3.zip |
Bloom validation
Diffstat (limited to 'chain')
-rw-r--r-- | chain/block_manager.go | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/chain/block_manager.go b/chain/block_manager.go index 998b1705d..1a5e3aeb3 100644 --- a/chain/block_manager.go +++ b/chain/block_manager.go @@ -3,6 +3,7 @@ package chain import ( "bytes" "container/list" + "errors" "fmt" "math/big" "os" @@ -168,7 +169,6 @@ done: erroneous = append(erroneous, tx) err = nil continue - //return nil, nil, nil, err } } @@ -177,7 +177,6 @@ done: txGas.Sub(txGas, st.gas) cumulative := new(big.Int).Set(totalUsedGas.Add(totalUsedGas, txGas)) - //receipt := &Receipt{tx, ethutil.CopyBytes(state.Root().([]byte)), accumelative} receipt := &Receipt{ethutil.CopyBytes(state.Root().([]byte)), cumulative, LogsBloom(state.Logs()).Bytes(), state.Logs()} if i < len(block.Receipts()) { @@ -254,8 +253,6 @@ func (sm *BlockManager) Process(block *Block) (err error) { return fmt.Errorf("Error validating receipt sha. Received %x, got %x", block.ReceiptSha, receiptSha) } - // TODO validate bloom - // Block validation if err = sm.ValidateBlock(block); err != nil { statelogger.Errorln("Error validating block:", err) @@ -267,6 +264,10 @@ func (sm *BlockManager) Process(block *Block) (err error) { return err } + if bytes.Compare(CreateBloom(block), block.LogsBloom) != 0 { + return errors.New("Unable to replicate block's bloom") + } + state.Update() if !block.State().Cmp(state) { |