@@ -43,7 +43,7 @@ func (fsd FeeSharePayoutDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simula
4343// tested in ante_test.go
4444func 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