Skip to content

Commit a0464fa

Browse files
chore: integrate IBC packet forward middleware
1 parent fe1fe95 commit a0464fa

File tree

5 files changed

+43
-4
lines changed

5 files changed

+43
-4
lines changed

app/app_config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ import (
6363
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
6464
_ "github.com/cosmos/cosmos-sdk/x/staking" // import for side-effects
6565
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
66+
packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types"
6667
_ "github.com/cosmos/ibc-go/modules/capability" // import for side-effects
6768
capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
6869
_ "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts" // import for side-effects
@@ -126,6 +127,7 @@ var (
126127
authz.ModuleName,
127128
ibctransfertypes.ModuleName,
128129
icatypes.ModuleName,
130+
packetforwardtypes.ModuleName,
129131
ibcfeetypes.ModuleName,
130132
feegrant.ModuleName,
131133
paramstypes.ModuleName,

app/ibc.go

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,18 @@ package app
33
import (
44
// this line is used by starport scaffolding # ibc/app/import
55

6+
"time"
7+
68
"cosmossdk.io/core/appmodule"
79
storetypes "cosmossdk.io/store/types"
810
cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
911
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
1012
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
1113
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
1214
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
15+
"github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward"
16+
packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper"
17+
packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types"
1318
"github.com/cosmos/ibc-go/modules/capability"
1419
capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper"
1520
capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
@@ -49,6 +54,7 @@ func (app *App) registerIBCModules() {
4954
storetypes.NewKVStoreKey(icacontrollertypes.StoreKey),
5055
storetypes.NewMemoryStoreKey(capabilitytypes.MemStoreKey),
5156
storetypes.NewTransientStoreKey(paramstypes.TStoreKey),
57+
storetypes.NewKVStoreKey(packetforwardtypes.StoreKey),
5258
); err != nil {
5359
panic(err)
5460
}
@@ -140,8 +146,28 @@ func (app *App) registerIBCModules() {
140146
)
141147
app.Keepers.GovKeeper.SetLegacyRouter(govRouter)
142148

143-
// Create IBC modules with ibcfee middleware
144-
transferIBCModule := ibcfee.NewIBCMiddleware(ibctransfer.NewIBCModule(app.Keepers.TransferKeeper), app.Keepers.IBCFeeKeeper)
149+
// Create IBC packet forward keeper
150+
app.Keepers.PacketForwardKeeper = *packetforwardkeeper.NewKeeper(
151+
app.AppCodec(),
152+
app.GetKey(packetforwardtypes.StoreKey),
153+
app.Keepers.TransferKeeper,
154+
app.Keepers.IBCKeeper.ChannelKeeper,
155+
app.Keepers.BankKeeper,
156+
app.Keepers.IBCFeeKeeper,
157+
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
158+
)
159+
160+
// Create IBC modules with ibcfee middleware, wrapped in packet forward middleware
161+
rawTransferModule := ibctransfer.NewIBCModule(app.Keepers.TransferKeeper)
162+
transferWithPFM := packetforward.NewIBCMiddleware(
163+
rawTransferModule,
164+
&app.Keepers.PacketForwardKeeper,
165+
// TODO_IN_THIS_COMMIT: extract to constants and/or comment if gov params would be appropriate...
166+
3,
167+
60*time.Second,
168+
)
169+
170+
transferIBCModule := ibcfee.NewIBCMiddleware(transferWithPFM, app.Keepers.IBCFeeKeeper)
145171

146172
// integration point for custom authentication modules
147173
var noAuthzModule porttypes.IBCModule
@@ -176,6 +202,7 @@ func (app *App) registerIBCModules() {
176202
capability.NewAppModule(app.appCodec, *app.Keepers.CapabilityKeeper, false),
177203
ibctm.AppModule{},
178204
solomachine.AppModule{},
205+
packetforward.NewAppModule(&app.Keepers.PacketForwardKeeper, app.GetSubspace(packetforwardtypes.ModuleName)),
179206
); err != nil {
180207
panic(err)
181208
}

app/keepers/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
2424
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
2525
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
26+
packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper"
2627
capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper"
2728
icacontrollerkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/keeper"
2829
icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper"
@@ -67,6 +68,7 @@ type Keepers struct {
6768
ICAControllerKeeper icacontrollerkeeper.Keeper
6869
ICAHostKeeper icahostkeeper.Keeper
6970
TransferKeeper ibctransferkeeper.Keeper
71+
PacketForwardKeeper packetforwardkeeper.Keeper
7072

7173
// Scoped IBC
7274
ScopedIBCKeeper capabilitykeeper.ScopedKeeper

go.mod

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ require (
6262
github.com/go-kit/kit v0.13.0
6363
github.com/gogo/status v1.1.0
6464
github.com/golang/mock v1.6.0
65-
github.com/golang/protobuf v1.5.4 // indirect
65+
github.com/golang/protobuf v1.5.4
6666
github.com/gorilla/mux v1.8.1
6767
github.com/gorilla/websocket v1.5.3
6868
github.com/grpc-ecosystem/grpc-gateway v1.16.0
@@ -108,7 +108,10 @@ require (
108108
golang.org/x/term v0.32.0
109109
)
110110

111-
require github.com/go-chi/chi/v5 v5.2.1
111+
require (
112+
github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.2.0
113+
github.com/go-chi/chi/v5 v5.2.1
114+
)
112115

113116
require (
114117
4d63.com/gocheckcompilerdirectives v1.3.0 // indirect
@@ -315,6 +318,7 @@ require (
315318
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
316319
github.com/hexops/gotextdiff v1.0.3 // indirect
317320
github.com/huandu/skiplist v1.2.1 // indirect
321+
github.com/iancoleman/orderedmap v0.3.0 // indirect
318322
github.com/iancoleman/strcase v0.3.0 // indirect
319323
github.com/improbable-eng/grpc-web v0.15.0 // indirect
320324
github.com/inconshreveable/mousetrap v1.1.0 // indirect

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,8 @@ github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fr
506506
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
507507
github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8=
508508
github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw=
509+
github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.2.0 h1:rM+S14DFiqmu6Rc3PuhvWqwywPsnt/CbIslSnBftPFs=
510+
github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.2.0/go.mod h1:O5H9Ic3Pe6cmJn1eqlj5N48sLb8WQ1VWmDP4/11g/4E=
509511
github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI=
510512
github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E=
511513
github.com/cosmos/ibc-go/v8 v8.7.0 h1:HqhVOkO8bDpClXE81DFQgFjroQcTvtpm0tCS7SQVKVY=
@@ -985,6 +987,8 @@ github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0Jr
985987
github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w=
986988
github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
987989
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
990+
github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc=
991+
github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE=
988992
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
989993
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
990994
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=

0 commit comments

Comments
 (0)