diff --git a/CHANGELOG.md b/CHANGELOG.md index 358e8a7938f..34a1b7955ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,13 +75,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * [#7768](https://github.com/osmosis-labs/osmosis/pull/7768) Allow governance module account to transfer any CL position * [#7746](https://github.com/osmosis-labs/osmosis/pull/7746) Make forfeited incentives redeposit into the pool instead of sending to community pool * [#7785](https://github.com/osmosis-labs/osmosis/pull/7785) Remove reward claiming during position transfers -* [#7805](https://github.com/osmosis-labs/osmosis/pull/7805) Migrate remaining cl incentive accumulators * [#7833](https://github.com/osmosis-labs/osmosis/pull/7833) Bump max gas wanted per tx to 60 mil * [#7839](https://github.com/osmosis-labs/osmosis/pull/7839) Add ICA controller * [#7527](https://github.com/osmosis-labs/osmosis/pull/7527) Add 30M gas limit to CW pool contract calls * [#7855](https://github.com/osmosis-labs/osmosis/pull/7855) Whitelist address parameter for setting fee tokens * [#7857](https://github.com/osmosis-labs/osmosis/pull/7857) SuperfluidDelegationsByValidatorDenom query now returns equivalent staked amount * [#7912](https://github.com/osmosis-labs/osmosis/pull/7912) Default timeoutCommit to 2s +* [#7951](https://github.com/osmosis-labs/osmosis/pull/7951) Only migrate selected cl incentives * [#7938](https://github.com/osmosis-labs/osmosis/pull/7938) Add missing swap events for missing swap event for cw pools. ### SDK diff --git a/app/upgrades/v23/constants.go b/app/upgrades/v23/constants.go index 79f7fed9887..c20171eded1 100644 --- a/app/upgrades/v23/constants.go +++ b/app/upgrades/v23/constants.go @@ -17,12 +17,3 @@ var Upgrade = upgrades.Upgrade{ Deleted: []string{}, }, } - -var MigratedIncentiveAccumulatorPoolIDs = map[uint64]struct{}{ - 1423: {}, - 1213: {}, - 1298: {}, - 1297: {}, - 1292: {}, - 1431: {}, -} diff --git a/app/upgrades/v23/upgrades.go b/app/upgrades/v23/upgrades.go index b5700ac6693..f9129f5434c 100644 --- a/app/upgrades/v23/upgrades.go +++ b/app/upgrades/v23/upgrades.go @@ -14,6 +14,7 @@ import ( "github.com/osmosis-labs/osmosis/v24/app/keepers" "github.com/osmosis-labs/osmosis/v24/app/upgrades" concentratedliquidity "github.com/osmosis-labs/osmosis/v24/x/concentrated-liquidity" + concentratedtypes "github.com/osmosis-labs/osmosis/v24/x/concentrated-liquidity/types" ) const ( @@ -81,8 +82,8 @@ func CreateUpgradeHandler( // migrateMainnetPools migrates the specified mainnet pools to the new accumulator scaling factor. func migrateMainnetPools(ctx sdk.Context, concentratedKeeper concentratedliquidity.Keeper) error { - poolIDsToMigrate := make([]uint64, 0, len(MigratedIncentiveAccumulatorPoolIDs)) - for poolID := range MigratedIncentiveAccumulatorPoolIDs { + poolIDsToMigrate := make([]uint64, 0, len(concentratedtypes.MigratedIncentiveAccumulatorPoolIDs)) + for poolID := range concentratedtypes.MigratedIncentiveAccumulatorPoolIDs { poolIDsToMigrate = append(poolIDsToMigrate, poolID) } diff --git a/app/upgrades/v23/upgrades_test.go b/app/upgrades/v23/upgrades_test.go index ae0adc25e75..7fa2b7789a1 100644 --- a/app/upgrades/v23/upgrades_test.go +++ b/app/upgrades/v23/upgrades_test.go @@ -14,7 +14,6 @@ import ( "github.com/osmosis-labs/osmosis/osmomath" "github.com/osmosis-labs/osmosis/v24/app/apptesting" - v23 "github.com/osmosis-labs/osmosis/v24/app/upgrades/v23" concentratedtypes "github.com/osmosis-labs/osmosis/v24/x/concentrated-liquidity/types" ) @@ -88,29 +87,27 @@ func (s *UpgradeTestSuite) TestUpgrade() { s.Require().NotEmpty(nonMigratedPoolBeforeUpgradeIncentives) // Overwrite the migration list with the desired pool ID. - oldMigrationList := v23.MigratedIncentiveAccumulatorPoolIDs - v23.MigratedIncentiveAccumulatorPoolIDs = map[uint64]struct{}{} - v23.MigratedIncentiveAccumulatorPoolIDs[lastPoolID] = struct{}{} + oldMigrationList := concentratedtypes.MigratedIncentiveAccumulatorPoolIDs + concentratedtypes.MigratedIncentiveAccumulatorPoolIDs = map[uint64]struct{}{} + concentratedtypes.MigratedIncentiveAccumulatorPoolIDs[lastPoolID] = struct{}{} dummyUpgrade(s) s.Require().NotPanics(func() { s.App.BeginBlocker(s.Ctx, abci.RequestBeginBlock{}) }) - // NOTE: these no longer work as expected in versions later than v23, in v23 we decide between the old and new scaling factor. - // Since we're removing this choice, these test are not worrking as expected // Migrated pool: ensure that the claimable incentives are the same before and after migration - //migratedPoolAfterUpgradeIncentives, _, err := s.App.ConcentratedLiquidityKeeper.GetClaimableIncentives(s.Ctx, lastPoolPositionID) - //s.Require().NoError(err) - //s.Require().Equal(migratedPoolBeforeUpgradeIncentives.String(), migratedPoolAfterUpgradeIncentives.String()) + migratedPoolAfterUpgradeIncentives, _, err := s.App.ConcentratedLiquidityKeeper.GetClaimableIncentives(s.Ctx, lastPoolPositionID) + s.Require().NoError(err) + s.Require().Equal(migratedPoolBeforeUpgradeIncentives.String(), migratedPoolAfterUpgradeIncentives.String()) - //// Non-migrated pool: ensure that the claimable incentives are the same before and after migration - //nonMigratedPoolAfterUpgradeIncentives, _, err := s.App.ConcentratedLiquidityKeeper.GetClaimableIncentives(s.Ctx, lastPoolPositionID-1) - //s.Require().NoError(err) - //s.Require().Equal(nonMigratedPoolBeforeUpgradeIncentives.String(), nonMigratedPoolAfterUpgradeIncentives.String()) + // Non-migrated pool: ensure that the claimable incentives are the same before and after migration + nonMigratedPoolAfterUpgradeIncentives, _, err := s.App.ConcentratedLiquidityKeeper.GetClaimableIncentives(s.Ctx, lastPoolPositionID-1) + s.Require().NoError(err) + s.Require().Equal(nonMigratedPoolBeforeUpgradeIncentives.String(), nonMigratedPoolAfterUpgradeIncentives.String()) // Restore the migration list for use by other tests - v23.MigratedIncentiveAccumulatorPoolIDs = oldMigrationList + concentratedtypes.MigratedIncentiveAccumulatorPoolIDs = oldMigrationList } func dummyUpgrade(s *UpgradeTestSuite) { diff --git a/app/upgrades/v24/constants.go b/app/upgrades/v24/constants.go index 078ed10d76b..9ceaf414f77 100644 --- a/app/upgrades/v24/constants.go +++ b/app/upgrades/v24/constants.go @@ -22,810 +22,3 @@ var Upgrade = upgrades.Upgrade{ } var WhitelistedFeeTokenSetters = []string{"osmo17eqe9dpglajwd48r65lasq3mftra5q4uxce525htyvjdp0q037vqpurhve"} - -var FinalIncentiveAccumulatorPoolIDsToMigrate = map[uint64]struct{}{ - // token0 ibc/E7905742CE2EA4EA5D592527DC89220C59B617DE803939FE7293805A64B484D7 - // token1 uosmo - 1623: {}, - // token0 ibc/0B3D528E74E3DEAADF8A68F393887AC7E06028904D02173561B0D27F6E751D0A - // token1 uosmo - 1621: {}, - // token0 ibc/4017C65CEA338196ECCEC3FE3FE8258F23D1DE88F1D95750CC912C7A1C1016FF - // token1 uosmo - 1620: {}, - // token0 uosmo - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1619: {}, - // token0 ibc/BF685448E564B5A4AC8F6E0493A0B979D0E0BF5EC11F7E15D25A0A2160C944DD - // token1 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - 1610: {}, - // token0 ibc/BF685448E564B5A4AC8F6E0493A0B979D0E0BF5EC11F7E15D25A0A2160C944DD - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1609: {}, - // token0 ibc/4017C65CEA338196ECCEC3FE3FE8258F23D1DE88F1D95750CC912C7A1C1016FF - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1605: {}, - // token0 ibc/BD796662F8825327D41C96355DF62045A5BA225BAE31C0A86289B9D88ED3F44E - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1604: {}, - // token0 ibc/BF685448E564B5A4AC8F6E0493A0B979D0E0BF5EC11F7E15D25A0A2160C944DD - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1600: {}, - // token0 ibc/BF685448E564B5A4AC8F6E0493A0B979D0E0BF5EC11F7E15D25A0A2160C944DD - // token1 uosmo - 1598: {}, - // token0 factory/osmo1xx64sgt3wxeud99yn6f748pvljq5ljkzg3jw24/usunny - // token1 uosmo - 1597: {}, - // token0 ibc/C140AFD542AE77BD7DCC83F13FDD8C5E5BB8C4929785E6EC2F4C636F98F17901 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1594: {}, - // token0 ibc/B61F272C20D301DD6D0C036BDCDF8CD83A95EE594FBDD9977910AE69F58936D3 - // token1 uosmo - 1593: {}, - // token0 ibc/b61f272c20d301dd6d0c036bdcdf8cd83a95ee594fbdd9977910ae69f58936d3 - // token1 uosmo - 1592: {}, - // token0 ibc/63A7CA0B6838AD8CAD6B5103998FF9B9B6A6F06FBB9638BFF51E63E0142339F3 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1591: {}, - // token0 ibc/42D24879D4569CE6477B7E88206ADBFE47C222C6CAD51A54083E4A72594269FC - // token1 uosmo - 1590: {}, - // token0 ibc/FA602364BEC305A696CBDF987058E99D8B479F0318E47314C49173E8838C5BAC - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1589: {}, - // token0 ibc/D3327A763C23F01EC43D1F0DB3CEFEC390C362569B6FD191F40A5192F8960049 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1588: {}, - // token0 ibc/F867AE2112EFE646EC71A25CD2DFABB8927126AC1E19F1BBF0FF693A4ECA05DE - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1581: {}, - // token0 ibc/10E5E5B06D78FFBB61FD9F89209DEE5FD4446ED0550CBB8E3747DA79E10D9DC6 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1580: {}, - // token0 ibc/D53E785DC9C5C2CA50CADB1EFE4DE5D0C30418BE0E9C6F2AF9F092A247E8BC22 - // token1 ibc/9A76CDF0CBCEF37923F32518FA15E5DC92B9F56128292BC4D63C4AEA76CBB110 - 1566: {}, - // token0 ibc/BB0AFE2AFBD6E883690DAE4B9168EAC2B306BCC9C9292DACBB4152BBB08DB25F - // token1 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - 1565: {}, - // token0 ibc/D27DDDF34BB47E5D5A570742CC667DE53277867116CCCA341F27785E899A70F3 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1517: {}, - // token0 ibc/5D1F516200EE8C6B2354102143B78A2DEDA25EDE771AC0F8DC3C1837C8FD4447 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1516: {}, - // token0 ibc/FA58859465F0659B2C1C3F876F8BEEACAB8B34E803D696F49D428D9AFD0D3C3C - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1512: {}, - // token0 ibc/178248C262DE2E141EE6287EE7AB0854F05F25B0A3F40C4B912FA1C7E51F466E - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1507: {}, - // token0 nscr - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1506: {}, - // token0 ibc/57AA1A70A4BC9769C525EBF6386F7A21536E04A79D62E1981EFCEF9428EBB205 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1504: {}, - // token0 ibc/B1C287C2701774522570010EEBCD864BCB7AB714711B3AA218699FDD75E832F5 - // token1 uosmo - 1503: {}, - // token0 ibc/B1C287C2701774522570010EEBCD864BCB7AB714711B3AA218699FDD75E832F5 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1502: {}, - // token0 ibc/A4D176906C1646949574B48C1928D475F2DF56DE0AC04E1C99B08F90BC21ABDE - // token1 uosmo - 1501: {}, - // token0 ibc/A4D176906C1646949574B48C1928D475F2DF56DE0AC04E1C99B08F90BC21ABDE - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1500: {}, - // token0 ibc/A5CCD24BA902843B1003A7EEE5F937C632808B9CF4925601241B15C5A0A51A53 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1492: {}, - // token0 ibc/75345531D87BD90BF108BE7240BD721CB2CB0A1F16D4EBA71B09EC3C43E15C8F - // token1 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - 1490: {}, - // token0 ibc/1DCC8A6CB5689018431323953344A9F6CC4D0BFB261E88C9F7777372C10CD076 - // token1 uosmo - 1483: {}, - // token0 ibc/64BA6E31FE887D66C6F8F31C7B1A80C7CA179239677B4088BB55F5EA07DBE273 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1482: {}, - // token0 ibc/71F11BC0AF8E526B80E44172EBA9D3F0A8E03950BB882325435691EBC9450B1D - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1481: {}, - // token0 ibc/1480B8FD20AD5FCAE81EA87584D269547DD4D436843C1D20F15E00EB64743EF4 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1480: {}, - // token0 ibc/56D7C03B8F6A07AD322EEE1BEF3AE996E09D1C1E34C27CF37E0D4A0AC5972516 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1479: {}, - // token0 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1478: {}, - // token0 uosmo - // token1 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - 1477: {}, - // token0 ibc/698350B8A61D575025F3ED13E9AC9C0F45C89DEFE92F76D5838F1D3C1A7FF7C9 - // token1 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - 1476: {}, - // token0 factory/osmo1f5vfcph2dvfeqcqkhetwv75fda69z7e5c2dldm3kvgj23crkv6wqcn47a0/umilkTIA - // token1 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - 1475: {}, - // token0 ibc/F08DE332018E8070CC4C68FE06E04E254F527556A614F5F8F9A68AF38D367E45 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1474: {}, - // token0 ibc/1DCC8A6CB5689018431323953344A9F6CC4D0BFB261E88C9F7777372C10CD076 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1472: {}, - // token0 uosmo - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1465: {}, - // token0 uosmo - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1464: {}, - // token0 ibc/9A76CDF0CBCEF37923F32518FA15E5DC92B9F56128292BC4D63C4AEA76CBB110 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1450: {}, - // token0 ibc/9A76CDF0CBCEF37923F32518FA15E5DC92B9F56128292BC4D63C4AEA76CBB110 - // token1 uosmo - 1449: {}, - // token0 ibc/573FCD90FACEE750F55A8864EF7D38265F07E5A9273FA0E8DAFD39951332B580 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1447: {}, - // token0 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - // token1 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - 1441: {}, - // token0 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - // token1 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - 1440: {}, - // token0 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1439: {}, - // token0 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1438: {}, - // token0 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1437: {}, - // token0 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1436: {}, - // token0 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1435: {}, - // token0 uosmo - // token1 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - 1434: {}, - // token0 uosmo - // token1 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - 1433: {}, - // token0 uosmo - // token1 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - 1432: {}, - // token0 uosmo - // token1 ibc/D1542AA8762DB13087D8364F3EA6509FD6F009A34F00426AF9E4F9FA85CBBF1F - 1430: {}, - // token0 ibc/698350B8A61D575025F3ED13E9AC9C0F45C89DEFE92F76D5838F1D3C1A7FF7C9 - // token1 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - 1428: {}, - // token0 ibc/6F62F01D913E3FFE472A38C78235B8F021B511BC6596ADFF02615C8F83D3B373 - // token1 uosmo - 1427: {}, - // token0 ibc/D1542AA8762DB13087D8364F3EA6509FD6F009A34F00426AF9E4F9FA85CBBF1F - // token1 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - 1422: {}, - // token0 ibc/23AB778D694C1ECFC59B91D8C399C115CC53B0BD1C61020D8E19519F002BDD85 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1419: {}, - // token0 factory/osmo1pfyxruwvtwk00y8z06dh2lqjdj82ldvy74wzm3/WOSMO - // token1 uosmo - 1418: {}, - // token0 factory/osmo1pfyxruwvtwk00y8z06dh2lqjdj82ldvy74wzm3/WOSMO - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1417: {}, - // token0 ibc/75345531D87BD90BF108BE7240BD721CB2CB0A1F16D4EBA71B09EC3C43E15C8F - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1416: {}, - // token0 ibc/73BB20AF857D1FE6E061D01CA13870872AD0C979497CAF71BEA25B1CBF6879F1 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1410: {}, - // token0 factory/neutron154gg0wtm2v4h9ur8xg32ep64e8ef0g5twlsgvfeajqwghdryvyqsqhgk8e/APOLLO - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1409: {}, - // token0 ibc/6F62F01D913E3FFE472A38C78235B8F021B511BC6596ADFF02615C8F83D3B373 - // token1 uosmo - 1407: {}, - // token0 uosmo - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1400: {}, - // token0 uosmo - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1399: {}, - // token0 ibc/D1542AA8762DB13087D8364F3EA6509FD6F009A34F00426AF9E4F9FA85CBBF1F - // token1 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - 1398: {}, - // token0 ibc/5DD1F95ED336014D00CE2520977EC71566D282F9749170ADC83A392E0EA7426A - // token1 ibc/987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4 - 1397: {}, - // token0 ibc/126DA09104B71B164883842B769C0E9EC1486C0887D27A9999E395C2C8FB5682 - // token1 uosmo - 1388: {}, - // token0 ibc/2FFE07C4B4EFC0DDA099A16C6AF3C9CCA653CC56077E87217A585D48794B0BC7 - // token1 uosmo - 1387: {}, - // token0 ibc/183C0BB962D2F57C957E0B134CFA0AC9D6F755C02DE9DC2A59089BA23009DEC3 - // token1 uosmo - 1384: {}, - // token0 ibc/2DA9C149E9AD2BD27FEFA635458FB37093C256C1A940392634A16BEA45262604E - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1379: {}, - // token0 factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqtia - // token1 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - 1378: {}, - // token0 factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1376: {}, - // token0 ibc/2DA9C149E9AD2BD27FEFA635458FB37093C256C1A940392634A16BEA45262604 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1373: {}, - // token0 ibc/9BBA9A1C257E971E38C1422780CE6F0B0686F0A3085E2D61118D904BFE0F5F5E - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1372: {}, - // token0 ibc/1E43D59E565D41FB4E54CA639B838FFD5BCFC20003D330A56CB1396231AA1CBA - // token1 uosmo - 1370: {}, - // token0 ibc/37CB3078432510EE57B9AFA8DBE028B33AE3280A144826FEAC5F2334CF2C5539 - // token1 uosmo - 1361: {}, - // token0 ibc/4976049456D261659D0EC499CC9C2391D3C7D1128A0B9FB0BBF2842D1B2BC7BC - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1360: {}, - // token0 ibc/DDF1CD4CDC14AE2D6A3060193624605FF12DEE71CF1F8C19EEF35E9447653493 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1359: {}, - // token0 ibc/8A025A1E70101E39DE0C0F153E582A30806D3DA16795F6D868A3AA247D2DEDF7 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1358: {}, - // token0 ibc/831F0B1BBB1D08A2B75311892876D71565478C532967545476DF4C2D7492E48C - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1351: {}, - // token0 ibc/F4A070A6D78496D53127EA85C094A9EC87DFC1F36071B8CCDDBD020F933D213D - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1350: {}, - // token0 ibc/6F62F01D913E3FFE472A38C78235B8F021B511BC6596ADFF02615C8F83D3B373 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1349: {}, - // token0 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1348: {}, - // token0 uosmo - // token1 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - 1347: {}, - // token0 factory/osmo1mlng7pz4pnyxtpq0akfwall37czyk9lukaucsrn30ameplhhshtqdvfm5c/ulvn - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1337: {}, - // token0 factory/osmo1mlng7pz4pnyxtpq0akfwall37czyk9lukaucsrn30ameplhhshtqdvfm5c/ulvn - // token1 uosmo - 1336: {}, - // token0 factory/osmo1f5vfcph2dvfeqcqkhetwv75fda69z7e5c2dldm3kvgj23crkv6wqcn47a0/umilkTIA - // token1 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - 1335: {}, - // token0 ibc/BF685448E564B5A4AC8F6E0493A0B979D0E0BF5EC11F7E15D25A0A2160C944DD - // token1 uosmo - 1334: {}, - // token0 ibc/46AC07DBFF1352EC94AF5BD4D23740D92D9803A6B41F6E213E77F3A1143FB963 - // token1 uosmo - 1332: {}, - // token0 ibc/5DD1F95ED336014D00CE2520977EC71566D282F9749170ADC83A392E0EA7426A - // token1 ibc/987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4 - 1331: {}, - // token0 factory/osmo1mlng7pz4pnyxtpq0akfwall37czyk9lukaucsrn30ameplhhshtqdvfm5c/ulvn - // token1 uosmo - 1325: {}, - // token0 ibc/126DA09104B71B164883842B769C0E9EC1486C0887D27A9999E395C2C8FB5682 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1324: {}, - // token0 ibc/ECBE78BF7677320A93E7BA1761D144BCBF0CBC247C290C049655E106FE5DC68E - // token1 uosmo - 1323: {}, - // token0 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1322: {}, - // token0 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1321: {}, - // token0 ibc/64BA6E31FE887D66C6F8F31C7B1A80C7CA179239677B4088BB55F5EA07DBE273 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1319: {}, - // token0 ibc/EDD6F0D66BCD49C1084FB2C35353B4ACD7B9191117CE63671B61320548F7C89D - // token1 uosmo - 1318: {}, - // token0 ibc/CBA34207E969623D95D057D9B11B0C8B32B89A71F170577D982FDDE623813FFC - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1317: {}, - // token0 ibc/8242AD24008032E457D2E12D46588FD39FB54FB29680C6C7663D296B383C37C4 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1316: {}, - // token0 ibc/E42006ED917C769EDE1B474650EEA6BFE3F97958912B9206DD7010A28D01D9D5 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1315: {}, - // token0 ibc/1B708808D372E959CD4839C594960309283424C775F4A038AAEBE7F83A988477 - // token1 uosmo - 1314: {}, - // token0 ibc/F74225B0AFD2F675AF56E9BE3F235486BCDE5C5E09AA88A97AFD2E052ABFE04C - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1312: {}, - // token0 ibc/6928AFA9EA721938FED13B051F9DBF1272B16393D20C49EA5E4901BB76D94A90 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1305: {}, - // token0 ibc/D3A1900B2B520E45608B5671ADA461E1109628E89B4289099557C6D3996F7DAA - // token1 uosmo - 1304: {}, - // token0 ibc/020F5162B7BC40656FC5432622647091F00D53E82EE8D21757B43D3282F25424 - // token1 uosmo - 1303: {}, - // token0 ibc/4F3B0EC2FE2D370D10C3671A1B7B06D2A964C721470C305CBB846ED60E6CAA20 - // token1 uosmo - 1302: {}, - // token0 ibc/1480B8FD20AD5FCAE81EA87584D269547DD4D436843C1D20F15E00EB64743EF4 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1301: {}, - // token0 factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqatom - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1299: {}, - // token0 ibc/1E43D59E565D41FB4E54CA639B838FFD5BCFC20003D330A56CB1396231AA1CBA - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1294: {}, - // token0 factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqatom - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1293: {}, - // token0 ibc/C140AFD542AE77BD7DCC83F13FDD8C5E5BB8C4929785E6EC2F4C636F98F17901 - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1283: {}, - // token0 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1282: {}, - // token0 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - // token1 uosmo - 1281: {}, - // token0 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1280: {}, - // token0 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1279: {}, - // token0 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1278: {}, - // token0 ibc/D1542AA8762DB13087D8364F3EA6509FD6F009A34F00426AF9E4F9FA85CBBF1F - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1277: {}, - // token0 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - // token1 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - 1276: {}, - // token0 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - // token1 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - 1275: {}, - // token0 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1274: {}, - // token0 ibc/7A08C6F11EF0F59EB841B9F788A87EC9F2361C7D9703157EC13D940DC53031FA - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1273: {}, - // token0 ncheq - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1272: {}, - // token0 ibc/EA4C0A9F72E2CEDF10D0E7A9A6A22954DB3444910DB5BE980DF59B05A46DAD1C - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1271: {}, - // token0 factory/osmo1s794h9rxggytja3a4pmwul53u98k06zy2qtrdvjnfuxruh7s8yjs6cyxgd/ucdt - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1268: {}, - // token0 factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/squosmo - // token1 uosmo - 1267: {}, - // token0 uosmo - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1265: {}, - // token0 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1264: {}, - // token0 uosmo - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1263: {}, - // token0 ibc/6B99DB46AA9FF47162148C1726866919E44A6A5E0274B90912FD17E19A337695 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1262: {}, - // token0 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - // token1 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - 1261: {}, - // token0 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - // token1 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - 1260: {}, - // token0 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1259: {}, - // token0 ibc/23CA6C8D1AB2145DD13EB1E089A2E3F960DC298B468CCE034E19E5A78B61136E - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1258: {}, - // token0 ibc/75345531D87BD90BF108BE7240BD721CB2CB0A1F16D4EBA71B09EC3C43E15C8F - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1253: {}, - // token0 ibc/D176154B0C63D1F9C6DCFB4F70349EBF2E2B5A87A05902F57A6AE92B863E9AEC - // token1 uosmo - 1252: {}, - // token0 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1251: {}, - // token0 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - // token1 uosmo - 1248: {}, - // token0 ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1247: {}, - // token0 ibc/831F0B1BBB1D08A2B75311892876D71565478C532967545476DF4C2D7492E48C - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1246: {}, - // token0 ibc/831F0B1BBB1D08A2B75311892876D71565478C532967545476DF4C2D7492E48C - // token1 uosmo - 1245: {}, - // token0 ibc/A8CA5EE328FA10C9519DF6057DA1F69682D28F7D0F5CCC7ECB72E3DCA2D157A4 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1243: {}, - // token0 ibc/01D2F0C4739C871BFBEE7E786709E6904A55559DC1483DD92ED392EF12247862 - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1230: {}, - // token0 ibc/987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1228: {}, - // token0 ibc/B66CE615C600ED0A8B5AF425ECFE0D57BE2377587F66C45934A76886F34DC9B7 - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1227: {}, - // token0 ibc/92BE0717F4678905E53F4E45B2DED18BC0CB97BF1F8B6A25AFEDF3D5A879B4D5 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1224: {}, - // token0 ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858 - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1223: {}, - // token0 uosmo - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1221: {}, - // token0 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - // token1 ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4 - 1220: {}, - // token0 ibc/6B99DB46AA9FF47162148C1726866919E44A6A5E0274B90912FD17E19A337695 - // token1 uosmo - 1216: {}, - // token0 ibc/51D893F870B7675E507E91DA8DB0B22EA66333207E4F5C0708757F08EE059B0B - // token1 uosmo - 1215: {}, - // token0 ibc/62F82550D0B96522361C89B0DA1119DE262FBDFB25E5502BC5101B5C0D0DBAAC - // token1 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - 1214: {}, - // token0 ibc/E97634A40119F1898989C2A23224ED83FDD0A57EA46B3A094E287288D1672B44 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1209: {}, - // token0 ibc/A76EB6ECF4E3E2D4A23C526FD1B48FDD42F171B206C9D2758EF778A7826ADD68 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1208: {}, - // token0 ibc/B9E0A1A524E98BB407D3CED8720EFEFD186002F90C1B1B7964811DD0CCC12228 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1207: {}, - // token0 factory/osmo1xqw2sl9zk8a6pch0csaw78n4swg5ws8t62wc5qta4gnjxfqg6v2qcs243k/stuibcx - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1206: {}, - // token0 ibc/67795E528DF67C5606FC20F824EA39A6EF55BA133F4DC79C90A8C47A0901E17C - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1205: {}, - // token0 ibc/4E5444C35610CC76FC94E7F7886B93121175C28262DDFDDE6F84E82BF2425452 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1204: {}, - // token0 ibc/9712DBB13B9631EDFA9BF61B55F1B2D290B2ADB67E3A4EB3A875F3B6081B3B84 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1203: {}, - // token0 ibc/7C4D60AA95E5A7558B0A364860979CA34B7FF8AAF255B87AF9E879374470CEC0 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1202: {}, - // token0 ibc/57AA1A70A4BC9769C525EBF6386F7A21536E04A79D62E1981EFCEF9428EBB205 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1201: {}, - // token0 ibc/2DA9C149E9AD2BD27FEFA635458FB37093C256C1A940392634A16BEA45262604 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1200: {}, - // token0 ibc/9BBA9A1C257E971E38C1422780CE6F0B0686F0A3085E2D61118D904BFE0F5F5E - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1199: {}, - // token0 ibc/3BCCC93AD5DF58D11A6F8A05FA8BC801CBA0BA61A981F57E91B8B598BF8061CB - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1198: {}, - // token0 ibc/A0CC0CF735BFB30E730C70019D4218A1244FF383503FF7579C9201AB93CA9293 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1197: {}, - // token0 uion - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1196: {}, - // token0 ibc/573FCD90FACEE750F55A8864EF7D38265F07E5A9273FA0E8DAFD39951332B580 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1195: {}, - // token0 ibc/A8CA5EE328FA10C9519DF6057DA1F69682D28F7D0F5CCC7ECB72E3DCA2D157A4 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1194: {}, - // token0 ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1193: {}, - // token0 ibc/987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1192: {}, - // token0 ibc/0954E1C28EB7AF5B72D24F3BC2B47BBB2FDF91BDDFD57B74B99E133AED40972A - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1191: {}, - // token0 ibc/903A61A498756EA560B85A85132D3AEE21B5DEDD41213725D22ABF276EA6945E - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1190: {}, - // token0 ibc/903A61A498756EA560B85A85132D3AEE21B5DEDD41213725D22ABF276EA6945E - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1189: {}, - // token0 ibc/1480B8FD20AD5FCAE81EA87584D269547DD4D436843C1D20F15E00EB64743EF4 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1188: {}, - // token0 ibc/1480B8FD20AD5FCAE81EA87584D269547DD4D436843C1D20F15E00EB64743EF4 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1187: {}, - // token0 ibc/E6931F78057F7CC5DA0FD6CEF82FF39373A6E0452BF1FD76910B93292CF356C1 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1186: {}, - // token0 ibc/E6931F78057F7CC5DA0FD6CEF82FF39373A6E0452BF1FD76910B93292CF356C1 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1185: {}, - // token0 ibc/92BE0717F4678905E53F4E45B2DED18BC0CB97BF1F8B6A25AFEDF3D5A879B4D5 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1184: {}, - // token0 ibc/92BE0717F4678905E53F4E45B2DED18BC0CB97BF1F8B6A25AFEDF3D5A879B4D5 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1183: {}, - // token0 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1182: {}, - // token0 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1181: {}, - // token0 ibc/EDD6F0D66BCD49C1084FB2C35353B4ACD7B9191117CE63671B61320548F7C89D - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1172: {}, - // token0 ibc/6b99db46aa9ff47162148c1726866919e44a6a5e0274b90912fd17e19a337695 - // token1 uosmo - 1171: {}, - // token0 ibc/0B3D528E74E3DEAADF8A68F393887AC7E06028904D02173561B0D27F6E751D0A - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1170: {}, - // token0 ibc/1DCC8A6CB5689018431323953344A9F6CC4D0BFB261E88C9F7777372C10CD076 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1169: {}, - // token0 ibc/51d893f870b7675e507e91da8db0b22ea66333207e4f5c0708757f08ee059b0b - // token1 uosmo - 1168: {}, - // token0 ibc/8E697BDABE97ACE8773C6DF7402B2D1D5104DD1EEABE12608E3469B7F64C15BA - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1167: {}, - // token0 ibc/E09ED39F390EC51FA9F3F69BEA08B5BBE6A48B3057B2B1C3467FAAE9E58B021B - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1166: {}, - // token0 ibc/D805F1DA50D31B96E4282C1D4181EDDFB1A44A598BFF5666F4B43E4B8BEA95A5 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1165: {}, - // token0 ibc/126DA09104B71B164883842B769C0E9EC1486C0887D27A9999E395C2C8FB5682 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1164: {}, - // token0 ibc/785AFEC6B3741100D15E7AF01374E3C4C36F24888E96479B1C33F5C71F364EF9 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1163: {}, - // token0 ibc/0EF15DF2F02480ADE0BB6E85D9EBB5DAEA2836D3860E9F97F9AADE4F57A31AA0 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1162: {}, - // token0 ibc/BB6BCDB515050BAE97516111873CCD7BCF1FD0CCB723CC12F3C4F704D6C646CE - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1161: {}, - // token0 ibc/23AB778D694C1ECFC59B91D8C399C115CC53B0BD1C61020D8E19519F002BDD85 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1160: {}, - // token0 ibc/CEE970BB3D26F4B907097B6B660489F13F3B0DA765B83CC7D9A0BC0CE220FA6F - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1159: {}, - // token0 ibc/B1C1806A540B3E165A2D42222C59946FB85BA325596FC85662D7047649F419F3 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1158: {}, - // token0 ibc/D9AFCECDD361D38302AA66EB3BAC23B95234832C51D12489DC451FA2B7C72782 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1157: {}, - // token0 ibc/56D7C03B8F6A07AD322EEE1BEF3AE996E09D1C1E34C27CF37E0D4A0AC5972516 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1156: {}, - // token0 ibc/1B708808D372E959CD4839C594960309283424C775F4A038AAEBE7F83A988477 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1155: {}, - // token0 ibc/DD3938D8131F41994C1F01F4EB5233DEE9A0A5B787545B9A07A321925655BF38 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1154: {}, - // token0 ibc/208B2F137CDE510B44C41947C045CFDC27F996A9D990EA64460BDD5B3DBEB2ED - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1153: {}, - // token0 ibc/6727B2F071643B3841BD535ECDD4ED9CAE52ABDD0DCD07C3630811A7A37B215C - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1152: {}, - // token0 ibc/6727B2F071643B3841BD535ECDD4ED9CAE52ABDD0DCD07C3630811A7A37B215C - // token1 uosmo - 1151: {}, - // token0 ibc/8242AD24008032E457D2E12D46588FD39FB54FB29680C6C7663D296B383C37C4 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1150: {}, - // token0 ibc/62f82550d0b96522361c89b0da1119de262fbdfb25e5502bc5101b5c0d0dbaac - // token1 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - 1149: {}, - // token0 ibc/fbb3fef80ed2344d821d4f95c31dbfd33e4e31d5324cad94ef756e67b749f668 - // token1 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - 1148: {}, - // token0 ibc/44492EAB24B72E3FB59B9FA619A22337FB74F95D8808FE6BC78CC0E6C18DC2EC - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1147: {}, - // token0 ibc/8A025A1E70101E39DE0C0F153E582A30806D3DA16795F6D868A3AA247D2DEDF7 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1146: {}, - // token0 ibc/6B2B19D874851F631FF0AF82C38A20D4B82F438C7A22F41EDA33568345397244 - // token1 uosmo - 1145: {}, - // token0 ibc/6B2B19D874851F631FF0AF82C38A20D4B82F438C7A22F41EDA33568345397244 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1144: {}, - // token0 ibc/C140AFD542AE77BD7DCC83F13FDD8C5E5BB8C4929785E6EC2F4C636F98F17901 - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1136: {}, - // token0 uosmo - // token1 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - 1135: {}, - // token0 uosmo - // token1 ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5 - 1134: {}, - // token0 uosmo - // token1 ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858 - 1133: {}, - // token0 ibc/2108F2D81CBE328F371AD0CEF56691B18A86E08C3651504E42487D9EE92DDE9C - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1131: {}, - // token0 ibc/CA3733CB0071F480FAE8EF0D9C3D47A49C6589144620A642BBE0D59A293D110E - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1130: {}, - // token0 ibc/CA3733CB0071F480FAE8EF0D9C3D47A49C6589144620A642BBE0D59A293D110E - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1129: {}, - // token0 ibc/B1C287C2701774522570010EEBCD864BCB7AB714711B3AA218699FDD75E832F5 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1128: {}, - // token0 ibc/B1C287C2701774522570010EEBCD864BCB7AB714711B3AA218699FDD75E832F5 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1127: {}, - // token0 ibc/A4D176906C1646949574B48C1928D475F2DF56DE0AC04E1C99B08F90BC21ABDE - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1126: {}, - // token0 ibc/A4D176906C1646949574B48C1928D475F2DF56DE0AC04E1C99B08F90BC21ABDE - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1125: {}, - // token0 ibc/1E43D59E565D41FB4E54CA639B838FFD5BCFC20003D330A56CB1396231AA1CBA - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1124: {}, - // token0 ibc/1E43D59E565D41FB4E54CA639B838FFD5BCFC20003D330A56CB1396231AA1CBA - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1123: {}, - // token0 ibc/71F11BC0AF8E526B80E44172EBA9D3F0A8E03950BB882325435691EBC9450B1D - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1117: {}, - // token0 ibc/71F11BC0AF8E526B80E44172EBA9D3F0A8E03950BB882325435691EBC9450B1D - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1116: {}, - // token0 ibc/71F11BC0AF8E526B80E44172EBA9D3F0A8E03950BB882325435691EBC9450B1D - // token1 uosmo - 1115: {}, - // token0 ibc/71F11BC0AF8E526B80E44172EBA9D3F0A8E03950BB882325435691EBC9450B1D - // token1 uosmo - 1114: {}, - // token0 ibc/E97634A40119F1898989C2A23224ED83FDD0A57EA46B3A094E287288D1672B44 - // token1 uosmo - 1113: {}, - // token0 ibc/A76EB6ECF4E3E2D4A23C526FD1B48FDD42F171B206C9D2758EF778A7826ADD68 - // token1 uosmo - 1112: {}, - // token0 ibc/B9E0A1A524E98BB407D3CED8720EFEFD186002F90C1B1B7964811DD0CCC12228 - // token1 uosmo - 1111: {}, - // token0 ibc/67795E528DF67C5606FC20F824EA39A6EF55BA133F4DC79C90A8C47A0901E17C - // token1 uosmo - 1110: {}, - // token0 ibc/4E5444C35610CC76FC94E7F7886B93121175C28262DDFDDE6F84E82BF2425452 - // token1 uosmo - 1109: {}, - // token0 ibc/9712DBB13B9631EDFA9BF61B55F1B2D290B2ADB67E3A4EB3A875F3B6081B3B84 - // token1 uosmo - 1108: {}, - // token0 factory/osmo1xqw2sl9zk8a6pch0csaw78n4swg5ws8t62wc5qta4gnjxfqg6v2qcs243k/stuibcx - // token1 uosmo - 1107: {}, - // token0 ibc/7C4D60AA95E5A7558B0A364860979CA34B7FF8AAF255B87AF9E879374470CEC0 - // token1 uosmo - 1106: {}, - // token0 ibc/57AA1A70A4BC9769C525EBF6386F7A21536E04A79D62E1981EFCEF9428EBB205 - // token1 uosmo - 1105: {}, - // token0 ibc/2DA9C149E9AD2BD27FEFA635458FB37093C256C1A940392634A16BEA45262604 - // token1 uosmo - 1104: {}, - // token0 ibc/9BBA9A1C257E971E38C1422780CE6F0B0686F0A3085E2D61118D904BFE0F5F5E - // token1 uosmo - 1103: {}, - // token0 ibc/3BCCC93AD5DF58D11A6F8A05FA8BC801CBA0BA61A981F57E91B8B598BF8061CB - // token1 uosmo - 1102: {}, - // token0 ibc/A0CC0CF735BFB30E730C70019D4218A1244FF383503FF7579C9201AB93CA9293 - // token1 uosmo - 1101: {}, - // token0 uion - // token1 uosmo - 1100: {}, - // token0 ibc/573FCD90FACEE750F55A8864EF7D38265F07E5A9273FA0E8DAFD39951332B580 - // token1 uosmo - 1099: {}, - // token0 ibc/A8CA5EE328FA10C9519DF6057DA1F69682D28F7D0F5CCC7ECB72E3DCA2D157A4 - // token1 uosmo - 1098: {}, - // token0 ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED - // token1 uosmo - 1097: {}, - // token0 ibc/987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4 - // token1 uosmo - 1096: {}, - // token0 ibc/0954E1C28EB7AF5B72D24F3BC2B47BBB2FDF91BDDFD57B74B99E133AED40972A - // token1 uosmo - 1095: {}, - // token0 ibc/903A61A498756EA560B85A85132D3AEE21B5DEDD41213725D22ABF276EA6945E - // token1 uosmo - 1094: {}, - // token0 ibc/1480B8FD20AD5FCAE81EA87584D269547DD4D436843C1D20F15E00EB64743EF4 - // token1 uosmo - 1093: {}, - // token0 ibc/E6931F78057F7CC5DA0FD6CEF82FF39373A6E0452BF1FD76910B93292CF356C1 - // token1 uosmo - 1092: {}, - // token0 ibc/3FF92D26B407FD61AE95D975712A7C319CDE28DE4D80BDC9978D935932B991D7 - // token1 uosmo - 1091: {}, - // token0 uosmo - // token1 ibc/D1542AA8762DB13087D8364F3EA6509FD6F009A34F00426AF9E4F9FA85CBBF1F - 1090: {}, - // token0 ibc/23CA6C8D1AB2145DD13EB1E089A2E3F960DC298B468CCE034E19E5A78B61136E - // token1 uosmo - 1089: {}, - // token0 ibc/92BE0717F4678905E53F4E45B2DED18BC0CB97BF1F8B6A25AFEDF3D5A879B4D5 - // token1 uosmo - 1088: {}, - // token0 ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1081: {}, - // token0 ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1080: {}, - // token0 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1079: {}, - // token0 ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2 - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1078: {}, - // token0 uosmo - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1077: {}, - // token0 uosmo - // token1 ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB - 1076: {}, - // token0 uosmo - // token1 ibc/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 - 1066: {}, -} diff --git a/app/upgrades/v24/upgrades.go b/app/upgrades/v24/upgrades.go index 7d8e690b2d8..26386e33cfb 100644 --- a/app/upgrades/v24/upgrades.go +++ b/app/upgrades/v24/upgrades.go @@ -10,8 +10,8 @@ import ( "github.com/osmosis-labs/osmosis/v24/app/keepers" "github.com/osmosis-labs/osmosis/v24/app/upgrades" - v23 "github.com/osmosis-labs/osmosis/v24/app/upgrades/v23" concentratedliquidity "github.com/osmosis-labs/osmosis/v24/x/concentrated-liquidity" + concentratedtypes "github.com/osmosis-labs/osmosis/v24/x/concentrated-liquidity/types" cwpooltypes "github.com/osmosis-labs/osmosis/v24/x/cosmwasmpool/types" incentivestypes "github.com/osmosis-labs/osmosis/v24/x/incentives/types" txfeestypes "github.com/osmosis-labs/osmosis/v24/x/txfees/types" @@ -72,8 +72,8 @@ func CreateUpgradeHandler( // White Whale uploaded a broken contract. They later migrated cwpool via the governance // proposal in x/cosmwasmpool - // However, there was a problem in the migration logic where the CosmWasmpool state CodeId did not get updated. - // As a result, the CodeID for the contract that is tracked in x/wasmd was migrated correctly. However, the code ID that we track in the x/cosmwasmpool state did not. + // However, there was a problem in the migration logic where the CosmWasmpool state CodeId did not get updated. + // As a result, the CodeID for the contract that is tracked in x/wasmd was migrated correctly. However, the code ID that we track in the x/cosmwasmpool state did not. // Therefore, we should perform a migration for each of the hardcoded white whale pools. poolIds := []uint64{1463, 1462, 1461} for _, poolId := range poolIds { @@ -107,8 +107,8 @@ func CreateUpgradeHandler( // migrateMainnetPools migrates the specified mainnet pools to the new accumulator scaling factor. func migrateMainnetPools(ctx sdk.Context, concentratedKeeper concentratedliquidity.Keeper) error { - poolIDsToMigrate := make([]uint64, 0, len(FinalIncentiveAccumulatorPoolIDsToMigrate)) - for poolID := range FinalIncentiveAccumulatorPoolIDsToMigrate { + poolIDsToMigrate := make([]uint64, 0, len(concentratedtypes.MigratedIncentiveAccumulatorPoolIDsV24)) + for poolID := range concentratedtypes.MigratedIncentiveAccumulatorPoolIDsV24 { poolIDsToMigrate = append(poolIDsToMigrate, poolID) } @@ -130,7 +130,7 @@ func migrateMainnetPools(ctx sdk.Context, concentratedKeeper concentratedliquidi } // This should never happen, this check is defence in depth in case we have wrong data by accident - _, isMigrated := v23.MigratedIncentiveAccumulatorPoolIDs[poolID] + _, isMigrated := concentratedtypes.MigratedIncentiveAccumulatorPoolIDs[poolID] if isMigrated { continue } diff --git a/app/upgrades/v24/upgrades_test.go b/app/upgrades/v24/upgrades_test.go index 1294fb35851..2a1563a6048 100644 --- a/app/upgrades/v24/upgrades_test.go +++ b/app/upgrades/v24/upgrades_test.go @@ -155,8 +155,8 @@ func (s *UpgradeTestSuite) TestUpgrade() { s.Require().NotEmpty(nonMigratedPoolBeforeUpgradeIncentives) // Overwrite the migration list with the desired pool ID. - v24.FinalIncentiveAccumulatorPoolIDsToMigrate = map[uint64]struct{}{} - v24.FinalIncentiveAccumulatorPoolIDsToMigrate[lastPoolID] = struct{}{} + concentratedtypes.MigratedIncentiveAccumulatorPoolIDsV24 = map[uint64]struct{}{} + concentratedtypes.MigratedIncentiveAccumulatorPoolIDsV24[lastPoolID] = struct{}{} // PROTOREV Setup // diff --git a/x/concentrated-liquidity/export_test.go b/x/concentrated-liquidity/export_test.go index c93c0433763..d688ea480ed 100644 --- a/x/concentrated-liquidity/export_test.go +++ b/x/concentrated-liquidity/export_test.go @@ -334,6 +334,10 @@ func (k Keeper) SetPoolHookContract(ctx sdk.Context, poolID uint64, actionPrefix return k.setPoolHookContract(ctx, poolID, actionPrefix, cosmwasmAddress) } +func (k Keeper) GetIncentiveScalingFactorForPool(ctx sdk.Context, poolID uint64) (osmomath.Dec, error) { + return k.getIncentiveScalingFactorForPool(ctx, poolID) +} + func (k Keeper) CallPoolActionListener(ctx sdk.Context, msgBuilderFn func(poolId uint64) ([]byte, error), poolId uint64, actionPrefix string) (err error) { return k.callPoolActionListener(ctx, msgBuilderFn, poolId, actionPrefix) } diff --git a/x/concentrated-liquidity/incentives.go b/x/concentrated-liquidity/incentives.go index 5f464dfd12a..1cf83667eec 100644 --- a/x/concentrated-liquidity/incentives.go +++ b/x/concentrated-liquidity/incentives.go @@ -29,6 +29,7 @@ import ( // https://hackmd.io/o3oqT8VhSPKAiqNl_mlxXQ var ( perUnitLiqScalingFactor = osmomath.NewDec(1e15).MulMut(osmomath.NewDec(1e12)) + oneDecScalingFactor = osmomath.OneDec() ) // createUptimeAccumulators creates accumulator objects in store for each supported uptime for the given poolId. @@ -198,6 +199,11 @@ func (k Keeper) updateGivenPoolUptimeAccumulatorsToNow(ctx sdk.Context, pool typ return err } + incentiveScalingFactorForPool, err := k.getIncentiveScalingFactorForPool(ctx, poolId) + if err != nil { + return err + } + // We optimistically assume that all liquidity on the active tick qualifies and handle // uptime-related checks in forfeiting logic. @@ -208,7 +214,7 @@ func (k Keeper) updateGivenPoolUptimeAccumulatorsToNow(ctx sdk.Context, pool typ // Get relevant uptime-level values curUptimeDuration := types.SupportedUptimes[uptimeIndex] incentivesToAddToCurAccum, updatedPoolRecords, err := calcAccruedIncentivesForAccum( - ctx, curUptimeDuration, qualifyingLiquidity, timeElapsedSec, poolIncentiveRecords, poolId, perUnitLiqScalingFactor) + ctx, curUptimeDuration, qualifyingLiquidity, timeElapsedSec, poolIncentiveRecords, poolId, incentiveScalingFactorForPool) if err != nil { return err } @@ -797,6 +803,11 @@ func (k Keeper) prepareClaimAllIncentivesForPosition(ctx sdk.Context, positionId supportedUptimes := types.SupportedUptimes + incentiveScalingFactor, err := k.getIncentiveScalingFactorForPool(ctx, position.PoolId) + if err != nil { + return sdk.Coins{}, sdk.Coins{}, nil, err + } + // Loop through each uptime accumulator for the pool. scaledForfeitedIncentivesByUptime := make([]sdk.Coins, len(types.SupportedUptimes)) for uptimeIndex, uptimeAccum := range uptimeAccumulators { @@ -816,7 +827,7 @@ func (k Keeper) prepareClaimAllIncentivesForPosition(ctx sdk.Context, positionId // We always truncate down in the pool's favor. collectedIncentivesForUptime := sdk.NewCoins() for _, incentiveCoin := range collectedIncentivesForUptimeScaled { - incentiveCoin.Amount = scaleDownIncentiveAmount(incentiveCoin.Amount, perUnitLiqScalingFactor) + incentiveCoin.Amount = scaleDownIncentiveAmount(incentiveCoin.Amount, incentiveScalingFactor) if incentiveCoin.Amount.IsPositive() { collectedIncentivesForUptime = append(collectedIncentivesForUptime, incentiveCoin) } @@ -1101,6 +1112,36 @@ func (k Keeper) getLargestAuthorizedUptimeDuration(ctx sdk.Context) time.Duratio return getLargestDuration(k.GetParams(ctx).AuthorizedUptimes) } +// getIncentiveScalingFactorForPool returns the scaling factor for the given pool. +// It returns perUnitLiqScalingFactor if the pool is migrated or if the pool ID is greater than the migration threshold. +// It returns oneDecScalingFactor otherwise. +func (k Keeper) getIncentiveScalingFactorForPool(ctx sdk.Context, poolID uint64) (osmomath.Dec, error) { + migrationThreshold, err := k.GetIncentivePoolIDMigrationThreshold(ctx) + if err != nil { + return osmomath.Dec{}, err + } + + // If the given pool ID is greater than the migration threshold, we return the perUnitLiqScalingFactor. + if poolID > migrationThreshold { + return perUnitLiqScalingFactor, nil + } + + // If the given pool ID is in the migrated incentive accumulator pool IDs, we return the perUnitLiqScalingFactor. + _, isMigrated := types.MigratedIncentiveAccumulatorPoolIDs[poolID] + if isMigrated { + return perUnitLiqScalingFactor, nil + } + + // If the given pool ID is in the migrated incentive accumulator pool IDs (v24), we return the perUnitLiqScalingFactor. + _, isMigrated = types.MigratedIncentiveAccumulatorPoolIDsV24[poolID] + if isMigrated { + return perUnitLiqScalingFactor, nil + } + + // Otherwise, we return the oneDecScalingFactor. + return oneDecScalingFactor, nil +} + // nolint: unused // getLargestSupportedUptimeDuration retrieves the largest supported uptime duration from the preset constant slice. func (k Keeper) getLargestSupportedUptimeDuration() time.Duration { diff --git a/x/concentrated-liquidity/incentives_test.go b/x/concentrated-liquidity/incentives_test.go index 2a9605a4040..f61a92cc7ea 100644 --- a/x/concentrated-liquidity/incentives_test.go +++ b/x/concentrated-liquidity/incentives_test.go @@ -3735,6 +3735,64 @@ func (s *KeeperTestSuite) TestComputeTotalIncentivesToEmit() { s.Require().ErrorContains(err, "overflow") } +// This test shows that the scaling factor is applied correctly based on the pool ID. +// If the pool ID is below or at the migration threshold, the scaling factor is 1. +// If the pool ID is above the migration threshold, the scaling factor is the per unit liquidity scaling factor. +// If he pool ID is in the overwrite map, the scaling factor is the per unit liquidity scaling factor. +func (s *KeeperTestSuite) TestGetIncentiveScalingFactorForPool() { + // Grab an example of the overwrite pool from map + s.Require().NotZero(len(types.MigratedIncentiveAccumulatorPoolIDs)) + s.Require().NotZero(len(types.MigratedIncentiveAccumulatorPoolIDsV24)) + + var exampleOverwritePoolID uint64 + for poolID := range types.MigratedIncentiveAccumulatorPoolIDs { + exampleOverwritePoolID = poolID + break + } + + var exampleOverwritePoolIDv24 uint64 + for poolIDv24 := range types.MigratedIncentiveAccumulatorPoolIDsV24 { + exampleOverwritePoolIDv24 = poolIDv24 + break + } + + var ( + oneDec = osmomath.OneDec() + + // Make migration threshold 1000 pool IDs higher + migrationThreshold = exampleOverwritePoolID + 1000 + ) + + s.SetupTest() + + s.App.ConcentratedLiquidityKeeper.SetIncentivePoolIDMigrationThreshold(s.Ctx, migrationThreshold) + + // One below the threshold has scaling factor of 1 (non-migrated) + scalingFactor, err := s.App.ConcentratedLiquidityKeeper.GetIncentiveScalingFactorForPool(s.Ctx, migrationThreshold-1) + s.Require().NoError(err) + s.Require().Equal(oneDec, scalingFactor) + + // At threshold, scaling factor is 1 (non-migrated) + scalingFactor, err = s.App.ConcentratedLiquidityKeeper.GetIncentiveScalingFactorForPool(s.Ctx, migrationThreshold) + s.Require().NoError(err) + s.Require().Equal(oneDec, scalingFactor) + + // One above the threshold has non-1 scaling factor (migrated) + scalingFactor, err = s.App.ConcentratedLiquidityKeeper.GetIncentiveScalingFactorForPool(s.Ctx, migrationThreshold+1) + s.Require().NoError(err) + s.Require().Equal(cl.PerUnitLiqScalingFactor, scalingFactor) + + // Overwrite pool ID has non-1 scaling factor (migrated) + scalingFactor, err = s.App.ConcentratedLiquidityKeeper.GetIncentiveScalingFactorForPool(s.Ctx, exampleOverwritePoolID) + s.Require().NoError(err) + s.Require().Equal(cl.PerUnitLiqScalingFactor, scalingFactor) + + // Overwrite pool IDv24 has non-1 scaling factor (migrated) + scalingFactor, err = s.App.ConcentratedLiquidityKeeper.GetIncentiveScalingFactorForPool(s.Ctx, exampleOverwritePoolIDv24) + s.Require().NoError(err) + s.Require().Equal(cl.PerUnitLiqScalingFactor, scalingFactor) +} + // scaleUptimeAccumulators scales the uptime accumulators by the scaling factor. // This is to avoid truncation to zero in core logic when the liquidity is large. func (s *KeeperTestSuite) scaleUptimeAccumulators(uptimeAccumulatorsToScale []sdk.DecCoins) []sdk.DecCoins { diff --git a/x/concentrated-liquidity/types/migration.go b/x/concentrated-liquidity/types/migration.go new file mode 100644 index 00000000000..35bed3b94bc --- /dev/null +++ b/x/concentrated-liquidity/types/migration.go @@ -0,0 +1,30 @@ +package types + +var MigratedIncentiveAccumulatorPoolIDs = map[uint64]struct{}{ + 1423: {}, + 1213: {}, + 1298: {}, + 1297: {}, + 1292: {}, + 1431: {}, +} + +// MigratedIncentiveAccumulatorPoolIDsV24 is a map that defines pools to migrate to the latest scalingFactor for v24. +var MigratedIncentiveAccumulatorPoolIDsV24 = map[uint64]struct{}{ + // token0 eth + // token1 uosmo + // liquidity 272k + 1281: {}, + // token0 usdt + // token1 dia + // liquidity 500 + 1276: {}, + // token0 usdc + // token1 dai + // liquidity 1.55k + 1275: {}, + // token0 usdc + // token1 dai + // liquidity 52.9k + 1260: {}, +}