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_ConsensusTransactionValidation_Test() { var usingKeyPair = BootMinerKeyPair; KeyPairProvider.SetKeyPair(usingKeyPair); var consensusCommand = await AEDPoSContract_GetConsensusCommand_FirstRound_ExtraBlockMiner_Test(); var triggerForCommand = TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraData(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++; roundInfo.IsMinerListJustChanged = false; roundInfo.TermNumber++; var transactionResult = await AEDPoSContractStub.NextRound.SendAsync(roundInfo); transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Mined); var validateAfterResult = await AEDPoSContractStub.ValidateConsensusAfterExecution.CallAsync(roundInfo.ToBytesValue()); validateAfterResult.Success.ShouldBeTrue(); }
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"); }
public async Task AEDPoSContract_GetInformationToUpdateConsensus_FirstRound_BootMiner_Test() { var consensusCommand = await AEDPoSContract_GetConsensusCommand_FirstRound_BootMiner_Test(); BlockTimeProvider.SetBlockTime(BlockchainStartTimestamp + new Duration { Seconds = AEDPoSContractTestConstants.MiningInterval.Div(1000) }); var triggerForCommand = TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraData(consensusCommand.ToBytesValue()); var extraDataBytes = await AEDPoSContractStub.GetConsensusExtraData.CallAsync(triggerForCommand); var extraData = extraDataBytes.ToConsensusHeaderInformation(); extraData.Round.RoundNumber.ShouldBe(1); extraData.Round.RealTimeMinersInformation.Count.ShouldBe(InitialCoreDataCenterKeyPairs.Count); extraData.Round.RealTimeMinersInformation[BootMinerKeyPair.PublicKey.ToHex()].OutValue .ShouldNotBeNull(); }
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 = TriggerInformationProvider .GetTriggerInformationForBlockHeaderExtraData(consensusCommand.ToBytesValue()); var extraDataBytes = await AEDPoSContractStub.GetConsensusExtraData.CallAsync(triggerForCommand); var extraData = extraDataBytes.ToConsensusHeaderInformation(); extraData.Round.RoundNumber.ShouldBe(2); }