浏览代码

core: merge using equal block numbers rather than the current block

obscuren 10 年之前
父节点
当前提交
84f1af6413
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      core/chain_manager.go

+ 7 - 1
core/chain_manager.go

@@ -366,6 +366,12 @@ func (self *ChainManager) GetBlockByNumber(num uint64) *types.Block {
 	self.mu.RLock()
 	defer self.mu.RUnlock()
 
+	return self.getBlockByNumber(num)
+
+}
+
+// non blocking version
+func (self *ChainManager) getBlockByNumber(num uint64) *types.Block {
 	key, _ := self.blockDb.Get(append(blockNumPre, big.NewInt(int64(num)).Bytes()...))
 	if len(key) == 0 {
 		return nil
@@ -507,7 +513,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
 						glog.Infof("Split detected. New head #%v (%x) TD=%v, was #%v (%x) TD=%v\n", block.Header().Number, hash[:4], td, cblock.Header().Number, chash[:4], self.td)
 					}
 					// during split we merge two different chains and create the new canonical chain
-					self.merge(cblock, block)
+					self.merge(self.getBlockByNumber(block.NumberU64()), block)
 
 					queue[i] = ChainSplitEvent{block, logs}
 					queueEvent.splitCount++