update spec
This commit is contained in:
@@ -3,28 +3,27 @@ package keeper
|
||||
import sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
// XXX TODO
|
||||
func (k Keeper) AllocateFees(ctx sdk.Context, feesCollected sdk.Coins, proposerAddr sdk.ConsAddrs,
|
||||
func (k Keeper) AllocateFees(ctx sdk.Context, feesCollected sdk.Coins, proposerAddr sdk.ConsAddress,
|
||||
sumPowerPrecommitValidators, totalBondedTokens, communityTax, proposerCommissionRate sdk.Dec) {
|
||||
|
||||
feePool := k.GetFeePool()
|
||||
validator := k.stakeKeeper.GetValidatorFromConsAddr(ctx,
|
||||
proposerOpAddr := Stake.GetValidator
|
||||
proposer := k.GetFeeDistribution(ctx, proposerOpAddr)
|
||||
proserValidator := k.stakeKeeper.GetValidatorFromConsAddr(ctx, proposerAddr)
|
||||
proposer := k.GetFeeDistribution(ctx, proserValidator.OperatorAddr)
|
||||
|
||||
feesCollectedDec = MakeDecCoins(feesCollected)
|
||||
proposerReward = feesCollectedDec.Mul(sdk.NewDecWithPrec(1, 2) + sdk.NewDecWithPrec(1, 2).Mul(sumPowerPrecommitValidators)/totalBondedTokens)
|
||||
feesCollectedDec := NewDecCoins(feesCollected)
|
||||
proposerMultiplier := sdk.NewDecWithPrec(1, 2).Add(sdk.NewDecWithPrec(4, 2).Mul(
|
||||
sumPowerPrecommitValidators).Div(totalBondedTokens))
|
||||
proposerReward := feesCollectedDec.Mul(proposerMultiplier)
|
||||
|
||||
commission = proposerReward * proposerCommissionRate
|
||||
proposer.PoolCommission += commission
|
||||
proposer.Pool += proposerReward - commission
|
||||
commission := proposerReward.Mul(proposerCommissionRate)
|
||||
proposer.PoolCommission = proposer.PoolCommission.Add(commission)
|
||||
proposer.Pool = proposer.Pool.Add(proposerReward.Sub(commission))
|
||||
|
||||
communityFunding = feesCollectedDec * communityTax
|
||||
feePool.CommunityFund += communityFunding
|
||||
communityFunding := feesCollectedDec.Mul(communityTax)
|
||||
feePool.CommunityFund = feePool.CommunityFund.Add(communityFunding)
|
||||
|
||||
poolReceived = feesCollectedDec - proposerReward - communityFunding
|
||||
feePool.Pool += poolReceived
|
||||
feePool.EverReceivedPool += poolReceived
|
||||
feePool.LastReceivedPool = poolReceived
|
||||
feePool.Pool = feePool.Pool.Add(poolReceived)
|
||||
|
||||
SetValidatorDistribution(proposer)
|
||||
SetFeePool(feePool)
|
||||
|
||||
@@ -32,7 +32,7 @@ func NewKeeper(cdc *wire.Codec, key sdk.StoreKey, ck types.CoinKeeper,
|
||||
//______________________________________________________________________
|
||||
|
||||
// get the global fee pool distribution info
|
||||
func (k Keeper) GetFeePool(ctx sdk.Context) (feePool types.Global) {
|
||||
func (k Keeper) GetFeePool(ctx sdk.Context) (feePool types.FeePool) {
|
||||
store := ctx.KVStore(k.storeKey)
|
||||
|
||||
b := store.Get(GlobalKey)
|
||||
@@ -45,7 +45,7 @@ func (k Keeper) GetFeePool(ctx sdk.Context) (feePool types.Global) {
|
||||
}
|
||||
|
||||
// set the global fee pool distribution info
|
||||
func (k Keeper) SetFeePool(ctx sdk.Context, feePool types.Global) {
|
||||
func (k Keeper) SetFeePool(ctx sdk.Context, feePool types.FeePool) {
|
||||
store := ctx.KVStore(k.storeKey)
|
||||
b := k.cdc.MustMarshalBinary(feePool)
|
||||
store.Set(GlobalKey, b)
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package types
|
||||
|
||||
import sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
// coins with decimal
|
||||
type DecCoins []DecCoin
|
||||
|
||||
// Coins which can have additional decimal points
|
||||
type DecCoin struct {
|
||||
Amount sdk.Dec `json:"amount"`
|
||||
Denom string `json:"denom"`
|
||||
}
|
||||
|
||||
func NewDecCoin(coin sdk.Coin) DecCoin {
|
||||
return DecCoins{
|
||||
Amount: sdk.NewDec(coin.Amount),
|
||||
Denom: coin.Denom,
|
||||
}
|
||||
}
|
||||
|
||||
func NewDecCoins(coins sdk.Coins) DecCoins {
|
||||
|
||||
dcs := make(DecCoins, len(coins))
|
||||
for i, coin := range coins {
|
||||
dcs[i] = NewDecCoin(coin)
|
||||
}
|
||||
}
|
||||
@@ -2,15 +2,6 @@ package types
|
||||
|
||||
import sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
// coins with decimal
|
||||
type DecCoins []DecCoin
|
||||
|
||||
// Coins which can have additional decimal points
|
||||
type DecCoin struct {
|
||||
Amount sdk.Dec `json:"amount"`
|
||||
Denom string `json:"denom"`
|
||||
}
|
||||
|
||||
// total accumulation tracker
|
||||
type TotalAccum struct {
|
||||
UpdateHeight int64 `json:"update_height"`
|
||||
|
||||
Reference in New Issue
Block a user