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); }
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); }
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); }