From 5d0a44a9ff2be793a01fed3cd4bf44cfd429362e Mon Sep 17 00:00:00 2001 From: p0p3yee Date: Tue, 30 Jul 2024 10:44:22 -0400 Subject: [PATCH] Add pep module v1 to v2 migration --- x/pep/keeper/migrations.go | 21 +++++++++++++++++++++ x/pep/migrations/v2/store.go | 33 +++++++++++++++++++++++++++++++++ x/pep/module/module.go | 6 +++++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 x/pep/keeper/migrations.go create mode 100644 x/pep/migrations/v2/store.go diff --git a/x/pep/keeper/migrations.go b/x/pep/keeper/migrations.go new file mode 100644 index 00000000..1a7005d9 --- /dev/null +++ b/x/pep/keeper/migrations.go @@ -0,0 +1,21 @@ +package keeper + +import ( + v2 "github.com/Fairblock/fairyring/x/pep/migrations/v2" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// Migrator is a struct for handling in-place store migrations. +type Migrator struct { + keeper Keeper +} + +// NewMigrator returns a new Migrator. +func NewMigrator(keeper Keeper) Migrator { + return Migrator{keeper: keeper} +} + +// Migrate1to2 migrates from version 1 to 2. +func (m Migrator) Migrate1to2(ctx sdk.Context) error { + return v2.MigrateStore(ctx, m.keeper.storeService, m.keeper.cdc) +} diff --git a/x/pep/migrations/v2/store.go b/x/pep/migrations/v2/store.go new file mode 100644 index 00000000..863105ca --- /dev/null +++ b/x/pep/migrations/v2/store.go @@ -0,0 +1,33 @@ +package v2 + +import ( + "cosmossdk.io/core/store" + "github.com/Fairblock/fairyring/x/pep/types" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// MigrateStore migrates the x/pep module state from the consensus version 1 to version 2. +func MigrateStore(ctx sdk.Context, storeService store.KVStoreService, cdc codec.BinaryCodec) error { + currParams := types.NewParams( + []string{"fairy1yhpqdugfmfuhlvekkurnkstf2vl82063ajmfe5", "fairy1r6q07ne3deq64ezcjwkedcfe6669f0ewpwnxy9"}, + []*types.TrustedCounterParty{ + { + ClientId: "07-tendermint-0", + ConnectionId: "connection-0", + ChannelId: "channel-1", + }, + }, + types.DefaultKeyshareChannelID, + &types.DefaultMinGasPrice, + true, + ) + + bz, err := cdc.Marshal(&currParams) + if err != nil { + return err + } + + store := storeService.OpenKVStore(ctx) + return store.Set(types.ParamsKey, bz) +} diff --git a/x/pep/module/module.go b/x/pep/module/module.go index 9cd4af4d..0c0f946f 100644 --- a/x/pep/module/module.go +++ b/x/pep/module/module.go @@ -55,7 +55,7 @@ var ( ) // ConsensusVersion defines the current x/pep module consensus version. -const ConsensusVersion = 1 +const ConsensusVersion = 2 // ---------------------------------------------------------------------------- // AppModuleBasic @@ -154,6 +154,10 @@ func NewAppModule( func (am AppModule) RegisterServices(cfg module.Configurator) { types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) types.RegisterQueryServer(cfg.QueryServer(), am.keeper) + m := keeper.NewMigrator(am.keeper) + if err := cfg.RegisterMigration(types.ModuleName, 1, m.Migrate1to2); err != nil { + panic(fmt.Errorf("failed to migrate x/%s from version 1 to 2: %w", types.ModuleName, err)) + } } // RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted)