Skip to content

Commit f3fc6b1

Browse files
authored
Merge pull request #447 from persistenceOne/puneet/ibccallbacks
feat: wire ibccallbacks
2 parents 8fdc297 + 76b240b commit f3fc6b1

File tree

4 files changed

+28
-33
lines changed

4 files changed

+28
-33
lines changed

app/keepers/keepers.go

Lines changed: 24 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,37 @@ func NewAppKeeper(
442426
)
443427
appKeepers.WasmKeeper = &wasmKeeper
444428
// Set ics20 wasm hooks the initialised wasmkeeper
445-
appKeepers.ICS20WasmHooks.ContractKeeper = appKeepers.WasmKeeper
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+
)
446437

447-
var icaHostStack ibctypes.IBCModule
448-
icaHostStack = icahost.NewIBCModule(*appKeepers.ICAHostKeeper)
438+
wasmStack := wasm.NewIBCHandler(appKeepers.WasmKeeper, appKeepers.IBCKeeper.ChannelKeeper, appKeepers.IBCKeeper.ChannelKeeper)
439+
//SendPacket --> Transfer -> callbacks -> ibchooks -> IBC-Core (ICS4Wrappers)
440+
//RecvPacket --> IBC-Core -> PFM -> ibcHooks -> callback -> Transfer (AddRoute)
441+
maxCallbackGas := uint64(10_000_000) // const
442+
443+
var transferStack ibctypes.IBCModule = ibctransfer.NewIBCModule(*appKeepers.TransferKeeper)
444+
cbStack := ibccallbacks.NewIBCMiddleware(transferStack, &hooksICS4Wrapper, wasmStack, maxCallbackGas)
445+
transferStack = ibchooks.NewIBCMiddleware(cbStack, &hooksICS4Wrapper)
449446

450-
//SendPacket --> Transfer -> PFM -> ibcHooks -> IBC-Core (ICS4Wrappers)
451-
//RecvPacket --> IBC-Core -> ibcHooks -> PFM -> Transfer (AddRoute)
452-
var transferStack ibctypes.IBCModule = transferIBCModule
453447
transferStack = packetforward.NewIBCMiddleware(
454448
transferStack,
455449
appKeepers.PacketForwardKeeper,
456450
0, // no retries on timeout
457451
packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp,
458452
)
459-
transferStack = ibchooks.NewIBCMiddleware(transferStack, appKeepers.HooksICS4Wrapper)
453+
454+
appKeepers.TransferKeeper.WithICS4Wrapper(cbStack) // does not matter to use transfer stack, as pfm send is no-op
460455

461456
// Information will flow: ibc-port -> icaController.
462457
icaControllerStack := icacontroller.NewIBCMiddleware(*appKeepers.ICAControllerKeeper)
463458

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

467461
ibcRouter := ibctypes.NewRouter().
468462
AddRoute(ibctransfertypes.ModuleName, transferStack).

app/modules.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import (
5050
ibchookstypes "github.com/cosmos/ibc-apps/modules/ibc-hooks/v10/types"
5151
ica "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts"
5252
icatypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types"
53+
ibctransfer "github.com/cosmos/ibc-go/v10/modules/apps/transfer"
5354
ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types"
5455
ibc "github.com/cosmos/ibc-go/v10/modules/core"
5556
ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported"
@@ -104,7 +105,7 @@ func appModules(
104105
packetforward.NewAppModule(app.PacketForwardKeeper, app.GetSubspace(packetforwardtypes.ModuleName)),
105106
params.NewAppModule(*app.ParamsKeeper),
106107
halving.NewAppModule(appCodec, *app.HalvingKeeper),
107-
app.TransferModule,
108+
ibctransfer.NewAppModule(*app.TransferKeeper),
108109
ibchooks.NewAppModule(*app.AccountKeeper),
109110
ica.NewAppModule(app.ICAControllerKeeper, app.ICAHostKeeper),
110111
wasm.NewAppModule(appCodec, app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasm.ModuleName)),

app/upgrades/testnet/v16.0.0-rc0/constants.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ var Upgrade = upgrades.Upgrade{
1717
CreateUpgradeHandler: CreateUpgradeHandler,
1818
StoreUpgrades: store.StoreUpgrades{
1919
Added: []string{protocolpooltypes.StoreKey},
20-
Deleted: []string{}, // TODO crisis??
20+
Deleted: []string{},
2121
},
2222
}

app/upgrades/v16.0.0/constants.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ var Upgrade = upgrades.Upgrade{
1717
CreateUpgradeHandler: CreateUpgradeHandler,
1818
StoreUpgrades: store.StoreUpgrades{
1919
Added: []string{protocolpooltypes.StoreKey},
20-
Deleted: []string{}, //TODO crisis?
20+
Deleted: []string{},
2121
},
2222
}

0 commit comments

Comments
 (0)