diff --git a/app/app.go b/app/app.go index 6bd7a709..6559198c 100644 --- a/app/app.go +++ b/app/app.go @@ -44,7 +44,7 @@ import ( "github.com/OmniFlix/omniflixhub/app/keepers" "github.com/OmniFlix/omniflixhub/app/upgrades" - v2 "github.com/OmniFlix/omniflixhub/app/upgrades/v2" + v012 "github.com/OmniFlix/omniflixhub/app/upgrades/v012" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" ) @@ -67,7 +67,7 @@ func getGovProposalHandlers() []govclient.ProposalHandler { var ( // DefaultNodeHome default home directories for the application daemon DefaultNodeHome string - Upgrades = []upgrades.Upgrade{v2.Upgrade} + Upgrades = []upgrades.Upgrade{v012.Upgrade} Forks []upgrades.Fork ) diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index a87ea98b..6873ace8 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -66,6 +66,10 @@ import ( icahostkeeper "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/keeper" icahosttypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/types" + packetforward "github.com/strangelove-ventures/packet-forward-middleware/v4/router" + packetforwardkeeper "github.com/strangelove-ventures/packet-forward-middleware/v4/router/keeper" + packetforwardtypes "github.com/strangelove-ventures/packet-forward-middleware/v4/router/types" + allockeeper "github.com/OmniFlix/omniflixhub/x/alloc/keeper" alloctypes "github.com/OmniFlix/omniflixhub/x/alloc/types" @@ -89,23 +93,24 @@ type AppKeepers struct { memKeys map[string]*sdk.MemoryStoreKey // keepers - AccountKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.Keeper - CapabilityKeeper *capabilitykeeper.Keeper - StakingKeeper stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - MintKeeper mintkeeper.Keeper - DistrKeeper distrkeeper.Keeper - GovKeeper govkeeper.Keeper - CrisisKeeper crisiskeeper.Keeper - UpgradeKeeper upgradekeeper.Keeper - ParamsKeeper paramskeeper.Keeper - IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - ICAHostKeeper icahostkeeper.Keeper - EvidenceKeeper evidencekeeper.Keeper - TransferKeeper ibctransferkeeper.Keeper - FeeGrantKeeper feegrantkeeper.Keeper - AuthzKeeper authzkeeper.Keeper + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + CapabilityKeeper *capabilitykeeper.Keeper + StakingKeeper stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + MintKeeper mintkeeper.Keeper + DistrKeeper distrkeeper.Keeper + GovKeeper govkeeper.Keeper + CrisisKeeper crisiskeeper.Keeper + UpgradeKeeper upgradekeeper.Keeper + ParamsKeeper paramskeeper.Keeper + IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly + ICAHostKeeper icahostkeeper.Keeper + EvidenceKeeper evidencekeeper.Keeper + TransferKeeper ibctransferkeeper.Keeper + PacketForwardKeeper *packetforwardkeeper.Keeper + FeeGrantKeeper feegrantkeeper.Keeper + AuthzKeeper authzkeeper.Keeper // make scoped keepers public for test purposes ScopedIBCKeeper capabilitykeeper.ScopedKeeper @@ -261,19 +266,31 @@ func NewAppKeeper( AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(appKeepers.UpgradeKeeper)). AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(appKeepers.IBCKeeper.ClientKeeper)) + // initialize ibc packet forwarding middleware router + appKeepers.PacketForwardKeeper = packetforwardkeeper.NewKeeper( + appCodec, appKeepers.keys[packetforwardtypes.StoreKey], + appKeepers.GetSubspace(packetforwardtypes.ModuleName), + appKeepers.TransferKeeper, // Will be zero-value here. Reference is set later on with SetTransferKeeper. + appKeepers.IBCKeeper.ChannelKeeper, + appKeepers.DistrKeeper, + appKeepers.BankKeeper, + appKeepers.IBCKeeper.ChannelKeeper, + ) + // Create Transfer Keepers appKeepers.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, appKeepers.keys[ibctransfertypes.StoreKey], appKeepers.GetSubspace(ibctransfertypes.ModuleName), - appKeepers.IBCKeeper.ChannelKeeper, + appKeepers.PacketForwardKeeper, appKeepers.IBCKeeper.ChannelKeeper, &appKeepers.IBCKeeper.PortKeeper, appKeepers.AccountKeeper, appKeepers.BankKeeper, appKeepers.ScopedTransferKeeper, ) - transferIBCModule := transfer.NewIBCModule(appKeepers.TransferKeeper) + // Set TransferKeeper reference in PacketForwardKeeper + appKeepers.PacketForwardKeeper.SetTransferKeeper(appKeepers.TransferKeeper) appKeepers.ICAHostKeeper = icahostkeeper.NewKeeper( appCodec, @@ -356,11 +373,21 @@ func NewAppKeeper( appKeepers.GetSubspace(itctypes.ModuleName), ) + var ibcStack porttypes.IBCModule + ibcStack = transfer.NewIBCModule(appKeepers.TransferKeeper) + ibcStack = packetforward.NewIBCMiddleware( + ibcStack, + appKeepers.PacketForwardKeeper, + 0, + packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp, + packetforwardkeeper.DefaultRefundTransferPacketTimeoutTimestamp, + ) + // Create static IBC router, add transfer route, then set and seal it ibcRouter := porttypes.NewRouter() ibcRouter. AddRoute(icahosttypes.SubModuleName, icaHostIBCModule). - AddRoute(ibctransfertypes.ModuleName, transferIBCModule) + AddRoute(ibctransfertypes.ModuleName, ibcStack) appKeepers.IBCKeeper.SetRouter(ibcRouter) @@ -388,6 +415,7 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(ibctransfertypes.ModuleName) paramsKeeper.Subspace(ibchost.ModuleName) paramsKeeper.Subspace(icahosttypes.SubModuleName) + paramsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable()) paramsKeeper.Subspace(alloctypes.ModuleName) paramsKeeper.Subspace(onfttypes.ModuleName) paramsKeeper.Subspace(marketplacetypes.ModuleName) diff --git a/app/keepers/keys.go b/app/keepers/keys.go index eb8ffae7..cc9491a7 100644 --- a/app/keepers/keys.go +++ b/app/keepers/keys.go @@ -24,6 +24,7 @@ import ( icahosttypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/types" ibctransfertypes "github.com/cosmos/ibc-go/v4/modules/apps/transfer/types" ibchost "github.com/cosmos/ibc-go/v4/modules/core/24-host" + packetforwardtypes "github.com/strangelove-ventures/packet-forward-middleware/v4/router/types" ) func (appKeepers *AppKeepers) GenerateKeys() { @@ -41,6 +42,7 @@ func (appKeepers *AppKeepers) GenerateKeys() { evidencetypes.StoreKey, ibctransfertypes.StoreKey, icahosttypes.StoreKey, + packetforwardtypes.StoreKey, capabilitytypes.StoreKey, feegrant.StoreKey, authzkeeper.StoreKey, diff --git a/app/modules.go b/app/modules.go index d92e609c..aa440706 100644 --- a/app/modules.go +++ b/app/modules.go @@ -61,6 +61,9 @@ import ( icatypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/types" "github.com/cosmos/ibc-go/v4/modules/apps/transfer" + packetforward "github.com/strangelove-ventures/packet-forward-middleware/v4/router" + packetforwardtypes "github.com/strangelove-ventures/packet-forward-middleware/v4/router/types" + "github.com/OmniFlix/omniflixhub/x/alloc" alloctypes "github.com/OmniFlix/omniflixhub/x/alloc/types" @@ -95,6 +98,7 @@ var ( slashing.AppModuleBasic{}, ibc.AppModuleBasic{}, ica.AppModuleBasic{}, + packetforward.AppModuleBasic{}, feegrantmodule.AppModuleBasic{}, authzmodule.AppModuleBasic{}, upgrade.AppModuleBasic{}, @@ -157,6 +161,7 @@ func appModules( params.NewAppModule(app.ParamsKeeper), transfer.NewAppModule(app.TransferKeeper), ica.NewAppModule(nil, &app.ICAHostKeeper), + packetforward.NewAppModule(app.PacketForwardKeeper), alloc.NewAppModule(appCodec, app.AllocKeeper), onft.NewAppModule(appCodec, app.ONFTKeeper, app.AccountKeeper, app.BankKeeper, app.DistrKeeper), marketplace.NewAppModule(appCodec, app.MarketplaceKeeper), @@ -219,6 +224,7 @@ func orderBeginBlockers() []string { paramstypes.ModuleName, ibctransfertypes.ModuleName, icatypes.ModuleName, + packetforwardtypes.ModuleName, genutiltypes.ModuleName, authz.ModuleName, authtypes.ModuleName, @@ -246,6 +252,7 @@ func orderEndBlockers() []string { paramstypes.ModuleName, ibctransfertypes.ModuleName, icatypes.ModuleName, + packetforwardtypes.ModuleName, minttypes.ModuleName, slashingtypes.ModuleName, distrtypes.ModuleName, @@ -290,6 +297,7 @@ func orderInitGenesis() []string { ibchost.ModuleName, ibctransfertypes.ModuleName, icatypes.ModuleName, + packetforwardtypes.ModuleName, alloctypes.ModuleName, onfttypes.ModuleName, marketplacetypes.ModuleName, diff --git a/app/upgrades/v2/constants.go b/app/upgrades/v012/constants.go similarity index 63% rename from app/upgrades/v2/constants.go rename to app/upgrades/v012/constants.go index b5b2afc5..8d0101d2 100644 --- a/app/upgrades/v2/constants.go +++ b/app/upgrades/v012/constants.go @@ -1,17 +1,18 @@ -package v2 +package v012 import ( "github.com/OmniFlix/omniflixhub/app/upgrades" store "github.com/cosmos/cosmos-sdk/store/types" icahosttypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/types" + packetforwardtypes "github.com/strangelove-ventures/packet-forward-middleware/v4/router/types" ) -const UpgradeName = "v2" +const UpgradeName = "v0.12.x" var Upgrade = upgrades.Upgrade{ UpgradeName: UpgradeName, CreateUpgradeHandler: CreateUpgradeHandler, StoreUpgrades: store.StoreUpgrades{ - Added: []string{icahosttypes.StoreKey}, + Added: []string{icahosttypes.StoreKey, packetforwardtypes.StoreKey}, }, } diff --git a/app/upgrades/v2/upgrades.go b/app/upgrades/v012/upgrades.go similarity index 89% rename from app/upgrades/v2/upgrades.go rename to app/upgrades/v012/upgrades.go index ab7070d9..1bcaf9cd 100644 --- a/app/upgrades/v2/upgrades.go +++ b/app/upgrades/v012/upgrades.go @@ -1,4 +1,4 @@ -package v2 +package v012 import ( "github.com/OmniFlix/omniflixhub/app/keepers" @@ -11,6 +11,7 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" icahosttypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/types" + packetforwardtypes "github.com/strangelove-ventures/packet-forward-middleware/v4/router/types" ) func CreateUpgradeHandler( @@ -48,7 +49,10 @@ func CreateUpgradeHandler( keepers.ICAHostKeeper.SetParams(ctx, hostParams) - // campaign migrations + // Packet Forward middleware initial params + keepers.PacketForwardKeeper.SetParams(ctx, packetforwardtypes.DefaultParams()) + + // itc campaigns migrations campaigns := keepers.ItcKeeper.GetAllCampaigns(ctx) for _, campaign := range campaigns { claims := keepers.ItcKeeper.GetClaims(ctx, campaign.Id) diff --git a/go.mod b/go.mod index 6e05bbc8..0799c2f7 100644 --- a/go.mod +++ b/go.mod @@ -15,6 +15,7 @@ require ( github.com/spf13/cast v1.5.0 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 + github.com/strangelove-ventures/packet-forward-middleware/v4 v4.0.6 github.com/stretchr/testify v1.8.1 github.com/tendermint/tendermint v0.34.28 github.com/tendermint/tm-db v0.6.7 @@ -75,7 +76,6 @@ require ( github.com/gogo/gateway v1.1.0 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect - github.com/google/gofuzz v1.2.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -87,6 +87,7 @@ require ( github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/iancoleman/orderedmap v0.2.0 // indirect github.com/improbable-eng/grpc-web v0.14.1 // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jmhodges/levigo v1.0.0 // indirect diff --git a/go.sum b/go.sum index 9e9b01b9..88eac61c 100644 --- a/go.sum +++ b/go.sum @@ -141,8 +141,8 @@ github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx2 github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= -github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd v0.22.2 h1:vBZ+lGGd1XubpOWO67ITJpAEsICWhA0YzqkcpkgNBfo= github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= @@ -458,7 +458,6 @@ github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -556,6 +555,8 @@ github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= +github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= @@ -941,6 +942,8 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/strangelove-ventures/packet-forward-middleware/v4 v4.0.6 h1:aY64yjKZyDyzlIbDOkGBPvVpR0ArzIjunpCRKqoIm7o= +github.com/strangelove-ventures/packet-forward-middleware/v4 v4.0.6/go.mod h1:4zAtg449/JISRmf+sbmqolqSLP+QJBh+EtWkWtt/AKE= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=