Skip to content

Commit 4d8d82c

Browse files
committed
wire ibc-callbacks
1 parent 420ca50 commit 4d8d82c

File tree

1 file changed

+23
-30
lines changed

1 file changed

+23
-30
lines changed

app/keepers/keepers.go

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ import (
6464
icahost "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host"
6565
icahostkeeper "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/keeper"
6666
icahosttypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types"
67+
ibccallbacks "github.com/cosmos/ibc-go/v10/modules/apps/callbacks"
6768
ibctransfer "github.com/cosmos/ibc-go/v10/modules/apps/transfer"
6869
ibctransferkeeper "github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper"
6970
ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types"
@@ -115,12 +116,9 @@ type AppKeepers struct {
115116
PacketForwardKeeper *packetforwardkeeper.Keeper
116117

117118
// Modules
118-
TransferModule ibctransfer.AppModule
119119
TMLightClientModule ibctm.LightClientModule
120120
// IBC hooks
121-
IBCHooksKeeper *ibchookskeeper.Keeper
122-
ICS20WasmHooks *ibchooks.WasmHooks
123-
HooksICS4Wrapper *ibchooks.ICS4Middleware
121+
IBCHooksKeeper *ibchookskeeper.Keeper
124122
}
125123

126124
func NewAppKeeper(
@@ -315,42 +313,30 @@ func NewAppKeeper(
315313
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
316314
)
317315

318-
// Configure the hooks keeper
319-
hooksKeeper := ibchookskeeper.NewKeeper(appKeepers.keys[ibchookstypes.StoreKey])
320-
appKeepers.IBCHooksKeeper = &hooksKeeper
321-
wasmHooks := ibchooks.NewWasmHooks(&hooksKeeper, appKeepers.WasmKeeper, constants.Bech32PrefixAccAddr)
322-
appKeepers.ICS20WasmHooks = &wasmHooks
323-
hooksICS4Wrapper := ibchooks.NewICS4Middleware(
324-
appKeepers.IBCKeeper.ChannelKeeper,
325-
appKeepers.ICS20WasmHooks,
326-
)
327-
appKeepers.HooksICS4Wrapper = &hooksICS4Wrapper
328-
329316
appKeepers.PacketForwardKeeper = packetforwardkeeper.NewKeeper(
330317
appCodec,
331318
runtime.NewKVStoreService(appKeepers.keys[packetforwardtypes.StoreKey]),
332319
appKeepers.TransferKeeper, // Will be zero-value here. Reference is set later on with SetTransferKeeper.
333320
appKeepers.IBCKeeper.ChannelKeeper,
334321
appKeepers.BankKeeper,
335-
appKeepers.HooksICS4Wrapper,
322+
appKeepers.IBCKeeper.ChannelKeeper, // ICS4Wrapper
336323
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
337324
)
338325

339326
transferKeeper := ibctransferkeeper.NewKeeper(
340327
appCodec,
341328
runtime.NewKVStoreService(appKeepers.keys[ibctransfertypes.StoreKey]),
342329
appKeepers.GetSubspace(ibctransfertypes.ModuleName),
343-
// The ICS4Wrapper is replaced by the PacketForwardKeeper
330+
// The ICS4Wrapper is replaced by the callback stack later in the code
344331
// so that sending can be overridden by the middleware
345-
appKeepers.PacketForwardKeeper,
332+
appKeepers.IBCKeeper.ChannelKeeper, // ICS4Wrapper, replaced by the stack
346333
appKeepers.IBCKeeper.ChannelKeeper,
347334
bApp.MsgServiceRouter(),
348335
appKeepers.AccountKeeper,
349336
appKeepers.BankKeeper,
350337
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
351338
)
352339
appKeepers.TransferKeeper = &transferKeeper
353-
appKeepers.TransferModule = ibctransfer.NewAppModule(*appKeepers.TransferKeeper)
354340
appKeepers.PacketForwardKeeper.SetTransferKeeper(*appKeepers.TransferKeeper)
355341

356342
icaHostKeeper := icahostkeeper.NewKeeper(
@@ -399,8 +385,6 @@ func NewAppKeeper(
399385
),
400386
)
401387

402-
transferIBCModule := ibctransfer.NewIBCModule(*appKeepers.TransferKeeper)
403-
404388
evidenceKeeper := evidencekeeper.NewKeeper(
405389
appCodec,
406390
runtime.NewKVStoreService(appKeepers.keys[evidencetypes.StoreKey]),
@@ -442,27 +426,36 @@ func NewAppKeeper(
442426
)
443427
appKeepers.WasmKeeper = &wasmKeeper
444428
// Set ics20 wasm hooks the initialised wasmkeeper
445-
appKeepers.ICS20WasmHooks.ContractKeeper = appKeepers.WasmKeeper
446-
447-
var icaHostStack ibctypes.IBCModule
448-
icaHostStack = icahost.NewIBCModule(*appKeepers.ICAHostKeeper)
429+
// Configure the hooks keeper
430+
hooksKeeper := ibchookskeeper.NewKeeper(appKeepers.keys[ibchookstypes.StoreKey])
431+
appKeepers.IBCHooksKeeper = &hooksKeeper
432+
wasmIBCHooks := ibchooks.NewWasmHooks(&hooksKeeper, appKeepers.WasmKeeper, constants.Bech32PrefixAccAddr)
433+
hooksICS4Wrapper := ibchooks.NewICS4Middleware(
434+
appKeepers.IBCKeeper.ChannelKeeper,
435+
&wasmIBCHooks,
436+
)
449437

438+
wasmStack := wasm.NewIBCHandler(appKeepers.WasmKeeper, appKeepers.IBCKeeper.ChannelKeeper, appKeepers.IBCKeeper.ChannelKeeper)
450439
//SendPacket --> Transfer -> PFM -> ibcHooks -> IBC-Core (ICS4Wrappers)
451440
//RecvPacket --> IBC-Core -> ibcHooks -> PFM -> Transfer (AddRoute)
452-
var transferStack ibctypes.IBCModule = transferIBCModule
441+
maxCallbackGas := uint64(10_000_000) // const
442+
443+
var transferStack ibctypes.IBCModule = ibctransfer.NewIBCModule(*appKeepers.TransferKeeper)
444+
transferStack = ibccallbacks.NewIBCMiddleware(transferStack, &hooksICS4Wrapper, wasmStack, maxCallbackGas)
445+
hookStack := ibchooks.NewIBCMiddleware(transferStack, &hooksICS4Wrapper)
446+
appKeepers.TransferKeeper.WithICS4Wrapper(hookStack) // does not matter to use transfer stack, as pfm send is no-op
447+
453448
transferStack = packetforward.NewIBCMiddleware(
454-
transferStack,
449+
hookStack,
455450
appKeepers.PacketForwardKeeper,
456451
0, // no retries on timeout
457452
packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp,
458453
)
459-
transferStack = ibchooks.NewIBCMiddleware(transferStack, appKeepers.HooksICS4Wrapper)
460454

461455
// Information will flow: ibc-port -> icaController.
462456
icaControllerStack := icacontroller.NewIBCMiddleware(*appKeepers.ICAControllerKeeper)
463457

464-
var wasmStack ibctypes.IBCModule
465-
wasmStack = wasm.NewIBCHandler(appKeepers.WasmKeeper, appKeepers.IBCKeeper.ChannelKeeper, appKeepers.IBCKeeper.ChannelKeeper)
458+
icaHostStack := icahost.NewIBCModule(*appKeepers.ICAHostKeeper)
466459

467460
ibcRouter := ibctypes.NewRouter().
468461
AddRoute(ibctransfertypes.ModuleName, transferStack).

0 commit comments

Comments
 (0)