diff --git a/core/chain_manager.go b/core/chain_manager.go index f0d3fd4cf..6e8f7b4fe 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -399,7 +399,7 @@ func (self *ChainManager) GetAncestors(block *types.Block, length int) (blocks [ func (bc *ChainManager) setTotalDifficulty(td *big.Int) { bc.blockDb.Put([]byte("LTD"), td.Bytes()) - bc.td = td + bc.td.Set(td) } func (self *ChainManager) CalcTotalDiff(block *types.Block) (*big.Int, error) { diff --git a/core/types/block.go b/core/types/block.go index cf2a7080e..5cdde4462 100644 --- a/core/types/block.go +++ b/core/types/block.go @@ -131,9 +131,12 @@ func NewBlock(parentHash common.Hash, coinbase common.Address, root common.Hash, Extra: extra, GasUsed: new(big.Int), GasLimit: new(big.Int), + Number: new(big.Int), } header.SetNonce(nonce) block := &Block{header: header} + block.Td = new(big.Int) + return block } @@ -302,7 +305,7 @@ func (self *Block) ParentHash() common.Hash { } func (self *Block) Copy() *Block { - block := NewBlock(self.ParentHash(), self.Coinbase(), self.Root(), self.Difficulty(), self.Nonce(), self.header.Extra) + block := NewBlock(self.header.ParentHash, self.Coinbase(), self.Root(), new(big.Int), self.Nonce(), self.header.Extra) block.header.Bloom = self.header.Bloom block.header.TxHash = self.header.TxHash block.transactions = self.transactions @@ -312,9 +315,13 @@ func (self *Block) Copy() *Block { block.header.GasUsed.Set(self.header.GasUsed) block.header.ReceiptHash = self.header.ReceiptHash block.header.Difficulty.Set(self.header.Difficulty) - block.header.Number = self.header.Number + block.header.Number.Set(self.header.Number) block.header.Time = self.header.Time block.header.MixDigest = self.header.MixDigest + if self.Td != nil { + block.Td.Set(self.Td) + } + return block }