Change IBCContractKeeper interface, code builds
This commit is contained in:
@@ -43,13 +43,18 @@ func (i IBCHandler) OnChanOpenInit(
|
|||||||
return sdkerrors.Wrapf(err, "contract port id")
|
return sdkerrors.Wrapf(err, "contract port id")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = i.keeper.OnOpenChannel(ctx, contractAddr, wasmvmtypes.IBCChannel{
|
msg := wasmvmtypes.IBCChannelOpenMsg{
|
||||||
Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID},
|
OpenInit: &wasmvmtypes.IBCOpenInit{
|
||||||
CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId},
|
Channel: wasmvmtypes.IBCChannel{
|
||||||
Order: order.String(),
|
Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID},
|
||||||
Version: version,
|
CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId},
|
||||||
ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported.
|
Order: order.String(),
|
||||||
}, "")
|
Version: version,
|
||||||
|
ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported.
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
err = i.keeper.OnOpenChannel(ctx, contractAddr, msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -80,13 +85,20 @@ func (i IBCHandler) OnChanOpenTry(
|
|||||||
return sdkerrors.Wrapf(err, "contract port id")
|
return sdkerrors.Wrapf(err, "contract port id")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = i.keeper.OnOpenChannel(ctx, contractAddr, wasmvmtypes.IBCChannel{
|
msg := wasmvmtypes.IBCChannelOpenMsg{
|
||||||
Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID},
|
OpenTry: &wasmvmtypes.IBCOpenTry{
|
||||||
CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId},
|
Channel: wasmvmtypes.IBCChannel{
|
||||||
Order: order.String(),
|
Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID},
|
||||||
Version: version,
|
CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId},
|
||||||
ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported.
|
Order: order.String(),
|
||||||
}, counterpartyVersion)
|
Version: version,
|
||||||
|
ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported.
|
||||||
|
},
|
||||||
|
CounterpartyVersion: counterpartyVersion,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
err = i.keeper.OnOpenChannel(ctx, contractAddr, msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -117,7 +129,13 @@ func (i IBCHandler) OnChanOpenAck(
|
|||||||
if !ok {
|
if !ok {
|
||||||
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
|
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
|
||||||
}
|
}
|
||||||
return i.keeper.OnConnectChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), counterpartyVersion)
|
msg := wasmvmtypes.IBCChannelConnectMsg{
|
||||||
|
OpenAck: &wasmvmtypes.IBCOpenAck{
|
||||||
|
Channel: toWasmVMChannel(portID, channelID, channelInfo),
|
||||||
|
CounterpartyVersion: counterpartyVersion,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return i.keeper.OnConnectChannel(ctx, contractAddr, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnChanOpenConfirm implements the IBCModule interface
|
// OnChanOpenConfirm implements the IBCModule interface
|
||||||
@@ -130,7 +148,12 @@ func (i IBCHandler) OnChanOpenConfirm(ctx sdk.Context, portID, channelID string)
|
|||||||
if !ok {
|
if !ok {
|
||||||
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
|
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
|
||||||
}
|
}
|
||||||
return i.keeper.OnConnectChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), "")
|
msg := wasmvmtypes.IBCChannelConnectMsg{
|
||||||
|
OpenConfirm: &wasmvmtypes.IBCOpenConfirm{
|
||||||
|
Channel: toWasmVMChannel(portID, channelID, channelInfo),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return i.keeper.OnConnectChannel(ctx, contractAddr, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnChanCloseInit implements the IBCModule interface
|
// OnChanCloseInit implements the IBCModule interface
|
||||||
@@ -144,7 +167,10 @@ func (i IBCHandler) OnChanCloseInit(ctx sdk.Context, portID, channelID string) e
|
|||||||
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
|
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = i.keeper.OnCloseChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), false)
|
msg := wasmvmtypes.IBCChannelCloseMsg{
|
||||||
|
CloseInit: &wasmvmtypes.IBCCloseInit{Channel: toWasmVMChannel(portID, channelID, channelInfo)},
|
||||||
|
}
|
||||||
|
err = i.keeper.OnCloseChannel(ctx, contractAddr, msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -165,7 +191,10 @@ func (i IBCHandler) OnChanCloseConfirm(ctx sdk.Context, portID, channelID string
|
|||||||
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
|
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = i.keeper.OnCloseChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), true)
|
msg := wasmvmtypes.IBCChannelCloseMsg{
|
||||||
|
CloseConfirm: &wasmvmtypes.IBCCloseConfirm{Channel: toWasmVMChannel(portID, channelID, channelInfo)},
|
||||||
|
}
|
||||||
|
err = i.keeper.OnCloseChannel(ctx, contractAddr, msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -193,7 +222,8 @@ func (i IBCHandler) OnRecvPacket(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, sdkerrors.Wrapf(err, "contract port id")
|
return nil, nil, sdkerrors.Wrapf(err, "contract port id")
|
||||||
}
|
}
|
||||||
ack, err := i.keeper.OnRecvPacket(ctx, contractAddr, newIBCPacket(packet))
|
msg := wasmvmtypes.IBCPacketReceiveMsg{Packet: newIBCPacket(packet)}
|
||||||
|
ack, err := i.keeper.OnRecvPacket(ctx, contractAddr, msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
@@ -230,7 +260,8 @@ func (i IBCHandler) OnTimeoutPacket(ctx sdk.Context, packet channeltypes.Packet)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, sdkerrors.Wrapf(err, "contract port id")
|
return nil, sdkerrors.Wrapf(err, "contract port id")
|
||||||
}
|
}
|
||||||
err = i.keeper.OnTimeoutPacket(ctx, contractAddr, newIBCPacket(packet))
|
msg := wasmvmtypes.IBCPacketTimeoutMsg{Packet: newIBCPacket(packet)}
|
||||||
|
err = i.keeper.OnTimeoutPacket(ctx, contractAddr, msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var _ types.IBCContractKeeper = (*Keeper)(nil)
|
||||||
|
|
||||||
// OnOpenChannel calls the contract to participate in the IBC channel handshake step.
|
// OnOpenChannel calls the contract to participate in the IBC channel handshake step.
|
||||||
// In the IBC protocol this is either the `Channel Open Init` event on the initiating chain or
|
// In the IBC protocol this is either the `Channel Open Init` event on the initiating chain or
|
||||||
// `Channel Open Try` on the counterparty chain.
|
// `Channel Open Try` on the counterparty chain.
|
||||||
@@ -17,9 +19,7 @@ import (
|
|||||||
func (k Keeper) OnOpenChannel(
|
func (k Keeper) OnOpenChannel(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
channel wasmvmtypes.IBCChannel,
|
msg wasmvmtypes.IBCChannelOpenMsg,
|
||||||
// this is unset on init, set on try
|
|
||||||
counterpartyVersion string,
|
|
||||||
) error {
|
) error {
|
||||||
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-open-channel")
|
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-open-channel")
|
||||||
|
|
||||||
@@ -31,18 +31,6 @@ func (k Keeper) OnOpenChannel(
|
|||||||
env := types.NewEnv(ctx, contractAddr)
|
env := types.NewEnv(ctx, contractAddr)
|
||||||
querier := k.newQueryHandler(ctx, contractAddr)
|
querier := k.newQueryHandler(ctx, contractAddr)
|
||||||
|
|
||||||
msg := wasmvmtypes.IBCChannelOpenMsg{}
|
|
||||||
if counterpartyVersion == "" {
|
|
||||||
msg.OpenInit = &wasmvmtypes.IBCOpenInit{
|
|
||||||
Channel: channel,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
msg.OpenTry = &wasmvmtypes.IBCOpenTry{
|
|
||||||
Channel: channel,
|
|
||||||
CounterpartyVersion: counterpartyVersion,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gas := k.runtimeGasForContract(ctx)
|
gas := k.runtimeGasForContract(ctx)
|
||||||
gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
||||||
k.consumeRuntimeGas(ctx, gasUsed)
|
k.consumeRuntimeGas(ctx, gasUsed)
|
||||||
@@ -63,9 +51,7 @@ func (k Keeper) OnOpenChannel(
|
|||||||
func (k Keeper) OnConnectChannel(
|
func (k Keeper) OnConnectChannel(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
channel wasmvmtypes.IBCChannel,
|
msg wasmvmtypes.IBCChannelConnectMsg,
|
||||||
// this is set on ack, unset on confirm
|
|
||||||
counterpartyVersion string,
|
|
||||||
) error {
|
) error {
|
||||||
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-connect-channel")
|
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-connect-channel")
|
||||||
contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr)
|
contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr)
|
||||||
@@ -76,18 +62,6 @@ func (k Keeper) OnConnectChannel(
|
|||||||
env := types.NewEnv(ctx, contractAddr)
|
env := types.NewEnv(ctx, contractAddr)
|
||||||
querier := k.newQueryHandler(ctx, contractAddr)
|
querier := k.newQueryHandler(ctx, contractAddr)
|
||||||
|
|
||||||
msg := wasmvmtypes.IBCChannelConnectMsg{}
|
|
||||||
if counterpartyVersion == "" {
|
|
||||||
msg.OpenConfirm = &wasmvmtypes.IBCOpenConfirm{
|
|
||||||
Channel: channel,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
msg.OpenAck = &wasmvmtypes.IBCOpenAck{
|
|
||||||
Channel: channel,
|
|
||||||
CounterpartyVersion: counterpartyVersion,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gas := k.runtimeGasForContract(ctx)
|
gas := k.runtimeGasForContract(ctx)
|
||||||
res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
||||||
k.consumeRuntimeGas(ctx, gasUsed)
|
k.consumeRuntimeGas(ctx, gasUsed)
|
||||||
@@ -107,9 +81,7 @@ func (k Keeper) OnConnectChannel(
|
|||||||
func (k Keeper) OnCloseChannel(
|
func (k Keeper) OnCloseChannel(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
channel wasmvmtypes.IBCChannel,
|
msg wasmvmtypes.IBCChannelCloseMsg,
|
||||||
// false for init, true for confirm
|
|
||||||
confirm bool,
|
|
||||||
) error {
|
) error {
|
||||||
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-close-channel")
|
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-close-channel")
|
||||||
|
|
||||||
@@ -121,17 +93,6 @@ func (k Keeper) OnCloseChannel(
|
|||||||
params := types.NewEnv(ctx, contractAddr)
|
params := types.NewEnv(ctx, contractAddr)
|
||||||
querier := k.newQueryHandler(ctx, contractAddr)
|
querier := k.newQueryHandler(ctx, contractAddr)
|
||||||
|
|
||||||
msg := wasmvmtypes.IBCChannelCloseMsg{}
|
|
||||||
if confirm {
|
|
||||||
msg.CloseConfirm = &wasmvmtypes.IBCCloseConfirm{
|
|
||||||
Channel: channel,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
msg.CloseInit = &wasmvmtypes.IBCCloseInit{
|
|
||||||
Channel: channel,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gas := k.runtimeGasForContract(ctx)
|
gas := k.runtimeGasForContract(ctx)
|
||||||
res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
||||||
k.consumeRuntimeGas(ctx, gasUsed)
|
k.consumeRuntimeGas(ctx, gasUsed)
|
||||||
@@ -151,7 +112,7 @@ func (k Keeper) OnCloseChannel(
|
|||||||
func (k Keeper) OnRecvPacket(
|
func (k Keeper) OnRecvPacket(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
packet wasmvmtypes.IBCPacket,
|
msg wasmvmtypes.IBCPacketReceiveMsg,
|
||||||
) ([]byte, error) {
|
) ([]byte, error) {
|
||||||
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-recv-packet")
|
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-recv-packet")
|
||||||
contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr)
|
contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr)
|
||||||
@@ -161,7 +122,6 @@ func (k Keeper) OnRecvPacket(
|
|||||||
|
|
||||||
env := types.NewEnv(ctx, contractAddr)
|
env := types.NewEnv(ctx, contractAddr)
|
||||||
querier := k.newQueryHandler(ctx, contractAddr)
|
querier := k.newQueryHandler(ctx, contractAddr)
|
||||||
msg := wasmvmtypes.IBCPacketReceiveMsg{Packet: packet}
|
|
||||||
|
|
||||||
gas := k.runtimeGasForContract(ctx)
|
gas := k.runtimeGasForContract(ctx)
|
||||||
res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
||||||
@@ -209,7 +169,7 @@ func (k Keeper) OnAckPacket(
|
|||||||
func (k Keeper) OnTimeoutPacket(
|
func (k Keeper) OnTimeoutPacket(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
packet wasmvmtypes.IBCPacket,
|
msg wasmvmtypes.IBCPacketTimeoutMsg,
|
||||||
) error {
|
) error {
|
||||||
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-timeout-packet")
|
defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-timeout-packet")
|
||||||
|
|
||||||
@@ -220,7 +180,6 @@ func (k Keeper) OnTimeoutPacket(
|
|||||||
|
|
||||||
env := types.NewEnv(ctx, contractAddr)
|
env := types.NewEnv(ctx, contractAddr)
|
||||||
querier := k.newQueryHandler(ctx, contractAddr)
|
querier := k.newQueryHandler(ctx, contractAddr)
|
||||||
msg := wasmvmtypes.IBCPacketTimeoutMsg{Packet: packet}
|
|
||||||
|
|
||||||
gas := k.runtimeGasForContract(ctx)
|
gas := k.runtimeGasForContract(ctx)
|
||||||
res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, msg, prefixStore, cosmwasmAPI, querier, ctx.GasMeter(), gas, costJsonDeserialization)
|
||||||
|
|||||||
@@ -58,28 +58,22 @@ type IBCContractKeeper interface {
|
|||||||
OnOpenChannel(
|
OnOpenChannel(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
channel wasmvmtypes.IBCChannel,
|
msg wasmvmtypes.IBCChannelOpenMsg,
|
||||||
// this is unset on init, set on try
|
|
||||||
counterpartyVersion string,
|
|
||||||
) error
|
) error
|
||||||
OnConnectChannel(
|
OnConnectChannel(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
channel wasmvmtypes.IBCChannel,
|
msg wasmvmtypes.IBCChannelConnectMsg,
|
||||||
// this is set on ack, unset on confirm
|
|
||||||
counterpartyVersion string,
|
|
||||||
) error
|
) error
|
||||||
OnCloseChannel(
|
OnCloseChannel(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
channel wasmvmtypes.IBCChannel,
|
msg wasmvmtypes.IBCChannelCloseMsg,
|
||||||
// false for init, true for confirm
|
|
||||||
confirm bool,
|
|
||||||
) error
|
) error
|
||||||
OnRecvPacket(
|
OnRecvPacket(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
packet wasmvmtypes.IBCPacket,
|
msg wasmvmtypes.IBCPacketReceiveMsg,
|
||||||
) ([]byte, error)
|
) ([]byte, error)
|
||||||
OnAckPacket(
|
OnAckPacket(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
@@ -89,7 +83,7 @@ type IBCContractKeeper interface {
|
|||||||
OnTimeoutPacket(
|
OnTimeoutPacket(
|
||||||
ctx sdk.Context,
|
ctx sdk.Context,
|
||||||
contractAddr sdk.AccAddress,
|
contractAddr sdk.AccAddress,
|
||||||
packet wasmvmtypes.IBCPacket,
|
msg wasmvmtypes.IBCPacketTimeoutMsg,
|
||||||
) error
|
) error
|
||||||
// ClaimCapability allows the transfer module to claim a capability
|
// ClaimCapability allows the transfer module to claim a capability
|
||||||
//that IBC module passes to it
|
//that IBC module passes to it
|
||||||
|
|||||||
Reference in New Issue
Block a user