fixed bad uncles
This commit is contained in:
		
							parent
							
								
									0330077d76
								
							
						
					
					
						commit
						c8e9ca0483
					
				| @ -471,7 +471,8 @@ func (self *peer) getBlockHashes() bool { | ||||
| 			self.addError(ErrInvalidBlock, "%v", err) | ||||
| 			self.bp.status.badPeers[self.id]++ | ||||
| 		} else { | ||||
| 			if self.currentBlock.Td != nil { | ||||
| 			// XXX added currentBlock check (?)
 | ||||
| 			if self.currentBlock != nil && self.currentBlock.Td != nil { | ||||
| 				if self.td.Cmp(self.currentBlock.Td) != 0 { | ||||
| 					self.addError(ErrIncorrectTD, "on block %x", self.currentBlockHash) | ||||
| 					self.bp.status.badPeers[self.id]++ | ||||
|  | ||||
| @ -7,12 +7,12 @@ import ( | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/ethereum/go-ethereum/common" | ||||
| 	"github.com/ethereum/go-ethereum/core/state" | ||||
| 	"github.com/ethereum/go-ethereum/core/types" | ||||
| 	"github.com/ethereum/go-ethereum/event" | ||||
| 	"github.com/ethereum/go-ethereum/logger" | ||||
| 	"github.com/ethereum/go-ethereum/pow" | ||||
| 	"github.com/ethereum/go-ethereum/rlp" | ||||
| 	"github.com/ethereum/go-ethereum/core/state" | ||||
| 	"gopkg.in/fatih/set.v0" | ||||
| ) | ||||
| 
 | ||||
| @ -243,7 +243,7 @@ func (sm *BlockProcessor) processWithParent(block, parent *types.Block) (td *big | ||||
| 		chainlogger.Infof("found possible uncle block #%d (%x...)\n", header.Number, block.Hash().Bytes()[0:4]) | ||||
| 		return td, nil, BlockEqualTSErr | ||||
| 	} else { | ||||
| 		chainlogger.Infof("processed block #%d (%x...)\n", header.Number, block.Hash().Bytes()[0:4]) | ||||
| 		chainlogger.Infof("processed block #%d (%d TXs %d UNCs) (%x...)\n", header.Number, len(block.Transactions()), len(block.Uncles()), block.Hash().Bytes()[0:4]) | ||||
| 	} | ||||
| 
 | ||||
| 	return td, state.Logs(), nil | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -9,11 +9,11 @@ import ( | ||||
| 
 | ||||
| 	"github.com/ethereum/go-ethereum/common" | ||||
| 	"github.com/ethereum/go-ethereum/core" | ||||
| 	"github.com/ethereum/go-ethereum/core/state" | ||||
| 	"github.com/ethereum/go-ethereum/core/types" | ||||
| 	"github.com/ethereum/go-ethereum/event" | ||||
| 	"github.com/ethereum/go-ethereum/logger" | ||||
| 	"github.com/ethereum/go-ethereum/pow" | ||||
| 	"github.com/ethereum/go-ethereum/core/state" | ||||
| 	"gopkg.in/fatih/set.v0" | ||||
| ) | ||||
| 
 | ||||
| @ -199,6 +199,8 @@ func (self *worker) push() { | ||||
| func (self *worker) commitNewWork() { | ||||
| 	self.mu.Lock() | ||||
| 	defer self.mu.Unlock() | ||||
| 	self.uncleMu.Lock() | ||||
| 	defer self.uncleMu.Unlock() | ||||
| 
 | ||||
| 	block := self.chain.NewBlock(self.coinbase) | ||||
| 
 | ||||
| @ -241,7 +243,10 @@ gasLimit: | ||||
| 	} | ||||
| 	self.eth.TxPool().RemoveSet(remove) | ||||
| 
 | ||||
| 	var uncles []*types.Header | ||||
| 	var ( | ||||
| 		uncles    []*types.Header | ||||
| 		badUncles []common.Hash | ||||
| 	) | ||||
| 	for hash, uncle := range self.possibleUncles { | ||||
| 		if len(uncles) == 2 { | ||||
| 			break | ||||
| @ -250,12 +255,16 @@ gasLimit: | ||||
| 		if err := self.commitUncle(uncle.Header()); err != nil { | ||||
| 			minerlogger.Infof("Bad uncle found and will be removed (%x)\n", hash[:4]) | ||||
| 			minerlogger.Debugln(uncle) | ||||
| 			badUncles = append(badUncles, hash) | ||||
| 		} else { | ||||
| 			minerlogger.Infof("commiting %x as uncle\n", hash[:4]) | ||||
| 			uncles = append(uncles, uncle.Header()) | ||||
| 		} | ||||
| 	} | ||||
| 	minerlogger.Infof("commit new work with %d txs & %d uncles\n", tcount, len(uncles)) | ||||
| 	for _, hash := range badUncles { | ||||
| 		delete(self.possibleUncles, hash) | ||||
| 	} | ||||
| 
 | ||||
| 	self.current.block.SetUncles(uncles) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user