@@ -158,22 +158,38 @@ func (dfd DeductFeeDecorator) handleZeroFees(ctx sdk.Context, deductFeesFromAcc
158
158
return sdkerrors .ErrInvalidRequest .Wrapf ("contract %s is not registered for fee pay" , cw .GetContract ())
159
159
}
160
160
161
- // TODO: instead of hardcoding payment, GetGas() * globalFeeParam.GetParams(ctx).MinimumGasPrices of ujuno or ujunox (app.GetDenom() func).
162
- // feeTx := tx.(sdk.FeeTx)
163
- // gas := feeTx.GetGas()
161
+ // Get the fee price in the chain denom
162
+ var feePrice sdk.DecCoin
163
+ for _ , c := range dfd .globalfeeKeeper .GetParams (ctx ).MinimumGasPrices {
164
+ if c .Denom == dfd .bondDenom {
165
+ feePrice = c
166
+ }
167
+ }
168
+
169
+ ctx .Logger ().Error ("HandleZeroFees" , "FeePrice" , feePrice )
170
+
171
+ // Get the tx gas
172
+ feeTx := tx .(sdk.FeeTx )
173
+ gas := sdkmath .LegacyNewDec (int64 (feeTx .GetGas ()))
174
+
175
+ ctx .Logger ().Error ("HandleZeroFees" , "Gas" , gas )
176
+
177
+ requiredFee := feePrice .Amount .Mul (gas ).Ceil ().RoundInt ()
178
+
179
+ ctx .Logger ().Error ("HandleZeroFees" , "RequiredFee" , requiredFee )
164
180
165
- payment := sdk .NewCoins (sdk .NewCoin ("ujuno" , sdk .NewDec (500_000 ).RoundInt ()))
181
+ // Create an array of coins, storing the required fee
182
+ payment := sdk .NewCoins (sdk .NewCoin (feePrice .Denom , requiredFee ))
166
183
167
184
ctx .Logger ().Error ("HandleZeroFees" , "Payment" , payment )
168
185
169
- // keeper.SendCoinsFromModuleToAccount(ctx, "feeprepay", deductFeesFromAcc.GetAddress(), payment)
186
+ // Cover the fees of the transaction, send from FeePay Module to FeeCollector Module
170
187
err := dfd .bankKeeper .SendCoinsFromModuleToModule (ctx , feepaytypes .ModuleName , types .FeeCollectorName , payment )
171
188
172
- // Handle error
189
+ // Throw transfer errors
173
190
if err != nil {
174
191
ctx .Logger ().Error ("HandleZeroFees" , "Error transfering funds from module to module" , err )
175
192
return sdkerrors .ErrInsufficientFunds .Wrapf ("error transfering funds from module to module: %s" , err )
176
- // return nil
177
193
}
178
194
179
195
ctx .Logger ().Error ("HandleZeroFees" , "Ending" , true )
0 commit comments