Skip to content

Commit 282301f

Browse files
Cover exact fee
1 parent 4d558ea commit 282301f

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

x/feepay/ante/dedcuct_fee.go

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -158,22 +158,38 @@ func (dfd DeductFeeDecorator) handleZeroFees(ctx sdk.Context, deductFeesFromAcc
158158
return sdkerrors.ErrInvalidRequest.Wrapf("contract %s is not registered for fee pay", cw.GetContract())
159159
}
160160

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)
164180

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))
166183

167184
ctx.Logger().Error("HandleZeroFees", "Payment", payment)
168185

169-
// keeper.SendCoinsFromModuleToAccount(ctx, "feeprepay", deductFeesFromAcc.GetAddress(), payment)
186+
// Cover the fees of the transaction, send from FeePay Module to FeeCollector Module
170187
err := dfd.bankKeeper.SendCoinsFromModuleToModule(ctx, feepaytypes.ModuleName, types.FeeCollectorName, payment)
171188

172-
// Handle error
189+
// Throw transfer errors
173190
if err != nil {
174191
ctx.Logger().Error("HandleZeroFees", "Error transfering funds from module to module", err)
175192
return sdkerrors.ErrInsufficientFunds.Wrapf("error transfering funds from module to module: %s", err)
176-
// return nil
177193
}
178194

179195
ctx.Logger().Error("HandleZeroFees", "Ending", true)

x/feepay/keeper/keeper.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,3 @@ func (k Keeper) RegisterContract(ctx sdk.Context, fpc types.FeePayContract) bool
9393
// Return true by default (for now)
9494
return true
9595
}
96-
97-
// FeeShare - how to do a map. store.Get()
98-
99-
// KV
100-
// -> KVs `string -> []bytes`
101-
// Store users interactions on a contract -> int
102-
// "user-interaction" < key
103-
// "userAddr-contractAddr" -> []byte(1)
104-
// feeshare.go < how to do kvs

0 commit comments

Comments
 (0)