aboutsummaryrefslogtreecommitdiffstats
path: root/core/compaction-chain.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/compaction-chain.go')
-rw-r--r--core/compaction-chain.go15
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