obscuren %!s(int64=11) %!d(string=hai) anos
pai
achega
56aa24002d
Modificáronse 5 ficheiros con 20 adicións e 21 borrados
  1. 4 1
      block_pool.go
  2. 1 1
      chain/block.go
  3. 10 10
      chain/block_manager.go
  4. 4 4
      chain/bloom9.go
  5. 1 5
      chain/receipt.go

+ 4 - 1
block_pool.go

@@ -323,7 +323,10 @@ out:
 
 					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.
 					self.eth.BlacklistPeer(self.peer)
 					self.peer.StopWithReason(DiscBadPeer)

+ 1 - 1
chain/block.go

@@ -238,7 +238,7 @@ func (block *Block) SetUncles(uncles []*Block) {
 func (self *Block) SetReceipts(receipts Receipts) {
 	self.receipts = receipts
 	self.ReceiptSha = DeriveSha(receipts)
-	self.LogsBloom = CreateBloom(self)
+	self.LogsBloom = CreateBloom(receipts)
 }
 
 func (self *Block) SetTransactions(txs Transactions) {

+ 10 - 10
chain/block_manager.go

@@ -159,8 +159,8 @@ done:
 
 		txGas.Sub(txGas, st.gas)
 		cumulative := new(big.Int).Set(totalUsedGas.Add(totalUsedGas, txGas))
-		bloom := ethutil.LeftPadBytes(LogsBloom(state.Logs()).Bytes(), 64)
-		receipt := &Receipt{ethutil.CopyBytes(state.Root()), cumulative, bloom, state.Logs()}
+		receipt := &Receipt{ethutil.CopyBytes(state.Root()), cumulative, nil /*bloom*/, state.Logs()}
+		receipt.Bloom = CreateBloom(Receipts{receipt})
 
 		// Notify all subscribers
 		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)
 	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
 	}
 
 	receiptSha := DeriveSha(receipts)
 	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
 	}
 
 	// Block validation
 	if err = sm.ValidateBlock(block, parent); err != nil {
-		statelogger.Errorln("Error validating block:", err)
+		statelogger.Errorln("validating block:", err)
 		return
 	}
 
 	if err = sm.AccumelateRewards(state, block, parent); err != nil {
-		statelogger.Errorln("Error accumulating reward", err)
+		statelogger.Errorln("accumulating reward", err)
 		return
 	}
 
-	block.receipts = receipts
-	rbloom := CreateBloom(block)
+	block.receipts = receipts // although this isn't necessary it be in the future
+	rbloom := CreateBloom(receipts)
 	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
 	}
 
 	state.Update()
 
 	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
 	}
 

+ 4 - 4
chain/bloom9.go

@@ -8,16 +8,16 @@ import (
 	"github.com/ethereum/go-ethereum/state"
 )
 
-func CreateBloom(block *Block) []byte {
+func CreateBloom(receipts Receipts) []byte {
 	bin := new(big.Int)
-	for _, receipt := range block.Receipts() {
-		bin.Or(bin, LogsBloom(receipt.logs))
+	for _, receipt := range receipts {
+		bin.Or(bin, logsBloom(receipt.logs))
 	}
 
 	return ethutil.LeftPadBytes(bin.Bytes(), 64)
 }
 
-func LogsBloom(logs state.Logs) *big.Int {
+func logsBloom(logs state.Logs) *big.Int {
 	bin := new(big.Int)
 	for _, log := range logs {
 		data := [][]byte{log.Address}

+ 1 - 5
chain/receipt.go

@@ -51,11 +51,7 @@ func (self *Receipt) Cmp(other *Receipt) bool {
 }
 
 func (self *Receipt) String() string {
-	return fmt.Sprintf(`Receipt: %x
-cumulative gas: %v
-bloom: %x
-logs: %v
-rlp: %x`, self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs, self.RlpEncode())
+	return fmt.Sprintf("receipt{med=%x cgas=%v bloom=%x logs=%v}", self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs)
 }
 
 type Receipts []*Receipt