Skip to content

Commit 73858d7

Browse files
gjermundgarabasrdtrkEric-Warehime
authored
fix: IBC v1 transfer stack (ics4wrapper) (#3695)
* fix: IBC v1 transfer stack (ics4wrapper) * remove ibcfee in stack doc * update changelog * lint * Fix module initialization --------- Co-authored-by: srdtrk <srdtrk@hotmail.com> Co-authored-by: Eric Warehime <eric.warehime@gmail.com>
1 parent 5bc5a64 commit 73858d7

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
- Export only validators that are participating in consensus
3232
([\#3490](https://github.com/cosmos/gaia/pull/3490))
3333
- Fix goreleaser config to generate Linux builds again. ([\#3506](https://github.com/cosmos/gaia/pull/3506))
34+
- Wire IBC v1 transfer stack correctly ([\#3695](https://github.com/cosmos/gaia/pull/3695)
3435

3536
### IMPROVEMENTS
3637

app/keepers/keepers.go

+12-14
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ func NewAppKeeper(
463463
appCodec,
464464
runtime.NewKVStoreService(appKeepers.keys[ibctransfertypes.StoreKey]),
465465
appKeepers.GetSubspace(ibctransfertypes.ModuleName),
466-
appKeepers.PFMRouterKeeper, // ISC4 Wrapper: PFM Router middleware
466+
appKeepers.IBCKeeper.ChannelKeeper, // ISC4 Wrapper: This is overridden later
467467
appKeepers.IBCKeeper.ChannelKeeper,
468468
bApp.MsgServiceRouter(),
469469
appKeepers.AccountKeeper,
@@ -500,43 +500,35 @@ func NewAppKeeper(
500500
wasmOpts...,
501501
)
502502

503-
// Middleware Stacks
504-
appKeepers.ICAModule = ica.NewAppModule(&appKeepers.ICAControllerKeeper, &appKeepers.ICAHostKeeper)
505-
appKeepers.TransferModule = transfer.NewAppModule(appKeepers.TransferKeeper)
506-
appKeepers.PFMRouterModule = pfmrouter.NewAppModule(appKeepers.PFMRouterKeeper, appKeepers.GetSubspace(pfmroutertypes.ModuleName))
507-
appKeepers.RateLimitModule = ratelimit.NewAppModule(appCodec, appKeepers.RatelimitKeeper)
508-
509503
// wasmStackIBCHandler is injected into both ICA and transfer stacks
510504
wasmStackIBCHandler := wasm.NewIBCHandler(appKeepers.WasmKeeper, appKeepers.IBCKeeper.ChannelKeeper,
511505
appKeepers.IBCKeeper.ChannelKeeper)
512506

513507
// Create Transfer Stack (from bottom to top of stack)
514508
// - core IBC
515-
// - ibcfee
516509
// - ratelimit
517510
// - pfm
518511
// - provider
519512
// - callbacks
520513
// - transfer
521514
//
522515
// This is how transfer stack will work in the end:
523-
// * RecvPacket -> IBC core -> Fee -> RateLimit -> PFM -> Provider -> Callbacks -> Transfer (AddRoute)
524-
// * SendPacket -> Transfer -> Callbacks -> Provider -> PFM -> RateLimit -> Fee -> IBC core (ICS4Wrapper)
516+
// * RecvPacket -> IBC core -> RateLimit -> PFM -> Provider -> Callbacks -> Transfer (AddRoute)
517+
// * SendPacket -> Transfer -> Callbacks -> PFM -> RateLimit -> IBC core (ICS4Wrapper)
525518

526519
var transferStack porttypes.IBCModule
527520
transferStack = transfer.NewIBCModule(appKeepers.TransferKeeper)
528-
transferStack = ibccallbacks.NewIBCMiddleware(transferStack, appKeepers.IBCKeeper.ChannelKeeper, wasmStackIBCHandler,
521+
cbStack := ibccallbacks.NewIBCMiddleware(transferStack, appKeepers.PFMRouterKeeper, wasmStackIBCHandler,
529522
gaiaparams.MaxIBCCallbackGas)
530-
transferICS4Wrapper := transferStack.(porttypes.ICS4Wrapper)
531-
transferStack = icsprovider.NewIBCMiddleware(transferStack, appKeepers.ProviderKeeper)
523+
transferStack = icsprovider.NewIBCMiddleware(cbStack, appKeepers.ProviderKeeper)
532524
transferStack = pfmrouter.NewIBCMiddleware(
533525
transferStack,
534526
appKeepers.PFMRouterKeeper,
535527
0, // retries on timeout
536528
pfmrouterkeeper.DefaultForwardTransferPacketTimeoutTimestamp,
537529
)
538530
transferStack = ratelimit.NewIBCMiddleware(appKeepers.RatelimitKeeper, transferStack)
539-
appKeepers.TransferKeeper.WithICS4Wrapper(transferICS4Wrapper)
531+
appKeepers.TransferKeeper.WithICS4Wrapper(cbStack)
540532

541533
// Create ICAHost Stack
542534
var icaHostStack porttypes.IBCModule = icahost.NewIBCModule(appKeepers.ICAHostKeeper)
@@ -571,6 +563,12 @@ func NewAppKeeper(
571563
AddRoute(ibctransfertypes.PortID, transferStackV2)
572564
appKeepers.IBCKeeper.SetRouterV2(ibcv2Router)
573565

566+
// Middleware Stacks
567+
appKeepers.ICAModule = ica.NewAppModule(&appKeepers.ICAControllerKeeper, &appKeepers.ICAHostKeeper)
568+
appKeepers.TransferModule = transfer.NewAppModule(appKeepers.TransferKeeper)
569+
appKeepers.PFMRouterModule = pfmrouter.NewAppModule(appKeepers.PFMRouterKeeper, appKeepers.GetSubspace(pfmroutertypes.ModuleName))
570+
appKeepers.RateLimitModule = ratelimit.NewAppModule(appCodec, appKeepers.RatelimitKeeper)
571+
574572
return appKeepers
575573
}
576574

0 commit comments

Comments
 (0)