diff --git a/x/onboarding/keeper/ibc_callbacks.go b/x/onboarding/keeper/ibc_callbacks.go index c5038a63..3abe25ff 100644 --- a/x/onboarding/keeper/ibc_callbacks.go +++ b/x/onboarding/keeper/ibc_callbacks.go @@ -134,9 +134,13 @@ func (k Keeper) OnRecvPacket( // the ICS20 packet data // Use MsgConvertCoin to convert the Cosmos Coin to an ERC20 - if _, err = k.erc20Keeper.ConvertCoin(ctx, convertMsg); err != nil { + // Use cached context to revert the state if the conversion fails + + cacheCtx, writeCache := ctx.CacheContext() + if _, err = k.erc20Keeper.ConvertCoin(sdk.WrapSDKContext(cacheCtx), convertMsg); err != nil { logger.Error("failed to convert coins", "error", err) - return ack + } else { + writeCache() } logger.Info(