예제 #1
0
        public async Task Set_ConfigStrategy()
        {
            var startTime = DateTime.UtcNow.ToTimestamp();
            var testers   = new ConsensusTesters();

            testers.InitialTesters(startTime);

            var input = new DPoSStrategyInput
            {
                IsBlockchainAgeSettable = true,
                IsTimeSlotSkippable     = true,
                IsVerbose = true
            };

            var transactionResult = await testers.Testers[0].ExecuteConsensusContractMethodWithMiningAsync(
                nameof(ConsensusContract.ConfigStrategy), input);

            transactionResult.Status.ShouldBe(TransactionResultStatus.Mined);

            //set again
            transactionResult = await testers.Testers[0].ExecuteConsensusContractMethodWithMiningAsync(
                nameof(ConsensusContract.ConfigStrategy), input);
            transactionResult.Status.ShouldBe(TransactionResultStatus.Failed);
            transactionResult.Error.Contains("Already configured").ShouldBeTrue();
        }
예제 #2
0
        public override Empty ConfigStrategy(DPoSStrategyInput input)
        {
            Assert(!State.IsStrategyConfigured.Value,
                   ContractErrorCode.GetErrorMessage(ContractErrorCode.InvalidOperation, "Already configured."));

            State.IsVerbose.Value = input.IsVerbose;

            State.IsStrategyConfigured.Value = true;

            LogVerbose("Consensus log level: Verbose");

            return(new Empty());
        }
예제 #3
0
        public override Empty ConfigStrategy(DPoSStrategyInput input)
        {
            Assert(!State.IsStrategyConfigured.Value,
                   ContractErrorCode.GetErrorMessage(ContractErrorCode.InvalidOperation, "Already configured."));

            State.IsBlockchainAgeSettable.Value = input.IsBlockchainAgeSettable;
            State.IsTimeSlotSkippable.Value     = input.IsTimeSlotSkippable;
            State.IsVerbose.Value = input.IsVerbose;

            State.IsStrategyConfigured.Value = true;

            LogVerbose("Consensus log level: Verbose");
            LogVerbose($"Is blockchain age settable: {input.IsBlockchainAgeSettable}");
            LogVerbose($"Is time slot skippable: {input.IsTimeSlotSkippable}");

            return(new Empty());
        }