Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: import cycle resolution with migration records #5596

Merged
merged 17 commits into from
Jun 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/keepers/keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ func (appKeepers *AppKeepers) InitNormalKeepers(
appKeepers.DistrKeeper,
appKeepers.PoolManagerKeeper,
appKeepers.EpochsKeeper,
appKeepers.SuperfluidKeeper,
appKeepers.GAMMKeeper,
)
appKeepers.PoolIncentivesKeeper = &poolIncentivesKeeper
appKeepers.PoolManagerKeeper.SetPoolIncentivesKeeper(appKeepers.PoolIncentivesKeeper)
Expand Down
6 changes: 3 additions & 3 deletions app/upgrades/v16/concentrated_pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"github.com/osmosis-labs/osmosis/v16/app/keepers"
clmodel "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/model"
gammkeeper "github.com/osmosis-labs/osmosis/v16/x/gamm/keeper"
gammtypes "github.com/osmosis-labs/osmosis/v16/x/gamm/types"
gammmigration "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration"
"github.com/osmosis-labs/osmosis/v16/x/poolmanager"
poolmanagertypes "github.com/osmosis-labs/osmosis/v16/x/poolmanager/types"
)
Expand Down Expand Up @@ -70,8 +70,8 @@ func createCanonicalConcentratedLiquidityPoolAndMigrationLink(ctx sdk.Context, c

// Set the migration link in x/gamm.
// This will also migrate the CFMM distribution records to point to the new CL pool.
err = keepers.GAMMKeeper.OverwriteMigrationRecordsAndRedirectDistrRecords(ctx, gammtypes.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammtypes.BalancerToConcentratedPoolLink{
err = keepers.GAMMKeeper.OverwriteMigrationRecordsAndRedirectDistrRecords(ctx, gammmigration.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammmigration.BalancerToConcentratedPoolLink{
{
BalancerPoolId: cfmmPoolId,
ClPoolId: concentratedPool.GetId(),
Expand Down
6 changes: 3 additions & 3 deletions app/upgrades/v16/concentrated_pool_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (

"github.com/osmosis-labs/osmosis/v16/app/apptesting"
v16 "github.com/osmosis-labs/osmosis/v16/app/upgrades/v16"
gammtypes "github.com/osmosis-labs/osmosis/v16/x/gamm/types"
gammmigration "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration"
poolincentivestypes "github.com/osmosis-labs/osmosis/v16/x/pool-incentives/types"
)

Expand Down Expand Up @@ -244,8 +244,8 @@ func (suite *ConcentratedUpgradeTestSuite) TestCreateCanonicalConcentratedLiquid
// Validate migration record.
migrationInfo, err := suite.App.GAMMKeeper.GetAllMigrationInfo(suite.Ctx)
suite.Require().NoError(err)
suite.Require().Equal(migrationInfo, gammtypes.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammtypes.BalancerToConcentratedPoolLink{
suite.Require().Equal(migrationInfo, gammmigration.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammmigration.BalancerToConcentratedPoolLink{
{
BalancerPoolId: balancerId,
ClPoolId: clPoolInState.GetId(),
Expand Down
2 changes: 1 addition & 1 deletion proto/osmosis/gamm/v1beta1/shared.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import "google/protobuf/any.proto";
import "cosmos_proto/cosmos.proto";
import "cosmos/base/v1beta1/coin.proto";

option go_package = "github.com/osmosis-labs/osmosis/v16/x/gamm/types";
option go_package = "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration";

// MigrationRecords contains all the links between balancer and concentrated
// pools
Expand Down
6 changes: 3 additions & 3 deletions x/concentrated-liquidity/bench_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
clmodel "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/model"
"github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/types"
"github.com/osmosis-labs/osmosis/v16/x/gamm/pool-models/balancer"
gammtypes "github.com/osmosis-labs/osmosis/v16/x/gamm/types"
gammmigration "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration"
)

type BenchTestSuite struct {
Expand Down Expand Up @@ -102,8 +102,8 @@ func runBenchmark(b *testing.B, testFunc func(b *testing.B, s *BenchTestSuite, p
gammKeeper := s.App.GAMMKeeper

// Create a link between the balancer and cl pool.
record := gammtypes.BalancerToConcentratedPoolLink{BalancerPoolId: gammPoolId, ClPoolId: clPoolId}
err = gammKeeper.ReplaceMigrationRecords(s.Ctx, []gammtypes.BalancerToConcentratedPoolLink{record})
record := gammmigration.BalancerToConcentratedPoolLink{BalancerPoolId: gammPoolId, ClPoolId: clPoolId}
err = gammKeeper.ReplaceMigrationRecords(s.Ctx, []gammmigration.BalancerToConcentratedPoolLink{record})
s.Require().NoError(err)

_, err = gammKeeper.GetLinkedConcentratedPoolID(s.Ctx, gammPoolId)
Expand Down
17 changes: 9 additions & 8 deletions x/concentrated-liquidity/incentives_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/types"
"github.com/osmosis-labs/osmosis/v16/x/gamm/pool-models/balancer"
gammtypes "github.com/osmosis-labs/osmosis/v16/x/gamm/types"
gammmigration "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration"
poolincentivestypes "github.com/osmosis-labs/osmosis/v16/x/pool-incentives/types"
)

Expand Down Expand Up @@ -1019,8 +1020,8 @@ func (s *KeeperTestSuite) TestUpdateUptimeAccumulatorsToNow() {
// Create balancer pool and bond its shares
balancerPoolId = s.setupBalancerPoolWithFractionLocked(tc.canonicalBalancerPoolAssets, sdk.OneDec())
s.App.GAMMKeeper.OverwriteMigrationRecordsAndRedirectDistrRecords(s.Ctx,
gammtypes.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammtypes.BalancerToConcentratedPoolLink{
gammmigration.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammmigration.BalancerToConcentratedPoolLink{
{BalancerPoolId: balancerPoolId, ClPoolId: clPool.GetId()},
},
},
Expand Down Expand Up @@ -3589,8 +3590,8 @@ func (s *KeeperTestSuite) TestPrepareBalancerPoolAsFullRange() {
balancerPoolId = 0
} else {
s.App.GAMMKeeper.OverwriteMigrationRecordsAndRedirectDistrRecords(s.Ctx,
gammtypes.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammtypes.BalancerToConcentratedPoolLink{
gammmigration.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammmigration.BalancerToConcentratedPoolLink{
{BalancerPoolId: balancerPoolId, ClPoolId: clPool.GetId()},
},
},
Expand Down Expand Up @@ -3723,8 +3724,8 @@ func (s *KeeperTestSuite) TestPrepareBalancerPoolAsFullRangeWithNonExistentPools
}

s.App.GAMMKeeper.OverwriteMigrationRecordsAndRedirectDistrRecords(s.Ctx,
gammtypes.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammtypes.BalancerToConcentratedPoolLink{
gammmigration.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammmigration.BalancerToConcentratedPoolLink{
{BalancerPoolId: balancerPoolId, ClPoolId: clPool.GetId()},
},
},
Expand Down Expand Up @@ -3891,8 +3892,8 @@ func (s *KeeperTestSuite) TestClaimAndResetFullRangeBalancerPool() {

// Link the balancer and CL pools
s.App.GAMMKeeper.OverwriteMigrationRecordsAndRedirectDistrRecords(s.Ctx,
gammtypes.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammtypes.BalancerToConcentratedPoolLink{
gammmigration.MigrationRecords{
BalancerToConcentratedPoolLinks: []gammmigration.BalancerToConcentratedPoolLink{
{BalancerPoolId: balancerPoolId, ClPoolId: clPoolId},
},
})
Expand Down
7 changes: 4 additions & 3 deletions x/gamm/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"github.com/osmosis-labs/osmosis/v16/x/gamm/pool-models/balancer"
"github.com/osmosis-labs/osmosis/v16/x/gamm/pool-models/stableswap"
"github.com/osmosis-labs/osmosis/v16/x/gamm/types"
gammmigration "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration"
poolmanagertypes "github.com/osmosis-labs/osmosis/v16/x/poolmanager/types"

"github.com/cosmos/cosmos-sdk/client"
Expand Down Expand Up @@ -630,7 +631,7 @@ func ParseCoinsNoSort(coinsStr string) (sdk.Coins, error) {
return sdk.NormalizeCoins(decCoins), nil
}

func parseMigrationRecords(cmd *cobra.Command) ([]types.BalancerToConcentratedPoolLink, error) {
func parseMigrationRecords(cmd *cobra.Command) ([]gammmigration.BalancerToConcentratedPoolLink, error) {
assetsStr, err := cmd.Flags().GetString(FlagMigrationRecords)
if err != nil {
return nil, err
Expand All @@ -642,7 +643,7 @@ func parseMigrationRecords(cmd *cobra.Command) ([]types.BalancerToConcentratedPo
return nil, errors.New("migration records should be a list of balancer pool id and concentrated pool id pairs")
}

replaceMigrations := []types.BalancerToConcentratedPoolLink{}
replaceMigrations := []gammmigration.BalancerToConcentratedPoolLink{}
i := 0
for i < len(assets) {
balancerPoolId, err := strconv.Atoi(assets[i])
Expand All @@ -654,7 +655,7 @@ func parseMigrationRecords(cmd *cobra.Command) ([]types.BalancerToConcentratedPo
return nil, err
}

replaceMigrations = append(replaceMigrations, types.BalancerToConcentratedPoolLink{
replaceMigrations = append(replaceMigrations, gammmigration.BalancerToConcentratedPoolLink{
BalancerPoolId: uint64(balancerPoolId),
ClPoolId: uint64(clPoolId),
})
Expand Down
3 changes: 2 additions & 1 deletion x/gamm/keeper/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/osmosis-labs/osmosis/v16/x/gamm/types"
gammmigration "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration"
)

// InitGenesis initializes the x/gamm module's state from a provided genesis
Expand Down Expand Up @@ -36,7 +37,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState, unpack
k.setTotalLiquidity(ctx, liquidity)

if genState.MigrationRecords == nil {
k.SetMigrationRecords(ctx, types.MigrationRecords{})
k.SetMigrationRecords(ctx, gammmigration.MigrationRecords{})
} else {
k.SetMigrationRecords(ctx, *genState.MigrationRecords)
}
Expand Down
3 changes: 2 additions & 1 deletion x/gamm/keeper/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ import (

"github.com/osmosis-labs/osmosis/v16/x/gamm/pool-models/balancer"
"github.com/osmosis-labs/osmosis/v16/x/gamm/types"
gammmigration "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration"
)

var DefaultMigrationRecords = types.MigrationRecords{BalancerToConcentratedPoolLinks: []types.BalancerToConcentratedPoolLink{
var DefaultMigrationRecords = gammmigration.MigrationRecords{BalancerToConcentratedPoolLinks: []gammmigration.BalancerToConcentratedPoolLink{
{BalancerPoolId: 1, ClPoolId: 4},
{BalancerPoolId: 2, ClPoolId: 5},
{BalancerPoolId: 3, ClPoolId: 6},
Expand Down
25 changes: 13 additions & 12 deletions x/gamm/keeper/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/osmosis-labs/osmosis/osmoutils"
cltypes "github.com/osmosis-labs/osmosis/v16/x/concentrated-liquidity/types"
"github.com/osmosis-labs/osmosis/v16/x/gamm/types"
gammmigration "github.com/osmosis-labs/osmosis/v16/x/gamm/types/migration"
poolmanagertypes "github.com/osmosis-labs/osmosis/v16/x/poolmanager/types"

"github.com/cosmos/cosmos-sdk/store/prefix"
Expand Down Expand Up @@ -57,17 +58,17 @@ func (k Keeper) MigrateUnlockedPositionFromBalancerToConcentrated(ctx sdk.Contex

// GetAllMigrationInfo gets all existing links between Balancer Pool and Concentrated Pool,
// wraps and returns them in `MigrationRecords`.
func (k Keeper) GetAllMigrationInfo(ctx sdk.Context) (types.MigrationRecords, error) {
func (k Keeper) GetAllMigrationInfo(ctx sdk.Context) (gammmigration.MigrationRecords, error) {
store := ctx.KVStore(k.storeKey)
prefixStore := prefix.NewStore(store, types.KeyPrefixMigrationInfoBalancerPool)

iter := prefixStore.Iterator(nil, nil)
defer iter.Close()

balancerToClPoolLinks := []types.BalancerToConcentratedPoolLink{}
balancerToClPoolLinks := []gammmigration.BalancerToConcentratedPoolLink{}
for ; iter.Valid(); iter.Next() {
// balancer Pool Id
balancerToClPoolLink := types.BalancerToConcentratedPoolLink{}
balancerToClPoolLink := gammmigration.BalancerToConcentratedPoolLink{}
balancerToClPoolLink.BalancerPoolId = sdk.BigEndianToUint64(iter.Key())

// concentrated Pool Id
Expand All @@ -76,7 +77,7 @@ func (k Keeper) GetAllMigrationInfo(ctx sdk.Context) (types.MigrationRecords, er
balancerToClPoolLinks = append(balancerToClPoolLinks, balancerToClPoolLink)
}

migrationRecords := types.MigrationRecords{}
migrationRecords := gammmigration.MigrationRecords{}
migrationRecords.BalancerToConcentratedPoolLinks = balancerToClPoolLinks
return migrationRecords, nil
}
Expand Down Expand Up @@ -112,7 +113,7 @@ func (k Keeper) GetLinkedBalancerPoolID(ctx sdk.Context, concentratedPoolId uint
// OverwriteMigrationRecordsAndRedirectDistrRecords sets the balancer to gamm pool migration info to the store and deletes all existing records
// migrationInfo in state is completely overwitten by the given migrationInfo.
// Additionally, the distribution record for the balancer pool is modified to redirect incentives to the new concentrated pool.
func (k Keeper) OverwriteMigrationRecordsAndRedirectDistrRecords(ctx sdk.Context, migrationInfo types.MigrationRecords) error {
func (k Keeper) OverwriteMigrationRecordsAndRedirectDistrRecords(ctx sdk.Context, migrationInfo gammmigration.MigrationRecords) error {
store := ctx.KVStore(k.storeKey)

// delete all existing migration records
Expand All @@ -137,7 +138,7 @@ func (k Keeper) OverwriteMigrationRecordsAndRedirectDistrRecords(ctx sdk.Context
}

// SetMigrationRecords is used in initGenesis, setting the balancer to gamm pool migration info in store.
func (k Keeper) SetMigrationRecords(ctx sdk.Context, migrationInfo types.MigrationRecords) {
func (k Keeper) SetMigrationRecords(ctx sdk.Context, migrationInfo gammmigration.MigrationRecords) {
store := ctx.KVStore(k.storeKey)

for _, balancerToCLPoolLink := range migrationInfo.BalancerToConcentratedPoolLinks {
Expand Down Expand Up @@ -198,7 +199,7 @@ func (k Keeper) redirectDistributionRecord(ctx sdk.Context, cfmmPoolId, clPoolId
// 3) the balancer pool has exactly two tokens
// 4) the denoms of the tokens in the balancer pool match the denoms of the tokens in the gamm pool
// It also reorders records from lowest to highest balancer pool ID if they are not provided in order already.
func (k Keeper) validateRecords(ctx sdk.Context, records []types.BalancerToConcentratedPoolLink) error {
func (k Keeper) validateRecords(ctx sdk.Context, records []gammmigration.BalancerToConcentratedPoolLink) error {
lastBalancerPoolID := uint64(0)
balancerIdFlags := make(map[uint64]bool, len(records))
clIdFlags := make(map[uint64]bool, len(records))
Expand Down Expand Up @@ -284,7 +285,7 @@ func (k Keeper) validateRecords(ctx sdk.Context, records []types.BalancerToConce

// ReplaceMigrationRecords gets the current migration records and replaces it in its entirety with the provided records.
// It is checked for no err when a proposal is made, and executed when a proposal passes.
func (k Keeper) ReplaceMigrationRecords(ctx sdk.Context, records []types.BalancerToConcentratedPoolLink) error {
func (k Keeper) ReplaceMigrationRecords(ctx sdk.Context, records []gammmigration.BalancerToConcentratedPoolLink) error {
err := k.validateRecords(ctx, records)
if err != nil {
return err
Expand All @@ -307,13 +308,13 @@ func (k Keeper) ReplaceMigrationRecords(ctx sdk.Context, records []types.Balance

// UpdateMigrationRecords gets the current migration records and only updates the records that are provided.
// It is checked for no err when a proposal is made, and executed when a proposal passes.
func (k Keeper) UpdateMigrationRecords(ctx sdk.Context, records []types.BalancerToConcentratedPoolLink) error {
func (k Keeper) UpdateMigrationRecords(ctx sdk.Context, records []gammmigration.BalancerToConcentratedPoolLink) error {
err := k.validateRecords(ctx, records)
if err != nil {
return err
}

recordsMap := make(map[uint64]types.BalancerToConcentratedPoolLink, len(records))
recordsMap := make(map[uint64]gammmigration.BalancerToConcentratedPoolLink, len(records))

// Set up a map of the existing records
migrationInfos, err := k.GetAllMigrationInfo(ctx)
Expand All @@ -329,7 +330,7 @@ func (k Keeper) UpdateMigrationRecords(ctx sdk.Context, records []types.Balancer
recordsMap[record.BalancerPoolId] = record
}

newRecords := []types.BalancerToConcentratedPoolLink{}
newRecords := []gammmigration.BalancerToConcentratedPoolLink{}

// Iterate through the map and add all the records to a new list
// if the clPoolId is 0, we remove the entire record
Expand All @@ -346,7 +347,7 @@ func (k Keeper) UpdateMigrationRecords(ctx sdk.Context, records []types.Balancer

// We now have a list of all previous records, as well as records that have been updated.
// We can now remove all previous records and replace them with the new ones.
err = k.OverwriteMigrationRecordsAndRedirectDistrRecords(ctx, types.MigrationRecords{
err = k.OverwriteMigrationRecordsAndRedirectDistrRecords(ctx, gammmigration.MigrationRecords{
BalancerToConcentratedPoolLinks: newRecords,
})
if err != nil {
Expand Down
Loading