Skip to content

Commit 9589144

Browse files
committed
provider migration boilerplate
1 parent 9521ecb commit 9589144

File tree

6 files changed

+34
-19
lines changed

6 files changed

+34
-19
lines changed

app/provider/app.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ import (
109109

110110
const (
111111
AppName = "interchain-security-p"
112-
upgradeName = "v07-Theta"
112+
upgradeName = "ics-v1-to-v2"
113113
AccountAddressPrefix = "cosmos"
114114
)
115115

@@ -415,7 +415,7 @@ func New(
415415
authtypes.FeeCollectorName,
416416
)
417417

418-
providerModule := ibcprovider.NewAppModule(&app.ProviderKeeper)
418+
providerModule := ibcprovider.NewAppModule(&app.ProviderKeeper, app.GetSubspace(providertypes.ModuleName))
419419

420420
// register the proposal types
421421
govRouter := govtypes.NewRouter()
@@ -616,6 +616,8 @@ func New(
616616
app.SetBeginBlocker(app.BeginBlocker)
617617
app.SetEndBlocker(app.EndBlocker)
618618

619+
// Note this upgrade handler is just an example and may not be exactly what you need to implement.
620+
// See https://docs.cosmos.network/v0.45/building-modules/upgrade.html
619621
app.UpgradeKeeper.SetUpgradeHandler(
620622
upgradeName,
621623
func(ctx sdk.Context, _ upgradetypes.Plan, _ module.VersionMap) (module.VersionMap, error) {

x/ccv/provider/ibc_module_test.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ import (
2424
// See: https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/methods.md#ccv-pcf-coinit1
2525
// Spec Tag: [CCV-PCF-COINIT.1]
2626
func TestOnChanOpenInit(t *testing.T) {
27+
keeperParams := testkeeper.NewInMemKeeperParams(t)
2728
providerKeeper, ctx, ctrl, _ := testkeeper.GetProviderKeeperAndCtx(
28-
t, testkeeper.NewInMemKeeperParams(t))
29+
t, keeperParams)
2930
defer ctrl.Finish()
30-
providerModule := provider.NewAppModule(&providerKeeper)
31+
providerModule := provider.NewAppModule(&providerKeeper, *keeperParams.ParamsSubspace)
3132

3233
// OnChanOpenInit must error for provider even with correct arguments
3334
_, err := providerModule.OnChanOpenInit(
@@ -112,9 +113,10 @@ func TestOnChanOpenTry(t *testing.T) {
112113
for _, tc := range testCases {
113114

114115
// Setup
116+
keeperParams := testkeeper.NewInMemKeeperParams(t)
115117
providerKeeper, ctx, ctrl, mocks := testkeeper.GetProviderKeeperAndCtx(
116-
t, testkeeper.NewInMemKeeperParams(t))
117-
providerModule := provider.NewAppModule(&providerKeeper)
118+
t, keeperParams)
119+
providerModule := provider.NewAppModule(&providerKeeper, *keeperParams.ParamsSubspace)
118120

119121
providerKeeper.SetPort(ctx, ccv.ProviderPortID)
120122
providerKeeper.SetConsumerClientId(ctx, "consumerChainID", "clientIDToConsumer")
@@ -181,10 +183,11 @@ func TestOnChanOpenTry(t *testing.T) {
181183
// See: https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/methods.md#ccv-pcf-coack1
182184
// Spec tag: [CCV-PCF-COACK.1]
183185
func TestOnChanOpenAck(t *testing.T) {
186+
keeperParams := testkeeper.NewInMemKeeperParams(t)
184187
providerKeeper, ctx, ctrl, _ := testkeeper.GetProviderKeeperAndCtx(
185-
t, testkeeper.NewInMemKeeperParams(t))
188+
t, keeperParams)
186189
defer ctrl.Finish()
187-
providerModule := provider.NewAppModule(&providerKeeper)
190+
providerModule := provider.NewAppModule(&providerKeeper, *keeperParams.ParamsSubspace)
188191

189192
// OnChanOpenAck must error for provider even with correct arguments
190193
err := providerModule.OnChanOpenAck(
@@ -296,16 +299,17 @@ func TestOnChanOpenConfirm(t *testing.T) {
296299

297300
for _, tc := range testCases {
298301

302+
keeperParams := testkeeper.NewInMemKeeperParams(t)
299303
providerKeeper, ctx, ctrl, mocks := testkeeper.GetProviderKeeperAndCtx(
300-
t, testkeeper.NewInMemKeeperParams(t))
304+
t, keeperParams)
301305

302306
gomock.InOrder(tc.mockExpectations(ctx, mocks)...)
303307

304308
if tc.setDuplicateChannel {
305309
providerKeeper.SetChainToChannel(ctx, "consumerChainID", "existingChannelID")
306310
}
307311

308-
providerModule := provider.NewAppModule(&providerKeeper)
312+
providerModule := provider.NewAppModule(&providerKeeper, *keeperParams.ParamsSubspace)
309313

310314
err := providerModule.OnChanOpenConfirm(ctx, "providerPortID", "channelID")
311315

x/ccv/provider/keeper/keeper.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,3 +1060,7 @@ func (k Keeper) GetSlashLog(
10601060
bz := store.Get(types.SlashLogKey(providerAddr))
10611061
return bz != nil
10621062
}
1063+
1064+
func (k Keeper) BondDenom(ctx sdk.Context) string {
1065+
return k.stakingKeeper.BondDenom(ctx)
1066+
}

x/ccv/provider/keeper/migration.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,18 @@ import (
77
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
88
ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types"
99
v2providertypes "github.com/cosmos/interchain-security/v2/x/ccv/provider/types"
10-
v2ccvtypes "github.com/cosmos/interchain-security/v2/x/ccv/types"
1110
v1providertypes "github.com/cosmos/interchain-security/x/ccv/provider/types"
1211
v1ccvtypes "github.com/cosmos/interchain-security/x/ccv/types"
1312
)
1413

1514
// Migrator is a struct for handling in-place store migrations.
1615
type Migrator struct {
1716
ccvProviderKeeper Keeper
18-
stakingKeeper v2ccvtypes.StakingKeeper
1917
ccvProviderParamSpace paramtypes.Subspace
2018
}
2119

2220
// NewMigrator returns a new Migrator.
23-
func NewMigrator(ccvProviderKeeper Keeper, stakingKeeper v2ccvtypes.StakingKeeper,
24-
ccvProviderParamSpace paramtypes.Subspace,
21+
func NewMigrator(ccvProviderKeeper Keeper, ccvProviderParamSpace paramtypes.Subspace,
2522
) Migrator {
2623
return Migrator{ccvProviderKeeper: ccvProviderKeeper, ccvProviderParamSpace: ccvProviderParamSpace}
2724
}
@@ -33,7 +30,7 @@ func (m Migrator) Migratev1Tov2(ctx sdk.Context) error {
3330
// See https://github.com/cosmos/interchain-security/blob/7861804cb311507ec6aebebbfad60ea42eb8ed4b/x/ccv/provider/keeper/params.go#L84
3431
// The v1.1.0-multiden version of ICS hardcodes this param as 10 of bond type: k.stakingKeeper.BondDenom(ctx).
3532
// Here we use the same starting value, but the param can now be changed through governance.
36-
sdk.NewCoin(m.stakingKeeper.BondDenom(ctx), sdk.NewInt(10000000)),
33+
sdk.NewCoin(m.ccvProviderKeeper.BondDenom(ctx), sdk.NewInt(10000000)),
3734
)
3835

3936
return nil

x/ccv/provider/module.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
sdk "github.com/cosmos/cosmos-sdk/types"
1313
"github.com/cosmos/cosmos-sdk/types/module"
1414
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
15+
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
1516
porttypes "github.com/cosmos/ibc-go/v4/modules/core/05-port/types"
1617
"github.com/cosmos/interchain-security/v2/x/ccv/provider/client/cli"
1718
"github.com/cosmos/interchain-security/v2/x/ccv/provider/keeper"
@@ -88,13 +89,15 @@ func (AppModuleBasic) GetQueryCmd() *cobra.Command {
8889
// AppModule represents the AppModule for this module
8990
type AppModule struct {
9091
AppModuleBasic
91-
keeper *keeper.Keeper
92+
keeper *keeper.Keeper
93+
paramSpace paramtypes.Subspace
9294
}
9395

9496
// NewAppModule creates a new provider module
95-
func NewAppModule(k *keeper.Keeper) AppModule {
97+
func NewAppModule(k *keeper.Keeper, paramSpace paramtypes.Subspace) AppModule {
9698
return AppModule{
97-
keeper: k,
99+
keeper: k,
100+
paramSpace: paramSpace,
98101
}
99102
}
100103

@@ -122,6 +125,11 @@ func (am AppModule) LegacyQuerierHandler(*codec.LegacyAmino) sdk.Querier {
122125
func (am AppModule) RegisterServices(cfg module.Configurator) {
123126
providertypes.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper))
124127
providertypes.RegisterQueryServer(cfg.QueryServer(), am.keeper)
128+
129+
m := keeper.NewMigrator(*am.keeper, am.paramSpace)
130+
if err := cfg.RegisterMigration(providertypes.ModuleName, 1, m.Migratev1Tov2); err != nil {
131+
panic(fmt.Sprintf("failed to register migrator: %s", err))
132+
}
125133
}
126134

127135
// InitGenesis performs genesis initialization for the provider module. It returns no validator updates.

x/ccv/provider/module_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func TestInitGenesis(t *testing.T) {
9494
keeperParams := testkeeper.NewInMemKeeperParams(t)
9595
providerKeeper, ctx, ctrl, mocks := testkeeper.GetProviderKeeperAndCtx(t, keeperParams)
9696

97-
appModule := provider.NewAppModule(&providerKeeper)
97+
appModule := provider.NewAppModule(&providerKeeper, *keeperParams.ParamsSubspace)
9898
genState := types.NewGenesisState(
9999
providerKeeper.GetValidatorSetUpdateId(ctx),
100100
nil,

0 commit comments

Comments
 (0)