From 611113e9678b8118e5ec624d9e9f0999f1d4a081 Mon Sep 17 00:00:00 2001 From: gary rong Date: Mon, 27 May 2019 17:05:45 +0800 Subject: [PATCH] core: never delete genesis block (#19617) --- core/blockchain.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/core/blockchain.go b/core/blockchain.go index 7ab6806c2..60707281c 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -1076,8 +1076,11 @@ func (bc *BlockChain) InsertReceiptChain(blockChain types.Blocks, receiptChain [ // Wipe out canonical block data. for _, block := range append(deleted, blockChain...) { - rawdb.DeleteBlockWithoutNumber(batch, block.Hash(), block.NumberU64()) - rawdb.DeleteCanonicalHash(batch, block.NumberU64()) + // Always keep genesis block in active database. + if block.NumberU64() != 0 { + rawdb.DeleteBlockWithoutNumber(batch, block.Hash(), block.NumberU64()) + rawdb.DeleteCanonicalHash(batch, block.NumberU64()) + } } if err := batch.Write(); err != nil { return 0, err @@ -1086,8 +1089,11 @@ func (bc *BlockChain) InsertReceiptChain(blockChain types.Blocks, receiptChain [ // Wipe out side chain too. for _, block := range append(deleted, blockChain...) { - for _, hash := range rawdb.ReadAllHashes(bc.db, block.NumberU64()) { - rawdb.DeleteBlock(batch, hash, block.NumberU64()) + // Always keep genesis block in active database. + if block.NumberU64() != 0 { + for _, hash := range rawdb.ReadAllHashes(bc.db, block.NumberU64()) { + rawdb.DeleteBlock(batch, hash, block.NumberU64()) + } } } if err := batch.Write(); err != nil {