From cbb5a504d588d681bf14f326f5b0161a2dd788db Mon Sep 17 00:00:00 2001 From: rigelrozanski Date: Wed, 5 Sep 2018 19:28:18 -0400 Subject: [PATCH] work on allocate fees --- x/distribution/keeper/allocation.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/x/distribution/keeper/allocation.go b/x/distribution/keeper/allocation.go index 9f54b700e5..76cee338ba 100644 --- a/x/distribution/keeper/allocation.go +++ b/x/distribution/keeper/allocation.go @@ -2,29 +2,33 @@ package keeper import sdk "github.com/cosmos/cosmos-sdk/types" -// XXX TODO -func (k Keeper) AllocateFees(ctx sdk.Context, feesCollected sdk.Coins, proposerAddr sdk.ConsAddress, - sumPowerPrecommitValidators, totalBondedTokens, communityTax, proposerCommissionRate sdk.Dec) { +// Allocate fees handles distribution of the collected fees +func (k Keeper) AllocateFees(ctx sdk.Context, feesCollected sdk.Coins, proposerAddr sdk.ConsAddress) { + + sumPowerPrecommitValidators := sdk.NewDec(1) // XXX TODO actually calculate this + communityTax := sdk.NewDecWithPrec(1, 2) // XXX TODO get from global params store + + feePool := k.GetFeePool(ctx) + stakePool := k.stakeKeeper.GetPool(ctx) - feePool := k.GetFeePool() proserValidator := k.stakeKeeper.GetValidatorFromConsAddr(ctx, proposerAddr) - proposer := k.GetFeeDistribution(ctx, proserValidator.OperatorAddr) + proposerDist := k.GetFeeDistribution(ctx, proserValidator.OperatorAddr) feesCollectedDec := NewDecCoins(feesCollected) proposerMultiplier := sdk.NewDecWithPrec(1, 2).Add(sdk.NewDecWithPrec(4, 2).Mul( - sumPowerPrecommitValidators).Div(totalBondedTokens)) + sumPowerPrecommitValidators).Div(stakePool.BondedTokens)) proposerReward := feesCollectedDec.Mul(proposerMultiplier) - commission := proposerReward.Mul(proposerCommissionRate) - proposer.PoolCommission = proposer.PoolCommission.Add(commission) - proposer.Pool = proposer.Pool.Add(proposerReward.Sub(commission)) + commission := proposerReward.Mul(proserValidator.Commission) + proposerDist.PoolCommission = proposerDist.PoolCommission.Add(commission) + proposerDist.Pool = proposerDist.Pool.Add(proposerReward.Sub(commission)) communityFunding := feesCollectedDec.Mul(communityTax) feePool.CommunityFund = feePool.CommunityFund.Add(communityFunding) - poolReceived = feesCollectedDec - proposerReward - communityFunding + poolReceived := feesCollectedDec.Sub(proposerReward).Sub(communityFunding) feePool.Pool = feePool.Pool.Add(poolReceived) - SetValidatorDistribution(proposer) + SetValidatorDistribution(proposerDist) SetFeePool(feePool) }