diff options
Diffstat (limited to 'core/utils/round-event.go')
-rw-r--r-- | core/utils/round-event.go | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/core/utils/round-event.go b/core/utils/round-event.go index 0e70cf2..472c724 100644 --- a/core/utils/round-event.go +++ b/core/utils/round-event.go @@ -169,42 +169,39 @@ type RoundEvent struct { // NewRoundEvent creates an RoundEvent instance. func NewRoundEvent(parentCtx context.Context, gov governanceAccessor, - logger common.Logger, initRound uint64, - initBlockHeight uint64, - roundShift uint64) (*RoundEvent, error) { + logger common.Logger, initPos types.Position, roundShift uint64) ( + *RoundEvent, error) { // We need to generate valid ending block height of this round (taken // DKG reset count into consideration). - initConfig := GetConfigWithPanic(gov, initRound, logger) + logger.Info("new RoundEvent", "position", initPos, "shift", roundShift) + initConfig := GetConfigWithPanic(gov, initPos.Round, logger) e := &RoundEvent{ gov: gov, logger: logger, - lastTriggeredRound: initRound, + lastTriggeredRound: initPos.Round, roundShift: roundShift, } e.ctx, e.ctxCancel = context.WithCancel(parentCtx) e.config = RoundBasedConfig{} - e.config.SetupRoundBasedFields(initRound, initConfig) - // TODO(jimmy): remove -1 after we match the height with fullnode. - roundHeight := gov.GetRoundHeight(initRound) - if initRound != 0 { - roundHeight-- - } - e.config.SetRoundBeginHeight(roundHeight) + e.config.SetupRoundBasedFields(initPos.Round, initConfig) + e.config.SetRoundBeginHeight(GetRoundHeight(gov, initPos.Round)) // Make sure the DKG reset count in current governance can cover the initial // block height. - resetCount := gov.DKGResetCount(initRound + 1) - remains := resetCount - for ; remains > 0 && !e.config.Contains(initBlockHeight); remains-- { - e.config.ExtendLength() - } - if !e.config.Contains(initBlockHeight) { - return nil, ErrUnmatchedBlockHeightWithConfig{ - round: initRound, - reset: resetCount, - blockHeight: initBlockHeight, + if initPos.Height >= types.GenesisHeight { + resetCount := gov.DKGResetCount(initPos.Round + 1) + remains := resetCount + for ; remains > 0 && !e.config.Contains(initPos.Height); remains-- { + e.config.ExtendLength() + } + if !e.config.Contains(initPos.Height) { + return nil, ErrUnmatchedBlockHeightWithConfig{ + round: initPos.Round, + reset: resetCount, + blockHeight: initPos.Height, + } } + e.lastTriggeredResetCount = resetCount - remains } - e.lastTriggeredResetCount = resetCount - remains return e, nil } |