public async Task AEDPoSContract_ValidateConsensusBeforeExecution_UpdateValue_Test() { var usingKeyPair = InitialCoreDataCenterKeyPairs[0]; KeyPairProvider.SetKeyPair(usingKeyPair); var triggerForCommand = TriggerInformationProvider.GetTriggerInformationForConsensusCommand(new BytesValue()); var consensusCommand = await AEDPoSContractStub.GetConsensusCommand.CallAsync(triggerForCommand); var updateValue = new AElfConsensusHint { Behaviour = AElfConsensusBehaviour.UpdateValue } .ToByteString(); consensusCommand.Hint = updateValue; triggerForCommand = TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraData(consensusCommand.ToBytesValue()); var extraDataBytes = await AEDPoSContractStub.GetConsensusExtraData.CallAsync(triggerForCommand); var validateBeforeResult = await AEDPoSContractStub.ValidateConsensusBeforeExecution.CallAsync(extraDataBytes); validateBeforeResult.Success.ShouldBeTrue(); }
public async Task AEDPoSContract_GenerateConsensusTransaction_NextTerm_Test() { var usingKeyPair = BootMinerKeyPair; KeyPairProvider.SetKeyPair(usingKeyPair); //Next term { var consensusCommand = await AEDPoSContract_GetConsensusCommand_FirstRound_ExtraBlockMiner_Test(); var nextTermBehavior = new AElfConsensusHint { Behaviour = AElfConsensusBehaviour.NextTerm } .ToByteString(); consensusCommand.Hint = nextTermBehavior; BlockTimeProvider.SetBlockTime(BlockchainStartTimestamp + new Duration { Seconds = AEDPoSContractTestConstants.MiningInterval .Mul(AEDPoSContractTestConstants.InitialMinersCount) .Div(1000) }); var triggerForCommand = TriggerInformationProvider .GetTriggerInformationForConsensusTransactions(consensusCommand.ToBytesValue()); var transactionList = await AEDPoSContractStub.GenerateConsensusTransactions.CallAsync(triggerForCommand); transactionList.Transactions.Count.ShouldBe(1); transactionList.Transactions[0].MethodName.ShouldBe(nameof(AEDPoSContractStub.NextTerm)); } }
public async Task AEDPoSContract_ValidateConsensusBeforeExecution_UpdateValue_WithoutMiner_Test() { var usingKeyPair = ValidationDataCenterKeyPairs[0]; var consensusCommand = await AEDPoSContract_GetConsensusCommand_FirstRound_ExtraBlockMiner_Test(); KeyPairProvider.SetKeyPair(usingKeyPair); var updateValue = new AElfConsensusHint { Behaviour = AElfConsensusBehaviour.UpdateValue } .ToByteString(); consensusCommand.Hint = updateValue; var triggerForCommand = TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraData(consensusCommand.ToBytesValue()); var extraDataBytes = await AEDPoSContractStub.GetConsensusExtraData.CallAsync(triggerForCommand); await NextTerm(BootMinerKeyPair); var otherUser = GetAEDPoSContractStub(usingKeyPair); var validateBeforeResult = await otherUser.ValidateConsensusBeforeExecution.CallAsync(extraDataBytes); validateBeforeResult.Success.ShouldBeFalse(); validateBeforeResult.Message.ShouldContain("is not a miner"); }
private async Task <ConsensusCommand> AEDPoSContract_GetConsensusCommand_FirstRound_ExtraBlockMiner_Test() { await AEDPoSContract_FirstRound_SecondMiner_Test(); var usingKeyPair = BootMinerKeyPair; KeyPairProvider.SetKeyPair(usingKeyPair); BlockTimeProvider.SetBlockTime(BlockchainStartTimestamp + new Duration { Seconds = AEDPoSContractTestConstants.MiningInterval.Mul(2).Div(1000) }); var triggerForCommand = TriggerInformationProvider.GetTriggerInformationForConsensusCommand(new BytesValue()); var currentRound = await AEDPoSContractStub.GetCurrentRoundInformation.CallAsync(new Empty()); var consensusCommand = await AEDPoSContractStub.GetConsensusCommand.CallAsync(triggerForCommand); consensusCommand.LimitMillisecondsOfMiningBlock.ShouldBe(AEDPoSContractTestConstants .SmallBlockMiningInterval); var hint = new AElfConsensusHint { Behaviour = AElfConsensusBehaviour.NextRound } .ToByteString(); consensusCommand.Hint.ShouldBe(hint); return(consensusCommand); }
internal static AElfConsensusHint ToAElfConsensusHint(this ByteString byteString) { var hint = new AElfConsensusHint(); hint.MergeFrom(byteString); return(hint); }
private async Task <ConsensusCommand> AEDPoSContract_GetConsensusCommand_FirstRound_BootMiner_Test() { KeyPairProvider.SetKeyPair(BootMinerKeyPair); var triggerForCommand = TriggerInformationProvider.GetTriggerInformationForConsensusCommand(new BytesValue()); var consensusCommand = await AEDPoSContractStub.GetConsensusCommand.CallAsync(triggerForCommand); consensusCommand.LimitMillisecondsOfMiningBlock.ShouldBe(AEDPoSContractTestConstants .SmallBlockMiningInterval); var hint = new AElfConsensusHint { Behaviour = AElfConsensusBehaviour.UpdateValue }.ToByteString(); consensusCommand.Hint.ShouldBe(hint); return(consensusCommand); }
private async Task <ConsensusCommand> AEDPoSContract_GetConsensusCommand_FirstRound_SecondMiner_Test() { await AEDPoSContract_FirstRound_BootMiner_Test(); // Now the first time slot of first round already filled by boot miner. var usingKeyPair = InitialCoreDataCenterKeyPairs[1]; KeyPairProvider.SetKeyPair(usingKeyPair); var blockchainStartTimestamp = BlockchainStartTimestamp; BlockTimeProvider.SetBlockTime(blockchainStartTimestamp + new Duration { Seconds = AEDPoSContractTestConstants.MiningInterval.Div(1000) }); var triggerForCommand = TriggerInformationProvider.GetTriggerInformationForConsensusCommand(new BytesValue()); var consensusCommand = await AEDPoSContractStub.GetConsensusCommand.CallAsync(triggerForCommand); consensusCommand.LimitMillisecondsOfMiningBlock.ShouldBe(AEDPoSContractTestConstants .SmallBlockMiningInterval); var hint = new AElfConsensusHint { Behaviour = AElfConsensusBehaviour.UpdateValue } .ToByteString(); consensusCommand.Hint.ShouldBe(hint); consensusCommand.ArrangedMiningTime.ShouldBe(blockchainStartTimestamp + new Duration { Seconds = AEDPoSContractTestConstants.MiningInterval.Mul(7).Div(1000) }); return(consensusCommand); }