Clean up
This commit is contained in:
parent
711be7009e
commit
56aa24002d
@ -323,7 +323,10 @@ out:
|
|||||||
|
|
||||||
self.Reset()
|
self.Reset()
|
||||||
|
|
||||||
poollogger.Debugf("Punishing peer for supplying bad chain (%v)\n", self.peer.conn.RemoteAddr())
|
if self.peer != nil && self.peer.conn != nil {
|
||||||
|
poollogger.Debugf("Punishing peer for supplying bad chain (%v)\n", self.peer.conn.RemoteAddr())
|
||||||
|
}
|
||||||
|
|
||||||
// This peer gave us bad hashes and made us fetch a bad chain, therefor he shall be punished.
|
// This peer gave us bad hashes and made us fetch a bad chain, therefor he shall be punished.
|
||||||
self.eth.BlacklistPeer(self.peer)
|
self.eth.BlacklistPeer(self.peer)
|
||||||
self.peer.StopWithReason(DiscBadPeer)
|
self.peer.StopWithReason(DiscBadPeer)
|
||||||
|
@ -238,7 +238,7 @@ func (block *Block) SetUncles(uncles []*Block) {
|
|||||||
func (self *Block) SetReceipts(receipts Receipts) {
|
func (self *Block) SetReceipts(receipts Receipts) {
|
||||||
self.receipts = receipts
|
self.receipts = receipts
|
||||||
self.ReceiptSha = DeriveSha(receipts)
|
self.ReceiptSha = DeriveSha(receipts)
|
||||||
self.LogsBloom = CreateBloom(self)
|
self.LogsBloom = CreateBloom(receipts)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Block) SetTransactions(txs Transactions) {
|
func (self *Block) SetTransactions(txs Transactions) {
|
||||||
|
@ -159,8 +159,8 @@ done:
|
|||||||
|
|
||||||
txGas.Sub(txGas, st.gas)
|
txGas.Sub(txGas, st.gas)
|
||||||
cumulative := new(big.Int).Set(totalUsedGas.Add(totalUsedGas, txGas))
|
cumulative := new(big.Int).Set(totalUsedGas.Add(totalUsedGas, txGas))
|
||||||
bloom := ethutil.LeftPadBytes(LogsBloom(state.Logs()).Bytes(), 64)
|
receipt := &Receipt{ethutil.CopyBytes(state.Root()), cumulative, nil /*bloom*/, state.Logs()}
|
||||||
receipt := &Receipt{ethutil.CopyBytes(state.Root()), cumulative, bloom, state.Logs()}
|
receipt.Bloom = CreateBloom(Receipts{receipt})
|
||||||
|
|
||||||
// Notify all subscribers
|
// Notify all subscribers
|
||||||
go self.eth.EventMux().Post(TxPostEvent{tx})
|
go self.eth.EventMux().Post(TxPostEvent{tx})
|
||||||
@ -217,38 +217,38 @@ func (sm *BlockManager) ProcessWithParent(block, parent *Block) (td *big.Int, me
|
|||||||
|
|
||||||
txSha := DeriveSha(block.transactions)
|
txSha := DeriveSha(block.transactions)
|
||||||
if bytes.Compare(txSha, block.TxSha) != 0 {
|
if bytes.Compare(txSha, block.TxSha) != 0 {
|
||||||
err = fmt.Errorf("Error validating transaction root. Received %x, got %x", block.TxSha, txSha)
|
err = fmt.Errorf("validating transaction root. received=%x got=%x", block.TxSha, txSha)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
receiptSha := DeriveSha(receipts)
|
receiptSha := DeriveSha(receipts)
|
||||||
if bytes.Compare(receiptSha, block.ReceiptSha) != 0 {
|
if bytes.Compare(receiptSha, block.ReceiptSha) != 0 {
|
||||||
err = fmt.Errorf("Error validating receipt root. Received %x, got %x", block.ReceiptSha, receiptSha)
|
err = fmt.Errorf("validating receipt root. received=%x got=%x", block.ReceiptSha, receiptSha)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Block validation
|
// Block validation
|
||||||
if err = sm.ValidateBlock(block, parent); err != nil {
|
if err = sm.ValidateBlock(block, parent); err != nil {
|
||||||
statelogger.Errorln("Error validating block:", err)
|
statelogger.Errorln("validating block:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = sm.AccumelateRewards(state, block, parent); err != nil {
|
if err = sm.AccumelateRewards(state, block, parent); err != nil {
|
||||||
statelogger.Errorln("Error accumulating reward", err)
|
statelogger.Errorln("accumulating reward", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
block.receipts = receipts
|
block.receipts = receipts // although this isn't necessary it be in the future
|
||||||
rbloom := CreateBloom(block)
|
rbloom := CreateBloom(receipts)
|
||||||
if bytes.Compare(rbloom, block.LogsBloom) != 0 {
|
if bytes.Compare(rbloom, block.LogsBloom) != 0 {
|
||||||
err = fmt.Errorf("unable to replicate block's bloom: %x", rbloom)
|
err = fmt.Errorf("unable to replicate block's bloom=%x", rbloom)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
state.Update()
|
state.Update()
|
||||||
|
|
||||||
if !block.State().Cmp(state) {
|
if !block.State().Cmp(state) {
|
||||||
err = fmt.Errorf("Invalid merkle root.\nrec: %x\nis: %x", block.State().Root(), state.Root())
|
err = fmt.Errorf("invalid merkle root. received=%x got=%x", block.Root(), state.Root())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,16 +8,16 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/state"
|
"github.com/ethereum/go-ethereum/state"
|
||||||
)
|
)
|
||||||
|
|
||||||
func CreateBloom(block *Block) []byte {
|
func CreateBloom(receipts Receipts) []byte {
|
||||||
bin := new(big.Int)
|
bin := new(big.Int)
|
||||||
for _, receipt := range block.Receipts() {
|
for _, receipt := range receipts {
|
||||||
bin.Or(bin, LogsBloom(receipt.logs))
|
bin.Or(bin, logsBloom(receipt.logs))
|
||||||
}
|
}
|
||||||
|
|
||||||
return ethutil.LeftPadBytes(bin.Bytes(), 64)
|
return ethutil.LeftPadBytes(bin.Bytes(), 64)
|
||||||
}
|
}
|
||||||
|
|
||||||
func LogsBloom(logs state.Logs) *big.Int {
|
func logsBloom(logs state.Logs) *big.Int {
|
||||||
bin := new(big.Int)
|
bin := new(big.Int)
|
||||||
for _, log := range logs {
|
for _, log := range logs {
|
||||||
data := [][]byte{log.Address}
|
data := [][]byte{log.Address}
|
||||||
|
@ -51,11 +51,7 @@ func (self *Receipt) Cmp(other *Receipt) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Receipt) String() string {
|
func (self *Receipt) String() string {
|
||||||
return fmt.Sprintf(`Receipt: %x
|
return fmt.Sprintf("receipt{med=%x cgas=%v bloom=%x logs=%v}", self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs)
|
||||||
cumulative gas: %v
|
|
||||||
bloom: %x
|
|
||||||
logs: %v
|
|
||||||
rlp: %x`, self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs, self.RlpEncode())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Receipts []*Receipt
|
type Receipts []*Receipt
|
||||||
|
Loading…
Reference in New Issue
Block a user