add counterpartyChannelID param to wasm IBCHandler.OnChainOpenAck

This commit is contained in:
vuong
2022-03-21 13:50:16 +07:00
committed by Ethan Frey
parent f740dae543
commit 97e067e006
2 changed files with 12 additions and 10 deletions

View File

@@ -61,7 +61,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
ante.NewIncrementSequenceDecorator(options.AccountKeeper),
ibcante.NewAnteDecorator(options.IBCKeeper),
as aa }
}
return sdk.ChainAnteDecorators(anteDecorators...), nil
}

View File

@@ -77,16 +77,16 @@ func (i IBCHandler) OnChanOpenTry(
portID, channelID string,
chanCap *capabilitytypes.Capability,
counterParty channeltypes.Counterparty,
version, counterpartyVersion string,
) error {
counterpartyVersion string,
) (string, error) {
// ensure port, version, capability
if err := ValidateChannelParams(channelID); err != nil {
return err
return "", err
}
contractAddr, err := ContractFromPortID(portID)
if err != nil {
return sdkerrors.Wrapf(err, "contract port id")
return "", sdkerrors.Wrapf(err, "contract port id")
}
msg := wasmvmtypes.IBCChannelOpenMsg{
@@ -95,7 +95,7 @@ func (i IBCHandler) OnChanOpenTry(
Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID},
CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId},
Order: order.String(),
Version: version,
Version: counterpartyVersion,
ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported.
},
CounterpartyVersion: counterpartyVersion,
@@ -104,7 +104,7 @@ func (i IBCHandler) OnChanOpenTry(
err = i.keeper.OnOpenChannel(ctx, contractAddr, msg)
if err != nil {
return err
return "", err
}
// Module may have already claimed capability in OnChanOpenInit in the case of crossing hellos
// (ie chainA and chainB both call ChanOpenInit before one of them calls ChanOpenTry)
@@ -113,10 +113,10 @@ func (i IBCHandler) OnChanOpenTry(
if !i.keeper.AuthenticateCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)) {
// Only claim channel capability passed back by IBC module if we do not already own it
if err := i.keeper.ClaimCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)); err != nil {
return sdkerrors.Wrap(err, "claim capability")
return "", sdkerrors.Wrap(err, "claim capability")
}
}
return nil
return counterpartyVersion, nil
}
// OnChanOpenAck implements the IBCModule interface
@@ -124,6 +124,7 @@ func (i IBCHandler) OnChanOpenAck(
ctx sdk.Context,
portID, channelID string,
counterpartyVersion string,
counterpartyChannelID string,
) error {
contractAddr, err := ContractFromPortID(portID)
if err != nil {
@@ -133,6 +134,7 @@ func (i IBCHandler) OnChanOpenAck(
if !ok {
return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID)
}
channelInfo.Counterparty.ChannelId = counterpartyChannelID
msg := wasmvmtypes.IBCChannelConnectMsg{
OpenAck: &wasmvmtypes.IBCOpenAck{
Channel: toWasmVMChannel(portID, channelID, channelInfo),