Skip to content

Commit 1401967

Browse files
authored
move fee check after we ensure there is someone to pay too (CosmosContracts#527)
1 parent 08a5709 commit 1401967

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

x/feeshare/ante/ante.go

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (fsd FeeSharePayoutDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simula
4343
// tested in ante_test.go
4444
func FeePayLogic(fees sdk.Coins, govPercent sdk.Dec, numPairs int) sdk.Coins {
4545
var splitFees sdk.Coins
46-
for _, c := range fees {
46+
for _, c := range fees.Sort() {
4747
rewardAmount := govPercent.MulInt(c.Amount).QuoInt64(int64(numPairs)).RoundInt()
4848
if !rewardAmount.IsZero() {
4949
splitFees = splitFees.Add(sdk.NewCoin(c.Denom, rewardAmount))
@@ -60,22 +60,6 @@ func FeeSharePayout(ctx sdk.Context, bankKeeper BankKeeper, totalFees sdk.Coins,
6060
return nil
6161
}
6262

63-
// Get only allowed governance fees to be paid (helps for taxes)
64-
// Juno v13 will have a globalFee for setting more allowed denoms later.
65-
var fees sdk.Coins
66-
if len(params.AllowedDenoms) == 0 {
67-
// If empty, we allow all denoms to be used as payment
68-
fees = totalFees
69-
} else {
70-
for _, fee := range totalFees {
71-
for _, allowed := range params.AllowedDenoms {
72-
if fee.Denom == allowed {
73-
fees = fees.Add(fee)
74-
}
75-
}
76-
}
77-
}
78-
7963
// Get valid withdraw addresses from contracts
8064
toPay := make([]sdk.AccAddress, 0)
8165
for _, msg := range msgs {
@@ -94,6 +78,26 @@ func FeeSharePayout(ctx sdk.Context, bankKeeper BankKeeper, totalFees sdk.Coins,
9478
}
9579
}
9680

81+
// Do nothing if no one needs payment
82+
if len(toPay) == 0 {
83+
return nil
84+
}
85+
86+
// Get only allowed governance fees to be paid (helps for taxes)
87+
var fees sdk.Coins
88+
if len(params.AllowedDenoms) == 0 {
89+
// If empty, we allow all denoms to be used as payment
90+
fees = totalFees
91+
} else {
92+
for _, fee := range totalFees.Sort() {
93+
for _, allowed := range params.AllowedDenoms {
94+
if fee.Denom == allowed {
95+
fees = fees.Add(fee)
96+
}
97+
}
98+
}
99+
}
100+
97101
// FeeShare logic payouts for contracts
98102
numPairs := len(toPay)
99103
if numPairs > 0 {

0 commit comments

Comments
 (0)