work on allocate fees

This commit is contained in:
rigelrozanski 2018-09-05 19:28:18 -04:00
parent b40909906d
commit cbb5a504d5
1 changed files with 15 additions and 11 deletions

View File

@ -2,29 +2,33 @@ package keeper
import sdk "github.com/cosmos/cosmos-sdk/types" import sdk "github.com/cosmos/cosmos-sdk/types"
// XXX TODO // Allocate fees handles distribution of the collected fees
func (k Keeper) AllocateFees(ctx sdk.Context, feesCollected sdk.Coins, proposerAddr sdk.ConsAddress, func (k Keeper) AllocateFees(ctx sdk.Context, feesCollected sdk.Coins, proposerAddr sdk.ConsAddress) {
sumPowerPrecommitValidators, totalBondedTokens, communityTax, proposerCommissionRate sdk.Dec) {
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) proserValidator := k.stakeKeeper.GetValidatorFromConsAddr(ctx, proposerAddr)
proposer := k.GetFeeDistribution(ctx, proserValidator.OperatorAddr) proposerDist := k.GetFeeDistribution(ctx, proserValidator.OperatorAddr)
feesCollectedDec := NewDecCoins(feesCollected) feesCollectedDec := NewDecCoins(feesCollected)
proposerMultiplier := sdk.NewDecWithPrec(1, 2).Add(sdk.NewDecWithPrec(4, 2).Mul( proposerMultiplier := sdk.NewDecWithPrec(1, 2).Add(sdk.NewDecWithPrec(4, 2).Mul(
sumPowerPrecommitValidators).Div(totalBondedTokens)) sumPowerPrecommitValidators).Div(stakePool.BondedTokens))
proposerReward := feesCollectedDec.Mul(proposerMultiplier) proposerReward := feesCollectedDec.Mul(proposerMultiplier)
commission := proposerReward.Mul(proposerCommissionRate) commission := proposerReward.Mul(proserValidator.Commission)
proposer.PoolCommission = proposer.PoolCommission.Add(commission) proposerDist.PoolCommission = proposerDist.PoolCommission.Add(commission)
proposer.Pool = proposer.Pool.Add(proposerReward.Sub(commission)) proposerDist.Pool = proposerDist.Pool.Add(proposerReward.Sub(commission))
communityFunding := feesCollectedDec.Mul(communityTax) communityFunding := feesCollectedDec.Mul(communityTax)
feePool.CommunityFund = feePool.CommunityFund.Add(communityFunding) feePool.CommunityFund = feePool.CommunityFund.Add(communityFunding)
poolReceived = feesCollectedDec - proposerReward - communityFunding poolReceived := feesCollectedDec.Sub(proposerReward).Sub(communityFunding)
feePool.Pool = feePool.Pool.Add(poolReceived) feePool.Pool = feePool.Pool.Add(poolReceived)
SetValidatorDistribution(proposer) SetValidatorDistribution(proposerDist)
SetFeePool(feePool) SetFeePool(feePool)
} }