diff --git a/wormhole_chain/x/tokenbridge/keeper/msg_server_execute_vaa.go b/wormhole_chain/x/tokenbridge/keeper/msg_server_execute_vaa.go index eb3003ba4..699c5e5ff 100644 --- a/wormhole_chain/x/tokenbridge/keeper/msg_server_execute_vaa.go +++ b/wormhole_chain/x/tokenbridge/keeper/msg_server_execute_vaa.go @@ -118,6 +118,9 @@ func (k msgServer) ExecuteVAA(goCtx context.Context, msg *types.MsgExecuteVAA) ( if err != nil { return nil, err } + if fee.Sign() == -1 { + return nil, types.ErrNegativeFee + } if wrapped { err = k.bankKeeper.MintCoins(ctx, types.ModuleName, sdk.Coins{ diff --git a/wormhole_chain/x/tokenbridge/types/errors.go b/wormhole_chain/x/tokenbridge/types/errors.go index 4c3aa1702..bdda73b5b 100644 --- a/wormhole_chain/x/tokenbridge/types/errors.go +++ b/wormhole_chain/x/tokenbridge/types/errors.go @@ -37,4 +37,5 @@ var ( ErrFeeTooHigh = sdkerrors.Register(ModuleName, 1132, "fee must be < amount") ErrAmountTooHigh = sdkerrors.Register(ModuleName, 1133, "the amount would exceed the bridges capacity of u64") ErrAssetMetaRollback = sdkerrors.Register(ModuleName, 1134, "asset meta must have a higher sequence than the last update") + ErrNegativeFee = sdkerrors.Register(ModuleName, 1135, "fee cannot be negative") )