From 6d62f4b1514f3f672cbe2ec6b51bd6cacbd9c50a Mon Sep 17 00:00:00 2001 From: jiangzehua <1092431698@qq.com> Date: Wed, 1 Jan 2025 13:03:58 +0800 Subject: [PATCH] fix(dpos): fixed an issue of CheckBlockContext --- blockchain/blockvalidator.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/blockchain/blockvalidator.go b/blockchain/blockvalidator.go index 46b22af12..98ec2ce37 100644 --- a/blockchain/blockvalidator.go +++ b/blockchain/blockvalidator.go @@ -339,7 +339,20 @@ func (b *BlockChain) CheckBlockContext(block *Block, prevNode *BlockNode) error if block.Height >= b.chainParams.DPoSConfiguration.RecordSponsorStartHeight { lastBlock, err := b.GetDposBlockByHash(*prevNode.Hash) if err != nil { - return errors.New("get last block failed") + // try get block from cache + lastBlockInCache, ok := b.blockCache[*prevNode.Hash] + if !ok { + return errors.New("get last block failed") + } + lastConfirmInCache, ok := b.confirmCache[*prevNode.Hash] + if !ok { + return errors.New("get last block confirm failed") + } + lastBlock = &DposBlock{ + Block: lastBlockInCache, + HaveConfirm: lastConfirmInCache != nil, + Confirm: lastConfirmInCache, + } } if lastBlock.Confirm == nil && recordSponsorExist {