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 = await TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraDataAsync(consensusCommand.ToBytesValue()); var extraDataBytes = await AEDPoSContractStub.GetConsensusExtraData.CallAsync(triggerForCommand); var validateBeforeResult = await AEDPoSContractStub.ValidateConsensusBeforeExecution.CallAsync(extraDataBytes); validateBeforeResult.Success.ShouldBeTrue(); }
public async Task AEDPoSContract_ValidateConsensusBeforeExecution_UpdateValue_WithoutMiner_Test() { var usingKeyPair = ValidationDataCenterKeyPairs[0]; KeyPairProvider.SetKeyPair(usingKeyPair); var consensusCommand = await AEDPoSContract_GetConsensusCommand_FirstRound_ExtraBlockMiner_Test(); var updateValue = new AElfConsensusHint { Behaviour = AElfConsensusBehaviour.UpdateValue } .ToByteString(); consensusCommand.Hint = updateValue; var triggerForCommand = await TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraDataAsync(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"); }
public async Task AEDPoSContract_GetInformationToUpdateConsensus_FirstRound_ExtraBlockMiner_Test() { var usingKeyPair = BootMinerKeyPair; KeyPairProvider.SetKeyPair(usingKeyPair); var consensusCommand = await AEDPoSContract_GetConsensusCommand_FirstRound_ExtraBlockMiner_Test(); BlockTimeProvider.SetBlockTime(BlockchainStartTimestamp + new Duration { Seconds = AEDPoSContractTestConstants.MiningInterval.Mul(AEDPoSContractTestConstants.InitialMinersCount) .Div(1000) }); var triggerForCommand = await TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraDataAsync(consensusCommand.ToBytesValue()); var extraDataBytes = await AEDPoSContractStub.GetConsensusExtraData.CallAsync(triggerForCommand); var extraData = extraDataBytes.ToConsensusHeaderInformation(); extraData.Round.RoundId.ShouldNotBe(0); extraData.Round.RoundNumber.ShouldBe(2); }
public async Task AEDPoSContract_ConsensusTransactionValidation_Test() { var usingKeyPair = BootMinerKeyPair; KeyPairProvider.SetKeyPair(usingKeyPair); var consensusCommand = await AEDPoSContract_GetConsensusCommand_FirstRound_ExtraBlockMiner_Test(); var triggerForCommand = await TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraDataAsync(consensusCommand.ToBytesValue()); var extraDataBytes = await AEDPoSContractStub.GetConsensusExtraData.CallAsync(triggerForCommand); var validateBeforeResult = await AEDPoSContractStub.ValidateConsensusBeforeExecution.CallAsync(extraDataBytes); validateBeforeResult.Success.ShouldBeTrue(); var roundInfo = await AEDPoSContractStub.GetCurrentRoundInformation.CallAsync(new Empty()); roundInfo.RoundNumber++; var transactionResult = await AEDPoSContractStub.NextRound.SendAsync(roundInfo); transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Mined); var validateAfterResult = await AEDPoSContractStub.ValidateConsensusAfterExecution.CallAsync(roundInfo.ToBytesValue()); validateAfterResult.Success.ShouldBeFalse(); //update with extra data would be keep the same. }
public async Task AEDPoSContract_GetInformationToUpdateConsensus_FirstRound_SecondMiner_Test() { var usingKeyPair = InitialCoreDataCenterKeyPairs[1]; KeyPairProvider.SetKeyPair(usingKeyPair); var consensusCommand = await AEDPoSContract_GetConsensusCommand_FirstRound_SecondMiner_Test(); BlockTimeProvider.SetBlockTime(BlockchainStartTimestamp + new Duration { Seconds = AEDPoSContractTestConstants.MiningInterval.Mul(2).Div(1000) }); var triggerForCommand = await TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraDataAsync(consensusCommand.ToBytesValue()); var extraDataBytes = await AEDPoSContractStub.GetConsensusExtraData.CallAsync(triggerForCommand); var extraData = extraDataBytes.ToConsensusHeaderInformation(); extraData.Round.RoundId.ShouldNotBe(0); extraData.Round.RoundNumber.ShouldBe(1); extraData.Round.RealTimeMinersInformation[usingKeyPair.PublicKey.ToHex()].OutValue .ShouldNotBeNull(); }