From 377c4a0170dcabd0ff3accbd8846fbe4ac18731d Mon Sep 17 00:00:00 2001 From: mars Date: Fri, 22 Mar 2019 14:34:25 +0800 Subject: [PATCH] modify bug --- consensus/consensus/dpos/dpos.go | 8 ++++---- consensus/consensus/dpos/vote.go | 4 +++- node/node.go | 11 +++++------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/consensus/consensus/dpos/dpos.go b/consensus/consensus/dpos/dpos.go index de0ed2e8..69abaf01 100644 --- a/consensus/consensus/dpos/dpos.go +++ b/consensus/consensus/dpos/dpos.go @@ -109,10 +109,7 @@ func (d *DposType) Init(c chain.Chain, delegateNumber, intervalTime, blockHeight GDpos.irreversibleBlockFileName = filepath.Join(config.CommonConfig.RootDir, "dpos", "irreversible_block.dat") GDpos.irreversibleBlockInfo = *newIrreversibleBlockInfo() - if err := GDpos.ReadIrreversibleBlockInfo(&GDpos.irreversibleBlockInfo); err != nil { - return err - } - + GDpos.ReadIrreversibleBlockInfo(&GDpos.irreversibleBlockInfo) header, _ := c.GetHeaderByHeight(d.DposStartHeight) d.setStartTime(header.Timestamp) return nil @@ -132,6 +129,9 @@ func (d *DposType) IsMining(address common.Address, t uint64) (interface{}, erro if currentLoopIndex > prevLoopIndex { delegateInfo := d.GetNextDelegates(t) cDelegateInfo := delegateInfo.(*DelegateInfo) + if uint64(len(cDelegateInfo.Delegates)) < currentDelegateIndex+1 { + return nil, errors.New("Out of the block node list") + } if cDelegateInfo.Delegates[currentDelegateIndex].DelegateAddress == address.EncodeAddress() { return delegateInfo, nil } diff --git a/consensus/consensus/dpos/vote.go b/consensus/consensus/dpos/vote.go index 7daa793e..c7056743 100644 --- a/consensus/consensus/dpos/vote.go +++ b/consensus/consensus/dpos/vote.go @@ -396,7 +396,9 @@ func (v *Vote) GetTopDelegateInfo(minHoldBalance uint64, delegateNum uint64) []D result = append(result, Delegate{k, 0}) } } - + if uint64(len(result)) <= delegateNum { + return result + } result = result[:delegateNum] return result } diff --git a/node/node.go b/node/node.go index 61176c22..57744880 100644 --- a/node/node.go +++ b/node/node.go @@ -105,6 +105,11 @@ func NewNode(config *cfg.Config) *Node { cmn.Exit(cmn.Fmt("Failed to create chain structure: %v", err)) } + switch config.Consensus.Type { + case "dpos": + initDpos(chain, config) + } + var accounts *account.Manager = nil var assets *asset.Registry = nil var wallet *w.Wallet = nil @@ -161,12 +166,6 @@ func NewNode(config *cfg.Config) *Node { } }() } - - switch config.Consensus.Type { - case "dpos": - initDpos(chain, config) - } - node := &Node{ config: config, syncManager: syncManager, -- 2.11.0