From 2874d98a3fd759479c2439d20494f83a886665b1 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Fri, 22 Dec 2023 15:10:26 +0400 Subject: [PATCH 1/2] feat(pcl): add PCL migration from v1 to v2 --- Cargo.lock | 140 +++++++++++++------ contracts/pair_concentrated/Cargo.toml | 1 + contracts/pair_concentrated/src/contract.rs | 5 +- contracts/pair_concentrated/src/migration.rs | 77 ++-------- 4 files changed, 106 insertions(+), 117 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f4905cdf4..2a94c2d42 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,6 +38,21 @@ dependencies = [ "cosmwasm-std", ] +[[package]] +name = "astroport" +version = "2.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d102b618016b3c1f1ebb5750617a73dbd294a3c941e54b12deabc931d771bc6e" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw-utils 0.15.1", + "cw20 0.15.1", + "itertools 0.10.5", + "uint 0.9.5", +] + [[package]] name = "astroport" version = "3.8.0" @@ -70,7 +85,7 @@ dependencies = [ name = "astroport-cw20-ics20" version = "1.1.1" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw-controllers 1.1.0", @@ -99,12 +114,28 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-factory" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ecf768e2d3153bebfbe0c502ffa4199a52598e9b6e89fca54339615b2de77eb" +dependencies = [ + "astroport 2.9.5", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw2 0.15.1", + "itertools 0.10.5", + "protobuf", + "thiserror", +] + [[package]] name = "astroport-factory" version = "1.6.0" dependencies = [ "anyhow", - "astroport", + "astroport 3.8.0", "astroport-pair", "astroport-token", "cosmwasm-schema", @@ -124,7 +155,7 @@ dependencies = [ name = "astroport-fee-granter" version = "0.1.0" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmos-sdk-proto", "cosmwasm-schema", "cosmwasm-std", @@ -140,8 +171,8 @@ name = "astroport-generator" version = "2.3.2" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "astroport-governance 1.4.0", "astroport-mocks", "astroport-native-coin-registry", @@ -175,7 +206,7 @@ dependencies = [ name = "astroport-generator-proxy-template" version = "0.0.0" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -189,7 +220,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -201,7 +232,7 @@ name = "astroport-governance" version = "1.2.0" source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -213,7 +244,7 @@ name = "astroport-governance" version = "1.4.0" source = "git+https://github.com/astroport-fi/hidden_astroport_governance#259fbc78d33f1b76e4213054babc95a1d9202f5c" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -226,8 +257,8 @@ name = "astroport-incentives" version = "1.0.0" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "astroport-native-coin-registry", "astroport-pair", "astroport-pair-stable", @@ -250,8 +281,8 @@ name = "astroport-liquidity-manager" version = "1.0.3" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "astroport-generator", "astroport-native-coin-registry", "astroport-pair", @@ -275,9 +306,9 @@ name = "astroport-maker" version = "1.3.1" dependencies = [ "astro-satellite-package", - "astroport", + "astroport 3.8.0", "astroport-escrow-fee-distributor", - "astroport-factory", + "astroport-factory 1.6.0", "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", "astroport-native-coin-registry", "astroport-pair", @@ -297,12 +328,12 @@ name = "astroport-mocks" version = "0.2.0" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "astroport-generator", "astroport-native-coin-registry", "astroport-pair", - "astroport-pair-concentrated", + "astroport-pair-concentrated 2.3.0", "astroport-pair-stable", "astroport-shared-multisig", "astroport-staking", @@ -325,7 +356,7 @@ dependencies = [ name = "astroport-native-coin-registry" version = "1.0.1" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cosmwasm-storage", @@ -339,7 +370,7 @@ dependencies = [ name = "astroport-native-coin-wrapper" version = "0.1.0" dependencies = [ - "astroport", + "astroport 3.8.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -369,8 +400,8 @@ name = "astroport-oracle" version = "2.1.1" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "astroport-native-coin-registry", "astroport-pair", "astroport-pair-stable", @@ -389,8 +420,8 @@ dependencies = [ name = "astroport-pair" version = "1.5.0" dependencies = [ - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "astroport-mocks", "astroport-token", "cosmwasm-schema", @@ -410,8 +441,8 @@ dependencies = [ name = "astroport-pair-astro-xastro" version = "1.0.3" dependencies = [ - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "astroport-pair-bonded", "astroport-staking", "astroport-token", @@ -429,7 +460,7 @@ dependencies = [ name = "astroport-pair-bonded" version = "1.0.1" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-std", "cw-storage-plus 0.15.1", "cw2 0.15.1", @@ -441,7 +472,7 @@ dependencies = [ name = "astroport-pair-bonded-template" version = "1.0.0" dependencies = [ - "astroport", + "astroport 3.8.0", "astroport-pair-bonded", "cosmwasm-schema", "cosmwasm-std", @@ -451,16 +482,35 @@ dependencies = [ "thiserror", ] +[[package]] +name = "astroport-pair-concentrated" +version = "1.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a25c6ccbeccd25d36706621db915b67ca5d919e192fb06d7dd35cf69152d84" +dependencies = [ + "astroport 2.9.5", + "astroport-factory 1.5.1", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "cw-utils 0.15.1", + "cw2 0.15.1", + "cw20 0.15.1", + "itertools 0.10.5", + "thiserror", +] + [[package]] name = "astroport-pair-concentrated" version = "2.3.0" dependencies = [ "anyhow", - "astroport", + "astroport 3.8.0", "astroport-circular-buffer", - "astroport-factory", + "astroport-factory 1.6.0", "astroport-mocks", "astroport-native-coin-registry", + "astroport-pair-concentrated 1.2.13", "astroport-pcl-common", "astroport-token", "cosmwasm-schema", @@ -480,9 +530,9 @@ name = "astroport-pair-stable" version = "3.4.0" dependencies = [ "anyhow", - "astroport", + "astroport 3.8.0", "astroport-circular-buffer", - "astroport-factory", + "astroport-factory 1.6.0", "astroport-mocks", "astroport-native-coin-registry", "astroport-token", @@ -505,8 +555,8 @@ name = "astroport-pcl-common" version = "1.1.0" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 1.1.0", @@ -520,8 +570,8 @@ name = "astroport-router" version = "1.2.0" dependencies = [ "anyhow", - "astroport", - "astroport-factory", + "astroport 3.8.0", + "astroport-factory 1.6.0", "astroport-pair", "astroport-token", "cosmwasm-schema", @@ -538,11 +588,11 @@ dependencies = [ name = "astroport-shared-multisig" version = "1.0.0" dependencies = [ - "astroport", + "astroport 3.8.0", "astroport-generator", "astroport-mocks", "astroport-pair", - "astroport-pair-concentrated", + "astroport-pair-concentrated 2.3.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -558,7 +608,7 @@ dependencies = [ name = "astroport-staking" version = "1.1.0" dependencies = [ - "astroport", + "astroport 3.8.0", "astroport-token", "astroport-xastro-token", "cosmwasm-schema", @@ -576,7 +626,7 @@ dependencies = [ name = "astroport-token" version = "1.1.1" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -589,7 +639,7 @@ dependencies = [ name = "astroport-vesting" version = "1.3.2" dependencies = [ - "astroport", + "astroport 3.8.0", "astroport-token", "cosmwasm-schema", "cosmwasm-std", @@ -605,7 +655,7 @@ dependencies = [ name = "astroport-whitelist" version = "1.0.1" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw1-whitelist", @@ -617,7 +667,7 @@ dependencies = [ name = "astroport-xastro-outpost-token" version = "1.0.0" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -632,7 +682,7 @@ dependencies = [ name = "astroport-xastro-token" version = "1.1.0" dependencies = [ - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw-multi-test 0.15.1", @@ -1589,7 +1639,7 @@ version = "0.0.0" source = "git+https://github.com/astroport-fi/astro-generator-proxy-contracts?branch=main#e573a8f8542b99015cac910f024a5f20fd793f3c" dependencies = [ "ap-valkyrie", - "astroport", + "astroport 3.8.0", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", diff --git a/contracts/pair_concentrated/Cargo.toml b/contracts/pair_concentrated/Cargo.toml index 9f4a6c0a0..0240f98b3 100644 --- a/contracts/pair_concentrated/Cargo.toml +++ b/contracts/pair_concentrated/Cargo.toml @@ -38,6 +38,7 @@ thiserror = "1.0" cosmwasm-schema = "1.1" itertools = "0.10" cw-utils = "0.15" +astroport-pair-concentrated_v1 = { package = "astroport-pair-concentrated", version = "1.2.13", features = ["library"] } [dev-dependencies] astroport-token = { path = "../token" } diff --git a/contracts/pair_concentrated/src/contract.rs b/contracts/pair_concentrated/src/contract.rs index 25fb704b9..b2c3eaeb8 100644 --- a/contracts/pair_concentrated/src/contract.rs +++ b/contracts/pair_concentrated/src/contract.rs @@ -958,11 +958,10 @@ pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result match contract_version.version.as_ref() { - "1.1.0" => migrate_config(deps.storage)?, - "1.2.4" => { + "1.2.13" | "1.2.14" => { + migrate_config(deps.storage)?; BufferManager::init(deps.storage, OBSERVATIONS, OBSERVATIONS_SIZE)?; } - "2.0.3" | "2.0.4" => {} _ => return Err(ContractError::MigrationError {}), }, _ => return Err(ContractError::MigrationError {}), diff --git a/contracts/pair_concentrated/src/migration.rs b/contracts/pair_concentrated/src/migration.rs index c2ebed661..d5e12a3bb 100644 --- a/contracts/pair_concentrated/src/migration.rs +++ b/contracts/pair_concentrated/src/migration.rs @@ -1,83 +1,22 @@ -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, StdError, Storage, Uint128}; -use cw_storage_plus::Item; +use cosmwasm_std::{from_binary, to_binary, StdError, Storage}; -use astroport::asset::{AssetInfo, PairInfo}; -use astroport::factory::PairType; -use astroport::observation::OBSERVATIONS_SIZE; -use astroport_circular_buffer::BufferManager; -use astroport_pcl_common::state::{Config, PoolParams, PoolState}; +use astroport_pcl_common::state::Config; -use crate::state::{CONFIG, OBSERVATIONS}; +use crate::state::CONFIG; pub(crate) fn migrate_config(storage: &mut dyn Storage) -> Result<(), StdError> { - #[cw_serde] - pub enum OldPairType { - /// XYK pair type - Xyk {}, - /// Stable pair type - Stable {}, - /// Concentrated pair type - Concentrated {}, - /// Custom pair type - Custom(String), - } - - #[cw_serde] - pub struct OldPairInfo { - /// Asset information for the assets in the pool - pub asset_infos: Vec, - /// Pair contract address - pub contract_addr: Addr, - /// Pair LP token address - pub liquidity_token: Addr, - /// The pool type (xyk, stableswap etc) available in [`PairType`] - pub pair_type: OldPairType, - } - - /// This structure stores the main config parameters for a constant product pair contract. - #[cw_serde] - pub struct OldConfig { - /// The pair information stored in a [`PairInfo`] struct - pub pair_info: OldPairInfo, - /// The factory contract address - pub factory_addr: Addr, - /// The last timestamp when the pair contract updated the asset cumulative prices - pub block_time_last: u64, - /// The vector contains cumulative prices for each pair of assets in the pool - pub cumulative_prices: Vec<(AssetInfo, AssetInfo, Uint128)>, - /// Pool parameters - pub pool_params: PoolParams, - /// Pool state - pub pool_state: PoolState, - /// Pool's owner - pub owner: Option, - } - - /// Stores the config struct at the given key - pub const OLD_CONFIG: Item = Item::new("config"); - - let old_config = OLD_CONFIG.load(storage)?; - let pair_info = PairInfo { - asset_infos: old_config.pair_info.asset_infos, - contract_addr: old_config.pair_info.contract_addr, - liquidity_token: old_config.pair_info.liquidity_token, - pair_type: PairType::Custom("concentrated".to_string()), - }; - + let old_config = astroport_pair_concentrated_v1::state::CONFIG.load(storage)?; let new_config = Config { - pair_info, + pair_info: from_binary(&to_binary(&old_config.pair_info)?)?, factory_addr: old_config.factory_addr, - pool_params: old_config.pool_params, - pool_state: old_config.pool_state, + pool_params: from_binary(&to_binary(&old_config.pool_params)?)?, + pool_state: from_binary(&to_binary(&old_config.pool_state)?)?, owner: old_config.owner, - track_asset_balances: false, + track_asset_balances: old_config.track_asset_balances, fee_share: None, }; CONFIG.save(storage, &new_config)?; - BufferManager::init(storage, OBSERVATIONS, OBSERVATIONS_SIZE)?; - Ok(()) } From 04fe9c9e7d59dffbc0f6d550667e6b7695c51723 Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Fri, 22 Dec 2023 15:19:59 +0400 Subject: [PATCH 2/2] update Cargo.lock --- Cargo.lock | 51 +++++++++++++-------------------------------------- 1 file changed, 13 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a94c2d42..bc36ae81e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,7 +33,7 @@ name = "astro-satellite-package" version = "0.1.0" source = "git+https://github.com/astroport-fi/astroport_ibc#ffb48ebfd7dbbc010cf86c9b02bad236c456fca0" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/astroport-governance)", + "astroport-governance", "cosmwasm-schema", "cosmwasm-std", ] @@ -103,9 +103,9 @@ dependencies = [ [[package]] name = "astroport-escrow-fee-distributor" version = "1.0.2" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -173,7 +173,7 @@ dependencies = [ "anyhow", "astroport 3.8.0", "astroport-factory 1.6.0", - "astroport-governance 1.4.0", + "astroport-governance", "astroport-mocks", "astroport-native-coin-registry", "astroport-nft", @@ -215,18 +215,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "astroport-governance" -version = "1.2.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" -dependencies = [ - "astroport 3.8.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw20 0.15.1", -] - [[package]] name = "astroport-governance" version = "1.2.0" @@ -239,19 +227,6 @@ dependencies = [ "cw20 0.15.1", ] -[[package]] -name = "astroport-governance" -version = "1.4.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance#259fbc78d33f1b76e4213054babc95a1d9202f5c" -dependencies = [ - "astroport 3.8.0", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "cw20 0.15.1", - "thiserror", -] - [[package]] name = "astroport-incentives" version = "1.0.0" @@ -309,7 +284,7 @@ dependencies = [ "astroport 3.8.0", "astroport-escrow-fee-distributor", "astroport-factory 1.6.0", - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance", "astroport-native-coin-registry", "astroport-pair", "astroport-pair-stable", @@ -385,9 +360,9 @@ dependencies = [ [[package]] name = "astroport-nft" version = "1.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance", "cosmwasm-schema", "cosmwasm-std", "cw2 0.15.1", @@ -1621,9 +1596,9 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "generator-controller" version = "1.3.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -2820,9 +2795,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "voting-escrow" version = "1.3.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1", @@ -2835,9 +2810,9 @@ dependencies = [ [[package]] name = "voting-escrow-delegation" version = "1.0.0" -source = "git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main#784452baf414f13d8b9e7de461391eb765ff9043" +source = "git+https://github.com/astroport-fi/astroport-governance#f0ef7c6dde76fc77ce360262923366a5cde3c3f8" dependencies = [ - "astroport-governance 1.2.0 (git+https://github.com/astroport-fi/hidden_astroport_governance?branch=main)", + "astroport-governance", "cosmwasm-schema", "cosmwasm-std", "cw-storage-plus 0.15.1",