Skip to content

Commit 41098c3

Browse files
Don't fail ante handler on simulate tx with no fee (#120) (#121)
(cherry picked from commit d2f4f3b) Co-authored-by: Eric Warehime <eric.warehime@gmail.com>
1 parent dbc959b commit 41098c3

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

x/feemarket/ante/fee.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,19 @@ func (dfd feeMarketCheckDecorator) anteHandle(ctx sdk.Context, tx sdk.Tx, simula
9595
feeCoins := feeTx.GetFee()
9696
gas := feeTx.GetGas() // use provided gas limit
9797

98-
if len(feeCoins) != 1 {
99-
if len(feeCoins) == 0 {
100-
return ctx, errorsmod.Wrapf(feemarkettypes.ErrNoFeeCoins, "got length %d", len(feeCoins))
101-
}
98+
if len(feeCoins) == 0 && !simulate {
99+
return ctx, errorsmod.Wrapf(feemarkettypes.ErrNoFeeCoins, "got length %d", len(feeCoins))
100+
}
101+
if len(feeCoins) > 1 {
102102
return ctx, errorsmod.Wrapf(feemarkettypes.ErrTooManyFeeCoins, "got length %d", len(feeCoins))
103103
}
104104

105-
feeCoin := feeCoins[0]
105+
var feeCoin sdk.Coin
106+
if simulate && len(feeCoins) == 0 {
107+
feeCoin = sdk.NewCoin(params.FeeDenom, sdkmath.NewInt(0))
108+
} else {
109+
feeCoin = feeCoins[0]
110+
}
106111
feeGas := int64(feeTx.GetGas())
107112

108113
minGasPrice, err := dfd.feemarketKeeper.GetMinGasPrice(ctx, feeCoin.GetDenom())

x/feemarket/ante/fee_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,23 @@ func TestAnteHandle(t *testing.T) {
7676
ExpPass: false,
7777
ExpErr: sdkerrors.ErrOutOfGas,
7878
},
79+
{
80+
Name: "0 gas given should pass in simulate",
81+
Malleate: func(suite *antesuite.TestSuite) antesuite.TestCaseArgs {
82+
accs := suite.CreateTestAccounts(1)
83+
84+
return antesuite.TestCaseArgs{
85+
Msgs: []sdk.Msg{testdata.NewTestMsg(accs[0].Account.GetAddress())},
86+
GasLimit: 0,
87+
FeeAmount: nil,
88+
}
89+
},
90+
RunAnte: true,
91+
RunPost: false,
92+
Simulate: true,
93+
ExpPass: true,
94+
ExpErr: nil,
95+
},
7996
{
8097
Name: "signer has enough funds, should pass",
8198
Malleate: func(suite *antesuite.TestSuite) antesuite.TestCaseArgs {

0 commit comments

Comments
 (0)