diff options
Diffstat (limited to 'core/compaction-chain.go')
-rw-r--r-- | core/compaction-chain.go | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/core/compaction-chain.go b/core/compaction-chain.go index ea26562..ac8c458 100644 --- a/core/compaction-chain.go +++ b/core/compaction-chain.go @@ -30,6 +30,8 @@ import ( var ( ErrBlockNotRegistered = fmt.Errorf( "block not registered") + ErrNotInitiazlied = fmt.Errorf( + "not initialized") ) type compactionChain struct { @@ -49,6 +51,12 @@ func newCompactionChain(gov Governance) *compactionChain { } } +func (cc *compactionChain) init(initBlock *types.Block) { + cc.prevBlockLock.Lock() + defer cc.prevBlockLock.Unlock() + cc.prevBlock = initBlock +} + func (cc *compactionChain) registerBlock(block *types.Block) { if cc.blockRegistered(block.Hash) { return @@ -67,11 +75,10 @@ func (cc *compactionChain) blockRegistered(hash common.Hash) (exist bool) { func (cc *compactionChain) processBlock(block *types.Block) error { prevBlock := cc.lastBlock() - if prevBlock != nil { - block.Finalization.Height = prevBlock.Finalization.Height + 1 - } else { - block.Finalization.Height = 1 + if prevBlock == nil { + return ErrNotInitiazlied } + block.Finalization.Height = prevBlock.Finalization.Height + 1 cc.prevBlockLock.Lock() defer cc.prevBlockLock.Unlock() cc.prevBlock = block |