diff --git a/x/masterchef/keeper/user_reward_info.go b/x/masterchef/keeper/user_reward_info.go index 97f25d91c..8ec1b4a71 100644 --- a/x/masterchef/keeper/user_reward_info.go +++ b/x/masterchef/keeper/user_reward_info.go @@ -7,15 +7,19 @@ import ( ) func (k Keeper) SetUserRewardInfo(ctx sdk.Context, userReward types.UserRewardInfo) { - store := ctx.KVStore(k.storeKey) + //store := ctx.KVStore(k.storeKey) b := k.cdc.MustMarshal(&userReward) - key := types.GetUserRewardInfoKey(userReward.GetUserAccount(), userReward.GetPoolId(), userReward.GetRewardDenom()) + //key := types.GetUserRewardInfoKey(userReward.GetUserAccount(), userReward.GetPoolId(), userReward.GetRewardDenom()) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LegacyUserRewardInfoKeyPrefix)) + key := types.LegacyUserRewardInfoKey(userReward.User, userReward.PoolId, userReward.RewardDenom) store.Set(key, b) } func (k Keeper) GetUserRewardInfo(ctx sdk.Context, user sdk.AccAddress, poolId uint64, rewardDenom string) (val types.UserRewardInfo, found bool) { - store := ctx.KVStore(k.storeKey) - key := types.GetUserRewardInfoKey(user, poolId, rewardDenom) + //store := ctx.KVStore(k.storeKey) + //key := types.GetUserRewardInfoKey(user, poolId, rewardDenom) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LegacyUserRewardInfoKeyPrefix)) + key := types.LegacyUserRewardInfoKey(user.String(), poolId, rewardDenom) b := store.Get(key) if b == nil { return val, false @@ -25,15 +29,17 @@ func (k Keeper) GetUserRewardInfo(ctx sdk.Context, user sdk.AccAddress, poolId u return val, true } -func (k Keeper) RemoveUserRewardInfo(ctx sdk.Context, user sdk.AccAddress, poolId uint64, rewardDenom string) { - store := ctx.KVStore(k.storeKey) - key := types.GetUserRewardInfoKey(user, poolId, rewardDenom) - store.Delete(key) -} +//func (k Keeper) RemoveUserRewardInfo(ctx sdk.Context, user sdk.AccAddress, poolId uint64, rewardDenom string) { +// store := ctx.KVStore(k.storeKey) +// key := types.GetUserRewardInfoKey(user, poolId, rewardDenom) +// store.Delete(key) +//} func (k Keeper) GetAllUserRewardInfos(ctx sdk.Context) (list []types.UserRewardInfo) { - store := ctx.KVStore(k.storeKey) - iterator := sdk.KVStorePrefixIterator(store, types.UserRewardInfoKeyPrefix) + //store := ctx.KVStore(k.storeKey) + //iterator := sdk.KVStorePrefixIterator(store, types.UserRewardInfoKeyPrefix) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LegacyUserRewardInfoKeyPrefix)) + iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -47,23 +53,26 @@ func (k Keeper) GetAllUserRewardInfos(ctx sdk.Context) (list []types.UserRewardI } // remove after migration -func (k Keeper) DeleteLegacyUserRewardInfo(ctx sdk.Context, user string, poolId uint64, rewardDenom string) { +func (k Keeper) RemoveUserRewardInfo(ctx sdk.Context, user string, poolId uint64, rewardDenom string) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LegacyUserRewardInfoKeyPrefix)) store.Delete(types.LegacyUserRewardInfoKey(user, poolId, rewardDenom)) } // remove after migration -func (k Keeper) GetAllLegacyUserRewardInfos(ctx sdk.Context) (list []types.UserRewardInfo) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LegacyUserRewardInfoKeyPrefix)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.UserRewardInfo - k.cdc.MustUnmarshal(iterator.Value(), &val) - list = append(list, val) - } - - return -} +// TODO: Optimise user reward info KV +//func (k Keeper) MigrateFromV2UserRewardInfos(ctx sdk.Context) { +// store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LegacyUserRewardInfoKeyPrefix)) +// iterator := sdk.KVStorePrefixIterator(store, []byte{}) +// +// defer iterator.Close() +// +// for ; iterator.Valid(); iterator.Next() { +// var legacyUserRewardInfo types.UserRewardInfo +// k.cdc.MustUnmarshal(iterator.Value(), &legacyUserRewardInfo) +// +// k.SetUserRewardInfo(ctx, legacyUserRewardInfo) +// k.DeleteLegacyUserRewardInfo(ctx, legacyUserRewardInfo.User, legacyUserRewardInfo.PoolId, legacyUserRewardInfo.RewardDenom) +// } +// +// return +//} diff --git a/x/masterchef/keeper/user_reward_info_test.go b/x/masterchef/keeper/user_reward_info_test.go index 79c50fc3d..7c897c550 100644 --- a/x/masterchef/keeper/user_reward_info_test.go +++ b/x/masterchef/keeper/user_reward_info_test.go @@ -52,7 +52,7 @@ func TestUserRewardInfo(t *testing.T) { rewardInfosStored := app.MasterchefKeeper.GetAllUserRewardInfos(ctx) require.Len(t, rewardInfosStored, 3) - app.MasterchefKeeper.RemoveUserRewardInfo(ctx, userRewardInfos[0].GetUserAccount(), userRewardInfos[0].PoolId, userRewardInfos[0].RewardDenom) + app.MasterchefKeeper.RemoveUserRewardInfo(ctx, userRewardInfos[0].User, userRewardInfos[0].PoolId, userRewardInfos[0].RewardDenom) rewardInfosStored = app.MasterchefKeeper.GetAllUserRewardInfos(ctx) require.Len(t, rewardInfosStored, 2) } diff --git a/x/masterchef/migrations/v3_migration.go b/x/masterchef/migrations/v3_migration.go index 0a2caa40b..635eeabd2 100644 --- a/x/masterchef/migrations/v3_migration.go +++ b/x/masterchef/migrations/v3_migration.go @@ -9,11 +9,7 @@ func (m Migrator) V3Migration(ctx sdk.Context) error { m.keeper.SetParams(ctx, params) m.keeper.DeleteLegacyParams(ctx) - legacyUserRewardInfos := m.keeper.GetAllLegacyUserRewardInfos(ctx) - for _, legacyUserRewardInfo := range legacyUserRewardInfos { - m.keeper.SetUserRewardInfo(ctx, legacyUserRewardInfo) - m.keeper.DeleteLegacyUserRewardInfo(ctx, legacyUserRewardInfo.User, legacyUserRewardInfo.PoolId, legacyUserRewardInfo.RewardDenom) - } + //m.keeper.MigrateFromV2UserRewardInfos(ctx) legacyPoolInfos := m.keeper.GetAllLegacyPoolInfos(ctx) for _, legacyPoolInfo := range legacyPoolInfos { diff --git a/x/masterchef/module.go b/x/masterchef/module.go index e22bcf4f2..d78a1077e 100644 --- a/x/masterchef/module.go +++ b/x/masterchef/module.go @@ -120,7 +120,7 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) types.RegisterQueryServer(cfg.QueryServer(), am.keeper) m := migrations.NewMigrator(am.keeper) - err := cfg.RegisterMigration(types.ModuleName, 1, m.V2Migration) + err := cfg.RegisterMigration(types.ModuleName, 2, m.V3Migration) if err != nil { panic(err) } @@ -147,7 +147,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // ConsensusVersion is a sequence number for state-breaking change of the module. It should be incremented on each consensus-breaking change introduced by the module. To avoid wrong/empty versions, the initial version should be set to 1 -func (AppModule) ConsensusVersion() uint64 { return 2 } +func (AppModule) ConsensusVersion() uint64 { return 3 } // BeginBlock contains the logic that is automatically triggered at the beginning of each block func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {}