Пример #1
0
        public async Task Treasury_Dividend_Pool_Weight_Update_To_Miner_Reward_Weight_Test()
        {
            var newWeightSetting = new DividendPoolWeightSetting
            {
                BackupSubsidyWeight  = 1,
                CitizenWelfareWeight = 1,
                MinerRewardWeight    = 8
            };

            await ExecuteProposalForParliamentTransaction(Tester, TreasuryContractAddress, nameof(TreasuryContractStub.SetDividendPoolWeightSetting), newWeightSetting);

            var minerRewardProfit =
                await ProfitContractStub.GetScheme.CallAsync(ProfitItemsIds[ProfitType.MinerReward]);

            var subSchemes = minerRewardProfit.SubSchemes;

            subSchemes.Count.ShouldBe(3);
            var minerRewardWeightSetting = await TreasuryContractStub.GetMinerRewardWeightProportion.CallAsync(new Empty());

            var basicMinerRewardScheme = subSchemes.Single(x =>
                                                           x.SchemeId == minerRewardWeightSetting.BasicMinerRewardProportionInfo.SchemeId);

            basicMinerRewardScheme.Shares.ShouldBe(2);
            var reElectionRewardScheme = subSchemes.Single(x =>
                                                           x.SchemeId == minerRewardWeightSetting.ReElectionRewardProportionInfo.SchemeId);

            reElectionRewardScheme.Shares.ShouldBe(1);
            var votesWeightRewardScheme = subSchemes.Single(x =>
                                                            x.SchemeId == minerRewardWeightSetting.VotesWeightRewardProportionInfo.SchemeId);

            votesWeightRewardScheme.Shares.ShouldBe(1);
        }
Пример #2
0
        public async Task Treasury_SetDividendPoolWeightSetting_Fail_Test()
        {
            //without authority
            {
                var setRet =
                    await TreasuryContractStub.SetDividendPoolWeightSetting.SendAsync(new DividendPoolWeightSetting());

                setRet.TransactionResult.Status.ShouldBe(TransactionResultStatus.Failed);
                setRet.TransactionResult.Error.ShouldContain("no permission");
            }

            //invalid Inpout
            {
                var methodName         = nameof(TreasuryContractStub.SetDividendPoolWeightSetting);
                var newDividendSetting = new DividendPoolWeightSetting
                {
                    BackupSubsidyWeight = 0
                };
                var setRet = await ExecuteProposalForParliamentTransactionWithException(Tester, TreasuryContractAddress, methodName,
                                                                                        newDividendSetting);

                setRet.Status.ShouldBe(TransactionResultStatus.Failed);
                setRet.Error.ShouldContain("invalid input");
            }
        }
 public override Empty SetDividendPoolWeightSetting(DividendPoolWeightSetting input)
 {
     AssertPerformedByTreasuryController();
     Assert(
         input.CitizenWelfareWeight > 0 && input.BackupSubsidyWeight > 0 &&
         input.MinerRewardWeight > 0,
         "invalid input");
     ResetSubSchemeToTreasury(input);
     State.DividendPoolWeightSetting.Value = input;
     return(new Empty());
 }
        private void ResetSubSchemeToTreasury(DividendPoolWeightSetting newWeightSetting)
        {
            var oldWeightSetting = State.DividendPoolWeightSetting.Value ?? new DividendPoolWeightSetting();
            var parentSchemeId   = State.TreasuryHash.Value;

            // Register or reset `MinerReward` to `Treasury`
            SendToProfitContractToResetWeight(parentSchemeId, State.RewardHash.Value,
                                              oldWeightSetting.MinerRewardWeight, newWeightSetting.MinerRewardWeight);
            // Register or reset `BackupSubsidy` to `Treasury`
            SendToProfitContractToResetWeight(parentSchemeId, State.SubsidyHash.Value,
                                              oldWeightSetting.BackupSubsidyWeight, newWeightSetting.BackupSubsidyWeight);
            // Register or reset `CitizenWelfare` to `Treasury`
            SendToProfitContractToResetWeight(parentSchemeId, State.WelfareHash.Value,
                                              oldWeightSetting.CitizenWelfareWeight, newWeightSetting.CitizenWelfareWeight);
        }
Пример #5
0
        public async Task Treasury_SetDividendPoolWeightSetting_Success_Test()
        {
            var defaultWeightSetting = await TreasuryContractStub.GetDividendPoolWeightProportion.CallAsync(new Empty());

            defaultWeightSetting.BackupSubsidyProportionInfo.Proportion.ShouldBe(5);
            defaultWeightSetting.CitizenWelfareProportionInfo.Proportion.ShouldBe(75);
            defaultWeightSetting.MinerRewardProportionInfo.Proportion.ShouldBe(20);
            var newWeightSetting = new DividendPoolWeightSetting
            {
                BackupSubsidyWeight  = 1,
                CitizenWelfareWeight = 1,
                MinerRewardWeight    = 8
            };

            await ExecuteProposalForParliamentTransaction(Tester, TreasuryContractAddress, nameof(TreasuryContractStub.SetDividendPoolWeightSetting), newWeightSetting);

            var updatedWeightSetting = await TreasuryContractStub.GetDividendPoolWeightProportion.CallAsync(new Empty());

            updatedWeightSetting.BackupSubsidyProportionInfo.Proportion.ShouldBe(10);
            updatedWeightSetting.CitizenWelfareProportionInfo.Proportion.ShouldBe(10);
            updatedWeightSetting.MinerRewardProportionInfo.Proportion.ShouldBe(80);
            var treasuryProfit = await ProfitContractStub.GetScheme.CallAsync(ProfitItemsIds[ProfitType.Treasury]);

            var subSchemes = treasuryProfit.SubSchemes;

            subSchemes.Count.ShouldBe(3);
            var backSubsidyScheme = subSchemes.Single(x => x.SchemeId == updatedWeightSetting.BackupSubsidyProportionInfo.SchemeId);

            backSubsidyScheme.Shares.ShouldBe(1);
            var citizenWelfareScheme = subSchemes.Single(x => x.SchemeId == updatedWeightSetting.CitizenWelfareProportionInfo.SchemeId);

            citizenWelfareScheme.Shares.ShouldBe(1);
            var minerRewardScheme = subSchemes.Single(x => x.SchemeId == updatedWeightSetting.MinerRewardProportionInfo.SchemeId);

            minerRewardScheme.Shares.ShouldBe(8);
        }