public override ConsensusCommand GetAEDPoSConsensusCommand() { var arrangedMiningTime = MiningTimeArrangingService.ArrangeMiningTimeBasedOnOffset(CurrentBlockTime, TinyBlockMinimumInterval); var miningDueTime = MinerInRound.ActualMiningTimes .OrderBy(t => t) .Last() .AddMilliseconds(MiningInterval); return(arrangedMiningTime > miningDueTime ? new TerminateRoundCommandStrategy(CurrentRound, Pubkey, CurrentBlockTime, false) .GetAEDPoSConsensusCommand() : new ConsensusCommand { Hint = new AElfConsensusHint { Behaviour = AElfConsensusBehaviour.TinyBlock }.ToByteString(), ArrangedMiningTime = arrangedMiningTime, MiningDueTime = miningDueTime, LimitMillisecondsOfMiningBlock = IsLastTinyBlockOfCurrentSlot() ? LastTinyBlockMiningLimit : DefaultBlockMiningLimit }); }
public override ConsensusCommand GetAEDPoSConsensusCommand() { var miningInterval = MiningInterval; var offset = _consensusBehaviour == AElfConsensusBehaviour.UpdateValueWithoutPreviousInValue && Order == 1 ? miningInterval : Order.Add(MinersCount).Sub(1).Mul(miningInterval); var arrangedMiningTime = MiningTimeArrangingService.ArrangeMiningTimeBasedOnOffset(CurrentBlockTime, offset); return(new ConsensusCommand { Hint = new AElfConsensusHint { Behaviour = _consensusBehaviour }.ToByteString(), ArrangedMiningTime = arrangedMiningTime, MiningDueTime = arrangedMiningTime.AddMilliseconds(miningInterval), LimitMillisecondsOfMiningBlock = DefaultBlockMiningLimit }); }