From 01ca98fe97a2eb0d0f10773f38b26dc2f67d2139 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Wed, 17 Jan 2024 22:23:47 +0200 Subject: [PATCH 1/8] Factory, Multihop, Phoenix: removes lp_wasm_hash from the LiquidityPoolInitInfo struct and adds as a parameter --- contracts/factory/src/contract.rs | 7 ++++++- contracts/factory/src/storage.rs | 1 + contracts/factory/src/tests.rs | 3 ++- contracts/factory/src/tests/config.rs | 8 +------- contracts/factory/src/tests/queries.rs | 14 +------------- contracts/multihop/src/tests/setup.rs | 2 -- packages/phoenix/src/utils.rs | 1 - 7 files changed, 11 insertions(+), 25 deletions(-) diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index 2842b1055..7e9bbb5bd 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -23,6 +23,7 @@ pub trait FactoryTrait { env: Env, admin: Address, multihop_wasm_hash: BytesN<32>, + lp_wasm_hash: BytesN<32>, whitelisted_accounts: Vec
, ); @@ -51,6 +52,7 @@ impl FactoryTrait for Factory { env: Env, admin: Address, multihop_wasm_hash: BytesN<32>, + lp_wasm_hash: BytesN<32>, whitelisted_accounts: Vec
, ) { if is_initialized(&env) { @@ -71,6 +73,7 @@ impl FactoryTrait for Factory { Config { admin: admin.clone(), multihop_address, + lp_wasm_hash, whitelisted_accounts, }, ); @@ -99,9 +102,11 @@ impl FactoryTrait for Factory { &lp_init_info.stake_init_info, ); + let lp_wasm_hash = get_config(&env).lp_wasm_hash; + let lp_contract_address = deploy_lp_contract( &env, - lp_init_info.lp_wasm_hash, + lp_wasm_hash, &lp_init_info.token_init_info.token_a, &lp_init_info.token_init_info.token_b, ); diff --git a/contracts/factory/src/storage.rs b/contracts/factory/src/storage.rs index 44d67eafa..8f125d775 100644 --- a/contracts/factory/src/storage.rs +++ b/contracts/factory/src/storage.rs @@ -28,6 +28,7 @@ impl TryFromVal for Val { pub struct Config { pub admin: Address, pub multihop_address: Address, + pub lp_wasm_hash: soroban_sdk::BytesN<32>, /// A vec of whitelisted addresses that can create liquidity pools pub whitelisted_accounts: Vec
, } diff --git a/contracts/factory/src/tests.rs b/contracts/factory/src/tests.rs index cf762b58f..71e369fad 100644 --- a/contracts/factory/src/tests.rs +++ b/contracts/factory/src/tests.rs @@ -1,7 +1,7 @@ use crate::contract::{Factory, FactoryClient}; use soroban_sdk::{testutils::Address as _, vec, Address, Env}; -use self::setup::install_multihop_wasm; +use self::setup::{install_lp_contract, install_multihop_wasm}; mod config; mod setup; @@ -19,6 +19,7 @@ fn test_deploy_factory_twice_should_fail() { let auth_user = Address::generate(&env); let multihop = FactoryClient::new(&env, &env.register_contract(None, Factory {})); let multihop_wasm_hash = install_multihop_wasm(&env); + let lp_wasm_hash = install_lp_contract(&env); multihop.initialize(&admin, &multihop_wasm_hash, &vec![&env, auth_user.clone()]); multihop.initialize(&admin, &multihop_wasm_hash, &vec![&env, auth_user]); diff --git a/contracts/factory/src/tests/config.rs b/contracts/factory/src/tests/config.rs index f975f33e4..8844293a0 100644 --- a/contracts/factory/src/tests/config.rs +++ b/contracts/factory/src/tests/config.rs @@ -1,7 +1,4 @@ -use super::setup::{ - deploy_factory_contract, install_lp_contract, install_stake_wasm, install_token_wasm, - lp_contract, -}; +use super::setup::{deploy_factory_contract, install_stake_wasm, install_token_wasm, lp_contract}; use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; use soroban_sdk::{ @@ -146,12 +143,9 @@ fn factory_fails_to_init_lp_when_authorized_address_not_present() { min_reward: 5i128, }; - let lp_wasm_hash = install_lp_contract(&env); - let lp_init_info = LiquidityPoolInitInfo { admin, fee_recipient: user.clone(), - lp_wasm_hash, max_allowed_slippage_bps: 5_000, max_allowed_spread_bps: 500, share_token_decimals: 7, diff --git a/contracts/factory/src/tests/queries.rs b/contracts/factory/src/tests/queries.rs index ab6927e56..911b614b7 100644 --- a/contracts/factory/src/tests/queries.rs +++ b/contracts/factory/src/tests/queries.rs @@ -1,6 +1,4 @@ -use super::setup::{ - deploy_factory_contract, install_lp_contract, install_stake_wasm, install_token_wasm, -}; +use super::setup::{deploy_factory_contract, install_stake_wasm, install_token_wasm}; use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; use soroban_sdk::{ @@ -100,12 +98,9 @@ fn test_deploy_multiple_liquidity_pools() { min_reward: 3i128, }; - let lp_wasm_hash = install_lp_contract(&env); - let first_lp_init_info = LiquidityPoolInitInfo { admin: admin.clone(), fee_recipient: user.clone(), - lp_wasm_hash: lp_wasm_hash.clone(), max_allowed_slippage_bps: 5_000, max_allowed_spread_bps: 500, share_token_decimals: 7, @@ -118,7 +113,6 @@ fn test_deploy_multiple_liquidity_pools() { let second_lp_init_info = LiquidityPoolInitInfo { admin: admin.clone(), fee_recipient: user.clone(), - lp_wasm_hash: lp_wasm_hash.clone(), max_allowed_slippage_bps: 4_000, max_allowed_spread_bps: 400, share_token_decimals: 6, @@ -131,7 +125,6 @@ fn test_deploy_multiple_liquidity_pools() { let third_lp_init_info = LiquidityPoolInitInfo { admin: admin.clone(), fee_recipient: user.clone(), - lp_wasm_hash, max_allowed_slippage_bps: 4_000, max_allowed_spread_bps: 400, share_token_decimals: 6, @@ -297,12 +290,9 @@ fn test_queries_by_tuple() { min_reward: 3i128, }; - let lp_wasm_hash = install_lp_contract(&env); - let first_lp_init_info = LiquidityPoolInitInfo { admin: admin.clone(), fee_recipient: user.clone(), - lp_wasm_hash: lp_wasm_hash.clone(), max_allowed_slippage_bps: 5_000, max_allowed_spread_bps: 500, share_token_decimals: 7, @@ -315,7 +305,6 @@ fn test_queries_by_tuple() { let second_lp_init_info = LiquidityPoolInitInfo { admin: admin.clone(), fee_recipient: user.clone(), - lp_wasm_hash: lp_wasm_hash.clone(), max_allowed_slippage_bps: 4_000, max_allowed_spread_bps: 400, share_token_decimals: 6, @@ -328,7 +317,6 @@ fn test_queries_by_tuple() { let third_lp_init_info = LiquidityPoolInitInfo { admin: admin.clone(), fee_recipient: user.clone(), - lp_wasm_hash, max_allowed_slippage_bps: 4_000, max_allowed_spread_bps: 400, share_token_decimals: 6, diff --git a/contracts/multihop/src/tests/setup.rs b/contracts/multihop/src/tests/setup.rs index 3ed91ae64..e54275572 100644 --- a/contracts/multihop/src/tests/setup.rs +++ b/contracts/multihop/src/tests/setup.rs @@ -108,7 +108,6 @@ pub fn deploy_and_initialize_lp( fees: Option, ) { // 2. create liquidity pool from factory - let lp_wasm_hash = install_lp_contract(env); if token_b < token_a { std::mem::swap(&mut token_a, &mut token_b); @@ -130,7 +129,6 @@ pub fn deploy_and_initialize_lp( let lp_init_info = LiquidityPoolInitInfo { admin: admin.clone(), fee_recipient: admin.clone(), - lp_wasm_hash: lp_wasm_hash.clone(), max_allowed_slippage_bps: 5000, max_allowed_spread_bps: 500, share_token_decimals: 7, diff --git a/packages/phoenix/src/utils.rs b/packages/phoenix/src/utils.rs index 844f59f07..79d482ffe 100644 --- a/packages/phoenix/src/utils.rs +++ b/packages/phoenix/src/utils.rs @@ -44,7 +44,6 @@ pub struct StakeInitInfo { #[derive(Clone, Debug, Eq, PartialEq)] pub struct LiquidityPoolInitInfo { pub admin: Address, - pub lp_wasm_hash: BytesN<32>, pub share_token_decimals: u32, pub swap_fee_bps: i64, pub fee_recipient: Address, From 7020e0505cf9498e2d0bcc254d6c0fc965c9b5c6 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Thu, 18 Jan 2024 00:33:40 +0200 Subject: [PATCH 2/8] Factory, Multihop, Pool, Pool-Stable, Phoenix: refactors the code so that we no longer provide the wasm_hash of stake and token as part of the StakeInitInfo and TokenInitInfo structs, but rather we take those wasm_hashes from the config of the factory and propagate along the chain. --- contracts/factory/src/contract.rs | 44 +++++---------- contracts/factory/src/storage.rs | 7 ++- contracts/factory/src/tests.rs | 24 +++++++- contracts/factory/src/tests/config.rs | 4 +- contracts/factory/src/tests/queries.rs | 14 +---- contracts/factory/src/tests/setup.rs | 13 ++++- contracts/multihop/src/tests/setup.rs | 15 ++++- contracts/pool/src/contract.rs | 55 ++++++++++++------- contracts/pool/src/tests/setup.rs | 44 +++++++++------ contracts/pool/src/tests/stake_deployment.rs | 41 +++++--------- contracts/pool_stable/src/contract.rs | 36 ++++++------ contracts/pool_stable/src/tests/setup.rs | 43 +++++++++------ .../pool_stable/src/tests/stake_deployment.rs | 38 +++++-------- packages/phoenix/src/utils.rs | 4 +- 14 files changed, 200 insertions(+), 182 deletions(-) diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index 7e9bbb5bd..14b52db92 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -24,6 +24,8 @@ pub trait FactoryTrait { admin: Address, multihop_wasm_hash: BytesN<32>, lp_wasm_hash: BytesN<32>, + stake_wasm_hash: BytesN<32>, + token_wasm_hash: BytesN<32>, whitelisted_accounts: Vec
, ); @@ -53,6 +55,8 @@ impl FactoryTrait for Factory { admin: Address, multihop_wasm_hash: BytesN<32>, lp_wasm_hash: BytesN<32>, + stake_wasm_hash: BytesN<32>, + token_wasm_hash: BytesN<32>, whitelisted_accounts: Vec
, ) { if is_initialized(&env) { @@ -74,6 +78,8 @@ impl FactoryTrait for Factory { admin: admin.clone(), multihop_address, lp_wasm_hash, + stake_wasm_hash, + token_wasm_hash, whitelisted_accounts, }, ); @@ -103,6 +109,8 @@ impl FactoryTrait for Factory { ); let lp_wasm_hash = get_config(&env).lp_wasm_hash; + let stake_wasm_hash = get_config(&env).stake_wasm_hash; + let token_wasm_hash = get_config(&env).token_wasm_hash; let lp_contract_address = deploy_lp_contract( &env, @@ -113,15 +121,9 @@ impl FactoryTrait for Factory { let init_fn: Symbol = Symbol::new(&env, "initialize"); let init_fn_args: Vec = ( - lp_init_info.admin, - lp_init_info.share_token_decimals, - lp_init_info.swap_fee_bps, - lp_init_info.fee_recipient, - lp_init_info.max_allowed_slippage_bps, - lp_init_info.max_allowed_spread_bps, - lp_init_info.max_referral_bps, - lp_init_info.token_init_info.clone(), - lp_init_info.stake_init_info, + stake_wasm_hash, + token_wasm_hash, + lp_init_info.clone(), ) .into_val(&env); @@ -241,9 +243,6 @@ mod tests { fn validate_token_info_should_fail_on_token_a_less_than_token_b() { let env = Env::default(); - let token_wasm_hash = BytesN::from_array(&env, &[8u8; 0x20]); - let stake_wasm_hash = BytesN::from_array(&env, &[15u8; 0x20]); - let token_a = Address::from_string(&String::from_str( &env, "CBGJMPOZ573XUTIRRFWGWTGSIAOGKJRVMIKBTFYEWTEIU7AEDWKDYMUX", @@ -253,17 +252,12 @@ mod tests { "CAOUDQCLN3BYHH4L7GSH3OSQJFVELHKOEVKOPBENVIGZ6WZ5ZRHFC5LN", )); - let token_init_info = TokenInitInfo { - token_a, - token_b, - token_wasm_hash, - }; + let token_init_info = TokenInitInfo { token_a, token_b }; let stake_init_info = StakeInitInfo { max_distributions: 10, min_bond: 10, min_reward: 10, - stake_wasm_hash, }; validate_token_info(&env, &token_init_info, &stake_init_info); } @@ -281,17 +275,12 @@ mod tests { let token_a = Address::generate(&env); let token_b = Address::generate(&env); - let token_init_info = TokenInitInfo { - token_a, - token_b, - token_wasm_hash, - }; + let token_init_info = TokenInitInfo { token_a, token_b }; let stake_init_info = StakeInitInfo { max_distributions: 10, min_bond: 0, min_reward: 10, - stake_wasm_hash, }; validate_token_info(&env, &token_init_info, &stake_init_info); @@ -308,17 +297,12 @@ mod tests { let token_a = Address::generate(&env); let token_b = Address::generate(&env); - let token_init_info = TokenInitInfo { - token_a, - token_b, - token_wasm_hash, - }; + let token_init_info = TokenInitInfo { token_a, token_b }; let stake_init_info = StakeInitInfo { max_distributions: 10, min_bond: 10, min_reward: 0, - stake_wasm_hash, }; validate_token_info(&env, &token_init_info, &stake_init_info); } diff --git a/contracts/factory/src/storage.rs b/contracts/factory/src/storage.rs index 8f125d775..88ff19709 100644 --- a/contracts/factory/src/storage.rs +++ b/contracts/factory/src/storage.rs @@ -1,4 +1,4 @@ -use soroban_sdk::{contracttype, Address, ConversionError, Env, TryFromVal, Val, Vec}; +use soroban_sdk::{contracttype, Address, BytesN, ConversionError, Env, TryFromVal, Val, Vec}; #[derive(Clone, Copy)] #[repr(u32)] @@ -28,8 +28,9 @@ impl TryFromVal for Val { pub struct Config { pub admin: Address, pub multihop_address: Address, - pub lp_wasm_hash: soroban_sdk::BytesN<32>, - /// A vec of whitelisted addresses that can create liquidity pools + pub lp_wasm_hash: BytesN<32>, + pub stake_wasm_hash: BytesN<32>, + pub token_wasm_hash: BytesN<32>, pub whitelisted_accounts: Vec
, } diff --git a/contracts/factory/src/tests.rs b/contracts/factory/src/tests.rs index 71e369fad..14f285a8d 100644 --- a/contracts/factory/src/tests.rs +++ b/contracts/factory/src/tests.rs @@ -1,7 +1,9 @@ use crate::contract::{Factory, FactoryClient}; use soroban_sdk::{testutils::Address as _, vec, Address, Env}; -use self::setup::{install_lp_contract, install_multihop_wasm}; +use self::setup::{ + install_lp_contract, install_multihop_wasm, install_stake_wasm, install_token_wasm, +}; mod config; mod setup; @@ -20,7 +22,23 @@ fn test_deploy_factory_twice_should_fail() { let multihop = FactoryClient::new(&env, &env.register_contract(None, Factory {})); let multihop_wasm_hash = install_multihop_wasm(&env); let lp_wasm_hash = install_lp_contract(&env); + let stake_wasm_hash = install_stake_wasm(&env); + let token_wasm_hash = install_token_wasm(&env); - multihop.initialize(&admin, &multihop_wasm_hash, &vec![&env, auth_user.clone()]); - multihop.initialize(&admin, &multihop_wasm_hash, &vec![&env, auth_user]); + factory.initialize( + &admin, + &multihop_wasm_hash, + &lp_wasm_hash, + &stake_wasm_hash, + &token_wasm_hash, + &vec![&env, auth_user.clone()], + ); + factory.initialize( + &admin, + &multihop_wasm_hash, + &lp_wasm_hash, + &stake_wasm_hash, + &token_wasm_hash, + &vec![&env, auth_user.clone()], + ); } diff --git a/contracts/factory/src/tests/config.rs b/contracts/factory/src/tests/config.rs index 8844293a0..3251cfddd 100644 --- a/contracts/factory/src/tests/config.rs +++ b/contracts/factory/src/tests/config.rs @@ -1,4 +1,4 @@ -use super::setup::{deploy_factory_contract, install_stake_wasm, install_token_wasm, lp_contract}; +use super::setup::{deploy_factory_contract, lp_contract}; use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; use soroban_sdk::{ @@ -132,12 +132,10 @@ fn factory_fails_to_init_lp_when_authorized_address_not_present() { assert_eq!(factory.get_admin(), admin); let token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(&env), token_a: token1, token_b: token2, }; let stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(&env), min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, diff --git a/contracts/factory/src/tests/queries.rs b/contracts/factory/src/tests/queries.rs index 911b614b7..a8d3cd6fd 100644 --- a/contracts/factory/src/tests/queries.rs +++ b/contracts/factory/src/tests/queries.rs @@ -1,4 +1,4 @@ -use super::setup::{deploy_factory_contract, install_stake_wasm, install_token_wasm}; +use super::setup::deploy_factory_contract; use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; use soroban_sdk::{ @@ -63,36 +63,30 @@ fn test_deploy_multiple_liquidity_pools() { let factory = deploy_factory_contract(&env, Some(admin.clone())); let first_token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(&env), token_a: token1.clone(), token_b: token2.clone(), }; let first_stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(&env), min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, }; let second_token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(&env), token_a: token3.clone(), token_b: token4.clone(), }; let second_stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(&env), min_bond: 5i128, max_distributions: 5u32, min_reward: 2i128, }; let third_token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(&env), token_a: token5.clone(), token_b: token6.clone(), }; let third_stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(&env), min_bond: 6i128, max_distributions: 6u32, min_reward: 3i128, @@ -255,36 +249,30 @@ fn test_queries_by_tuple() { let factory = deploy_factory_contract(&env, Some(admin.clone())); let first_token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(&env), token_a: token1.clone(), token_b: token2.clone(), }; let first_stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(&env), min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, }; let second_token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(&env), token_a: token3.clone(), token_b: token4.clone(), }; let second_stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(&env), min_bond: 5i128, max_distributions: 5u32, min_reward: 2i128, }; let third_token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(&env), token_a: token5.clone(), token_b: token6.clone(), }; let third_stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(&env), min_bond: 6i128, max_distributions: 6u32, min_reward: 3i128, diff --git a/contracts/factory/src/tests/setup.rs b/contracts/factory/src/tests/setup.rs index b9f0f06e9..260b340bd 100644 --- a/contracts/factory/src/tests/setup.rs +++ b/contracts/factory/src/tests/setup.rs @@ -41,6 +41,17 @@ pub fn deploy_factory_contract<'a>( let multihop_wasm_hash = install_multihop_wasm(env); let whitelisted_accounts = vec![env, admin.clone()]; - factory.initialize(&admin, &multihop_wasm_hash, &whitelisted_accounts); + let lp_wasm_hash = install_lp_contract(env); + let stake_wasm_hash = install_stake_wasm(env); + let token_wasm_hash = install_token_wasm(env); + + factory.initialize( + &admin, + &multihop_wasm_hash, + &lp_wasm_hash, + &stake_wasm_hash, + &token_wasm_hash, + &whitelisted_accounts, + ); factory } diff --git a/contracts/multihop/src/tests/setup.rs b/contracts/multihop/src/tests/setup.rs index e54275572..b4f751f5f 100644 --- a/contracts/multihop/src/tests/setup.rs +++ b/contracts/multihop/src/tests/setup.rs @@ -92,7 +92,18 @@ pub fn deploy_and_initialize_factory(env: &Env, admin: Address) -> factory::Clie let multihop_wasm_hash = install_multihop_wasm(env); let whitelisted_accounts = vec![env, admin.clone()]; - factory_client.initialize(&admin.clone(), &multihop_wasm_hash, &whitelisted_accounts); + let lp_wasm_hash = install_lp_contract(env); + let stake_wasm_hash = install_stake_wasm(env); + let token_wasm_hash = install_token_wasm(env); + + factory_client.initialize( + &admin.clone(), + &multihop_wasm_hash, + &lp_wasm_hash, + &stake_wasm_hash, + &token_wasm_hash, + &whitelisted_accounts, + ); factory_client } @@ -115,12 +126,10 @@ pub fn deploy_and_initialize_lp( } let token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(env), token_a: token_a.clone(), token_b: token_b.clone(), }; let stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(env), min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, diff --git a/contracts/pool/src/contract.rs b/contracts/pool/src/contract.rs index c8bf5f9e4..ed8939c2b 100644 --- a/contracts/pool/src/contract.rs +++ b/contracts/pool/src/contract.rs @@ -1,3 +1,4 @@ +use phoenix::utils::LiquidityPoolInitInfo; use soroban_sdk::{ contract, contractimpl, contractmeta, log, panic_with_error, Address, BytesN, Env, IntoVal, }; @@ -36,15 +37,18 @@ pub trait LiquidityPoolTrait { #[allow(clippy::too_many_arguments)] fn initialize( env: Env, - admin: Address, - share_token_decimals: u32, - swap_fee_bps: i64, - fee_recipient: Address, - max_allowed_slippage_bps: i64, - max_allowed_spread_bps: i64, - max_referral_bps: i64, - token_init_info: TokenInitInfo, - stake_contract_info: StakeInitInfo, + // admin: Address, + // share_token_decimals: u32, + // swap_fee_bps: i64, + // fee_recipient: Address, + // max_allowed_slippage_bps: i64, + // max_allowed_spread_bps: i64, + // max_referral_bps: i64, + stake_wasm_hash: BytesN<32>, + token_wasm_hash: BytesN<32>, + // token_init_info: TokenInitInfo, + // stake_contract_info: StakeInitInfo, + lp_init_info: LiquidityPoolInitInfo, ); // Deposits token_a and token_b. Also mints pool shares for the "to" Identifier. The amount minted @@ -134,28 +138,39 @@ impl LiquidityPoolTrait for LiquidityPool { #[allow(clippy::too_many_arguments)] fn initialize( env: Env, - admin: Address, - share_token_decimals: u32, - swap_fee_bps: i64, - fee_recipient: Address, - max_allowed_slippage_bps: i64, - max_allowed_spread_bps: i64, - max_referral_bps: i64, - token_init_info: TokenInitInfo, - stake_init_info: StakeInitInfo, + // admin: Address, + // share_token_decimals: u32, + // swap_fee_bps: i64, + // fee_recipient: Address, + // max_allowed_slippage_bps: i64, + // max_allowed_spread_bps: i64, + // max_referral_bps: i64, + stake_wasm_hash: BytesN<32>, + token_wasm_hash: BytesN<32>, + // token_init_info: TokenInitInfo, + // stake_init_info: StakeInitInfo, + lp_init_info: LiquidityPoolInitInfo, ) { if is_initialized(&env) { panic!("Liquidity Pool: Initialize: initializing contract twice is not allowed"); } + let admin = lp_init_info.admin; + let share_token_decimals = lp_init_info.share_token_decimals; + let swap_fee_bps = lp_init_info.swap_fee_bps; + let fee_recipient = lp_init_info.fee_recipient; + let max_allowed_slippage_bps = lp_init_info.max_allowed_slippage_bps; + let max_allowed_spread_bps = lp_init_info.max_allowed_spread_bps; + let max_referral_bps = lp_init_info.max_referral_bps; + let token_init_info = lp_init_info.token_init_info; + let stake_init_info = lp_init_info.stake_init_info; + set_initialized(&env); // Token info let token_a = token_init_info.token_a; let token_b = token_init_info.token_b; - let token_wasm_hash = token_init_info.token_wasm_hash; // Contract info - let stake_wasm_hash = stake_init_info.stake_wasm_hash; let min_bond = stake_init_info.min_bond; let max_distributions = stake_init_info.max_distributions; let min_reward = stake_init_info.min_reward; diff --git a/contracts/pool/src/tests/setup.rs b/contracts/pool/src/tests/setup.rs index e6e1c49c3..c42e2fa10 100644 --- a/contracts/pool/src/tests/setup.rs +++ b/contracts/pool/src/tests/setup.rs @@ -5,7 +5,7 @@ use crate::{ token_contract, }; -use phoenix::utils::{StakeInitInfo, TokenInitInfo}; +use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; pub fn deploy_token_contract<'a>(env: &Env, admin: &Address) -> token_contract::Client<'a> { token_contract::Client::new(env, &env.register_stellar_asset_contract(admin.clone())) @@ -37,37 +37,47 @@ pub fn deploy_liquidity_pool_contract<'a>( ) -> LiquidityPoolClient<'a> { let admin = admin.into().unwrap_or(Address::generate(env)); let pool = LiquidityPoolClient::new(env, &env.register_contract(None, LiquidityPool {})); - let token_wasm_hash = install_token_wasm(env); - let stake_wasm_hash = install_stake_wasm(env); let fee_recipient = fee_recipient .into() .unwrap_or_else(|| Address::generate(env)); - let max_allowed_slippage = max_allowed_slippage_bps.into().unwrap_or(5_000); // 50% if not specified - let max_allowed_spread = max_allowed_spread_bps.into().unwrap_or(500); // 5% if not specified - let share_token_decimals = 7u32; let token_init_info = TokenInitInfo { - token_wasm_hash, token_a: token_a_b.0.clone(), token_b: token_a_b.1.clone(), }; let stake_init_info = StakeInitInfo { - stake_wasm_hash, min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, }; + let stake_wasm_hash = install_stake_wasm(env); + let token_wasm_hash = install_token_wasm(env); + + let lp_init_info = LiquidityPoolInitInfo { + admin, + share_token_decimals: 7u32, + swap_fee_bps: swap_fees, + fee_recipient, + max_allowed_slippage_bps: max_allowed_slippage_bps.into().unwrap_or(5_000), + max_allowed_spread_bps: max_allowed_spread_bps.into().unwrap_or(500), + max_referral_bps: 5_000, + token_init_info, + stake_init_info, + }; pool.initialize( - &admin, - &share_token_decimals, - &swap_fees, - &fee_recipient, - &max_allowed_slippage, - &max_allowed_spread, - &5_000, - &token_init_info, - &stake_init_info, + // &admin, + // &share_token_decimals, + // &swap_fees, + // &fee_recipient, + // &max_allowed_slippage, + // &max_allowed_spread, + // &5_000, + // &token_init_info, + // &stake_init_info, + &stake_wasm_hash, + &token_wasm_hash, + &lp_init_info, ); pool } diff --git a/contracts/pool/src/tests/stake_deployment.rs b/contracts/pool/src/tests/stake_deployment.rs index 8f55643bb..b1941d702 100644 --- a/contracts/pool/src/tests/stake_deployment.rs +++ b/contracts/pool/src/tests/stake_deployment.rs @@ -1,5 +1,5 @@ extern crate std; -use phoenix::utils::{StakeInitInfo, TokenInitInfo}; +use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; use soroban_sdk::{testutils::Address as _, Address, Env}; use super::setup::{deploy_liquidity_pool_contract, deploy_token_contract}; @@ -96,41 +96,30 @@ fn second_pool_deployment_should_fail() { let fee_recipient = user; let max_allowed_slippage = 5_000i64; // 50% if not specified let max_allowed_spread = 500i64; // 5% if not specified - let share_token_decimals = 7u32; let token_init_info = TokenInitInfo { - token_wasm_hash, token_a: token1.address.clone(), token_b: token2.address.clone(), }; let stake_init_info = StakeInitInfo { - stake_wasm_hash, min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, }; - pool.initialize( - &admin1, - &share_token_decimals, - &0i64, - &fee_recipient, - &max_allowed_slippage, - &max_allowed_spread, - &500, - &token_init_info, - &stake_init_info, - ); + let lp_init_info = LiquidityPoolInitInfo { + admin: admin1, + share_token_decimals: 7u32, + swap_fee_bps: 0i64, + fee_recipient, + max_allowed_slippage_bps: max_allowed_slippage, + max_allowed_spread_bps: max_allowed_spread, + max_referral_bps: 500, + token_init_info, + stake_init_info, + }; - pool.initialize( - &admin1, - &share_token_decimals, - &0i64, - &fee_recipient, - &max_allowed_slippage, - &max_allowed_spread, - &500, - &token_init_info, - &stake_init_info, - ); + pool.initialize(&stake_wasm_hash, &token_wasm_hash, &lp_init_info); + + pool.initialize(&stake_wasm_hash, &token_wasm_hash, &lp_init_info); } diff --git a/contracts/pool_stable/src/contract.rs b/contracts/pool_stable/src/contract.rs index 548a05cc6..4b94d9fa1 100644 --- a/contracts/pool_stable/src/contract.rs +++ b/contracts/pool_stable/src/contract.rs @@ -1,3 +1,4 @@ +use phoenix::utils::LiquidityPoolInitInfo; use soroban_sdk::{contract, contractimpl, contractmeta, log, Address, BytesN, Env, IntoVal}; use crate::storage::utils::{is_initialized, set_initialized}; @@ -36,15 +37,9 @@ pub trait StableLiquidityPoolTrait { #[allow(clippy::too_many_arguments)] fn initialize( env: Env, - admin: Address, - share_token_decimals: u32, - swap_fee_bps: i64, - fee_recipient: Address, - max_allowed_slippage_bps: i64, - max_allowed_spread_bps: i64, - amp: u64, - token_init_info: TokenInitInfo, - stake_contract_info: StakeInitInfo, + stake_wasm_hash: BytesN<32>, + token_wasm_hash: BytesN<32>, + lp_init_info: LiquidityPoolInitInfo, ); // Deposits token_a and token_b. Also mints pool shares for the "to" Identifier. The amount minted @@ -129,28 +124,29 @@ impl StableLiquidityPoolTrait for StableLiquidityPool { #[allow(clippy::too_many_arguments)] fn initialize( env: Env, - admin: Address, - share_token_decimals: u32, - swap_fee_bps: i64, - fee_recipient: Address, - max_allowed_slippage_bps: i64, - max_allowed_spread_bps: i64, - amp: u64, - token_init_info: TokenInitInfo, - stake_init_info: StakeInitInfo, + stake_wasm_hash: BytesN<32>, + token_wasm_hash: BytesN<32>, + lp_init_info: LiquidityPoolInitInfo, ) { if is_initialized(&env) { panic!("Pool stable: Initialize: initializing contract twice is not allowed"); } + let admin = lp_init_info.admin; + let share_token_decimals = lp_init_info.share_token_decimals; + let swap_fee_bps = lp_init_info.swap_fee_bps; + let fee_recipient = lp_init_info.fee_recipient; + let max_allowed_slippage_bps = lp_init_info.max_allowed_slippage_bps; + let max_allowed_spread_bps = lp_init_info.max_allowed_spread_bps; + let token_init_info = lp_init_info.token_init_info; + let stake_init_info = lp_init_info.stake_init_info; + set_initialized(&env); // Token info let token_a = token_init_info.token_a; let token_b = token_init_info.token_b; - let token_wasm_hash = token_init_info.token_wasm_hash; // Contract info - let stake_wasm_hash = stake_init_info.stake_wasm_hash; let min_bond = stake_init_info.min_bond; let max_distributions = stake_init_info.max_distributions; let min_reward = stake_init_info.min_reward; diff --git a/contracts/pool_stable/src/tests/setup.rs b/contracts/pool_stable/src/tests/setup.rs index 58f5301b0..b42ef92c2 100644 --- a/contracts/pool_stable/src/tests/setup.rs +++ b/contracts/pool_stable/src/tests/setup.rs @@ -5,7 +5,7 @@ use crate::{ token_contract, }; -use phoenix::utils::{StakeInitInfo, TokenInitInfo}; +use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; pub fn deploy_token_contract<'a>(env: &Env, admin: &Address) -> token_contract::Client<'a> { token_contract::Client::new(env, &env.register_stellar_asset_contract(admin.clone())) @@ -38,36 +38,47 @@ pub fn deploy_stable_liquidity_pool_contract<'a>( let admin = admin.into().unwrap_or(Address::generate(env)); let pool = StableLiquidityPoolClient::new(env, &env.register_contract(None, StableLiquidityPool {})); - let token_wasm_hash = install_token_wasm(env); - let stake_wasm_hash = install_stake_wasm(env); let fee_recipient = fee_recipient .into() .unwrap_or_else(|| Address::generate(env)); - let max_allowed_slippage = max_allowed_slippage_bps.into().unwrap_or(5_000); // 50% if not specified - let max_allowed_spread = max_allowed_spread_bps.into().unwrap_or(500); // 5% if not specified - let share_token_decimals = 7u32; let token_init_info = TokenInitInfo { - token_wasm_hash, token_a: token_a_b.0.clone(), token_b: token_a_b.1.clone(), }; let stake_init_info = StakeInitInfo { - stake_wasm_hash, min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, }; + let token_wasm_hash = install_token_wasm(env); + let stake_wasm_hash = install_stake_wasm(env); + + let lp_init_info = LiquidityPoolInitInfo { + admin, + share_token_decimals: 7u32, + swap_fee_bps: swap_fees, + fee_recipient, + max_allowed_slippage_bps: max_allowed_slippage_bps.into().unwrap_or(5_000), + max_allowed_spread_bps: max_allowed_spread_bps.into().unwrap_or(500), + max_referral_bps: 5_000, + token_init_info, + stake_init_info, + }; + pool.initialize( - &admin, - &share_token_decimals, - &swap_fees, - &fee_recipient, - &max_allowed_slippage, - &max_allowed_spread, - &token_init_info, - &stake_init_info, + // &admin, + // &share_token_decimals, + // &swap_fees, + // &fee_recipient, + // &max_allowed_slippage, + // &max_allowed_spread, + // &token_init_info, + // &stake_init_info, + &stake_wasm_hash, + &token_wasm_hash, + &lp_init_info, ); pool } diff --git a/contracts/pool_stable/src/tests/stake_deployment.rs b/contracts/pool_stable/src/tests/stake_deployment.rs index 49beb7640..8b5a2eacb 100644 --- a/contracts/pool_stable/src/tests/stake_deployment.rs +++ b/contracts/pool_stable/src/tests/stake_deployment.rs @@ -1,5 +1,5 @@ extern crate std; -use phoenix::utils::{StakeInitInfo, TokenInitInfo}; +use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; use soroban_sdk::{testutils::Address as _, Address, Env}; use super::setup::{deploy_stable_liquidity_pool_contract, deploy_token_contract}; @@ -95,39 +95,29 @@ fn second_pool_stable_deployment_should_fail() { let fee_recipient = user; let max_allowed_slippage = 5_000i64; // 50% if not specified let max_allowed_spread = 500i64; // 5% if not specified - let share_token_decimals = 7u32; let token_init_info = TokenInitInfo { - token_wasm_hash, token_a: token1.address.clone(), token_b: token2.address.clone(), }; let stake_init_info = StakeInitInfo { - stake_wasm_hash, min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, }; - pool.initialize( - &admin1, - &share_token_decimals, - &0i64, - &fee_recipient, - &max_allowed_slippage, - &max_allowed_spread, - &token_init_info, - &stake_init_info, - ); + let lp_init_info = LiquidityPoolInitInfo { + admin: admin1, + share_token_decimals: 7u32, + swap_fee_bps: 0i64, + fee_recipient, + max_allowed_slippage_bps: max_allowed_slippage, + max_allowed_spread_bps: max_allowed_spread, + max_referral_bps: 500, + token_init_info, + stake_init_info, + }; - pool.initialize( - &admin1, - &share_token_decimals, - &0i64, - &fee_recipient, - &max_allowed_slippage, - &max_allowed_spread, - &token_init_info, - &stake_init_info, - ); + pool.initialize(&stake_wasm_hash, &token_wasm_hash, &lp_init_info); + pool.initialize(&stake_wasm_hash, &token_wasm_hash, &lp_init_info); } diff --git a/packages/phoenix/src/utils.rs b/packages/phoenix/src/utils.rs index 79d482ffe..7aad3c4d4 100644 --- a/packages/phoenix/src/utils.rs +++ b/packages/phoenix/src/utils.rs @@ -1,5 +1,5 @@ use decimal::Decimal; -use soroban_sdk::{contracttype, Address, BytesN}; +use soroban_sdk::{contracttype, Address}; // Validate if int value is bigger then 0 #[macro_export] @@ -26,7 +26,6 @@ pub fn is_approx_ratio(a: Decimal, b: Decimal, tolerance: Decimal) -> bool { #[contracttype] #[derive(Clone, Debug, Eq, PartialEq)] pub struct TokenInitInfo { - pub token_wasm_hash: BytesN<32>, pub token_a: Address, pub token_b: Address, } @@ -34,7 +33,6 @@ pub struct TokenInitInfo { #[contracttype] #[derive(Clone, Debug, Eq, PartialEq)] pub struct StakeInitInfo { - pub stake_wasm_hash: BytesN<32>, pub min_bond: i128, pub max_distributions: u32, pub min_reward: i128, From 52b35c920827eca485a460f41bc373f77d38ce88 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Fri, 19 Jan 2024 21:50:23 +0200 Subject: [PATCH 3/8] Factory: changes according to PR review --- contracts/factory/src/contract.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index 14b52db92..a2b23aab6 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -108,9 +108,10 @@ impl FactoryTrait for Factory { &lp_init_info.stake_init_info, ); - let lp_wasm_hash = get_config(&env).lp_wasm_hash; - let stake_wasm_hash = get_config(&env).stake_wasm_hash; - let token_wasm_hash = get_config(&env).token_wasm_hash; + let config = get_config(&env); + let lp_wasm_hash = config.lp_wasm_hash; + let stake_wasm_hash = config.stake_wasm_hash; + let token_wasm_hash = config.token_wasm_hash; let lp_contract_address = deploy_lp_contract( &env, From ec4beb4b71cb95d7546775fabd8dcc1c75c3219d Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Fri, 19 Jan 2024 22:03:31 +0200 Subject: [PATCH 4/8] Pool, Pool-Stable: lints --- contracts/pool/src/contract.rs | 5 +---- contracts/pool_stable/src/contract.rs | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/contracts/pool/src/contract.rs b/contracts/pool/src/contract.rs index ed8939c2b..8ab5a2f7e 100644 --- a/contracts/pool/src/contract.rs +++ b/contracts/pool/src/contract.rs @@ -17,10 +17,7 @@ use crate::{ token_contract, }; use decimal::Decimal; -use phoenix::{ - utils::{is_approx_ratio, StakeInitInfo, TokenInitInfo}, - validate_int_parameters, -}; +use phoenix::{utils::is_approx_ratio, validate_int_parameters}; // Metadata that is added on to the WASM custom section contractmeta!( diff --git a/contracts/pool_stable/src/contract.rs b/contracts/pool_stable/src/contract.rs index 4b94d9fa1..d8fd9e16e 100644 --- a/contracts/pool_stable/src/contract.rs +++ b/contracts/pool_stable/src/contract.rs @@ -14,10 +14,7 @@ use crate::{ token_contract, }; use decimal::Decimal; -use phoenix::{ - utils::{StakeInitInfo, TokenInitInfo}, - validate_int_parameters, -}; +use phoenix::{utils::is_approx_ratio, validate_int_parameters}; // Minimum amount of initial LP shares to mint const MINIMUM_LIQUIDITY_AMOUNT: i128 = 1000; From 9905dbf542e8f7af8c4341f05c1d652d7c74b280 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Mon, 22 Jan 2024 19:59:17 +0200 Subject: [PATCH 5/8] Factory, Multihop: fixes merge conflicts --- contracts/factory/src/tests.rs | 4 +++- contracts/factory/src/tests/config.rs | 5 ----- contracts/multihop/src/tests/setup.rs | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/contracts/factory/src/tests.rs b/contracts/factory/src/tests.rs index 14f285a8d..6e96f654e 100644 --- a/contracts/factory/src/tests.rs +++ b/contracts/factory/src/tests.rs @@ -2,7 +2,7 @@ use crate::contract::{Factory, FactoryClient}; use soroban_sdk::{testutils::Address as _, vec, Address, Env}; use self::setup::{ - install_lp_contract, install_multihop_wasm, install_stake_wasm, install_token_wasm, + install_lp_contract, install_multihop_wasm, install_stake_wasm, install_token_wasm, deploy_factory_contract, }; mod config; @@ -25,6 +25,8 @@ fn test_deploy_factory_twice_should_fail() { let stake_wasm_hash = install_stake_wasm(&env); let token_wasm_hash = install_token_wasm(&env); + let factory = deploy_factory_contract(&env, admin.clone()); + factory.initialize( &admin, &multihop_wasm_hash, diff --git a/contracts/factory/src/tests/config.rs b/contracts/factory/src/tests/config.rs index 3251cfddd..db9054536 100644 --- a/contracts/factory/src/tests/config.rs +++ b/contracts/factory/src/tests/config.rs @@ -56,23 +56,18 @@ fn factory_successfully_inits_lp() { assert_eq!(factory.get_admin(), admin); let token_init_info = TokenInitInfo { - token_wasm_hash: install_token_wasm(&env), token_a: token1, token_b: token2, }; let stake_init_info = StakeInitInfo { - stake_wasm_hash: install_stake_wasm(&env), min_bond: 10i128, max_distributions: 10u32, min_reward: 5i128, }; - let lp_wasm_hash = install_lp_contract(&env); - let lp_init_info = LiquidityPoolInitInfo { admin: admin.clone(), fee_recipient: user.clone(), - lp_wasm_hash, max_allowed_slippage_bps: 5_000, max_allowed_spread_bps: 500, share_token_decimals: 7, diff --git a/contracts/multihop/src/tests/setup.rs b/contracts/multihop/src/tests/setup.rs index b4f751f5f..3c89da4fe 100644 --- a/contracts/multihop/src/tests/setup.rs +++ b/contracts/multihop/src/tests/setup.rs @@ -102,7 +102,7 @@ pub fn deploy_and_initialize_factory(env: &Env, admin: Address) -> factory::Clie &lp_wasm_hash, &stake_wasm_hash, &token_wasm_hash, - &whitelisted_accounts, + &whitelisted_accounts, ); factory_client } From 6e5e70b2bd24a246ac95f0c001ec51fdbcc61815 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Mon, 22 Jan 2024 20:27:09 +0200 Subject: [PATCH 6/8] Factory: lints --- contracts/factory/src/contract.rs | 16 +++------------- contracts/factory/src/tests.rs | 5 ++--- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index a2b23aab6..10f6fb74b 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -121,12 +121,8 @@ impl FactoryTrait for Factory { ); let init_fn: Symbol = Symbol::new(&env, "initialize"); - let init_fn_args: Vec = ( - stake_wasm_hash, - token_wasm_hash, - lp_init_info.clone(), - ) - .into_val(&env); + let init_fn_args: Vec = + (stake_wasm_hash, token_wasm_hash, lp_init_info.clone()).into_val(&env); env.invoke_contract::(&lp_contract_address, &init_fn, init_fn_args); @@ -235,7 +231,7 @@ fn validate_token_info( #[cfg(test)] mod tests { use super::*; - use soroban_sdk::{testutils::Address as _, Address, BytesN, String}; + use soroban_sdk::{testutils::Address as _, Address, String}; #[test] #[should_panic( @@ -270,9 +266,6 @@ mod tests { fn validate_token_info_should_fail_on_min_bond_less_than_zero() { let env = Env::default(); - let token_wasm_hash = BytesN::from_array(&env, &[8u8; 0x20]); - let stake_wasm_hash = BytesN::from_array(&env, &[15u8; 0x20]); - let token_a = Address::generate(&env); let token_b = Address::generate(&env); @@ -292,9 +285,6 @@ mod tests { fn validate_token_info_should_fail_on_min_reward_less_than_zero() { let env = Env::default(); - let token_wasm_hash = BytesN::from_array(&env, &[8u8; 0x20]); - let stake_wasm_hash = BytesN::from_array(&env, &[15u8; 0x20]); - let token_a = Address::generate(&env); let token_b = Address::generate(&env); diff --git a/contracts/factory/src/tests.rs b/contracts/factory/src/tests.rs index 6e96f654e..b340c0b48 100644 --- a/contracts/factory/src/tests.rs +++ b/contracts/factory/src/tests.rs @@ -1,8 +1,8 @@ -use crate::contract::{Factory, FactoryClient}; use soroban_sdk::{testutils::Address as _, vec, Address, Env}; use self::setup::{ - install_lp_contract, install_multihop_wasm, install_stake_wasm, install_token_wasm, deploy_factory_contract, + deploy_factory_contract, install_lp_contract, install_multihop_wasm, install_stake_wasm, + install_token_wasm, }; mod config; @@ -19,7 +19,6 @@ fn test_deploy_factory_twice_should_fail() { let admin = Address::generate(&env); let auth_user = Address::generate(&env); - let multihop = FactoryClient::new(&env, &env.register_contract(None, Factory {})); let multihop_wasm_hash = install_multihop_wasm(&env); let lp_wasm_hash = install_lp_contract(&env); let stake_wasm_hash = install_stake_wasm(&env); From 1dee574ac3dcbbe7c0193665f3d28d5efff62d2b Mon Sep 17 00:00:00 2001 From: Jakub Bogucki Date: Thu, 25 Jan 2024 13:03:11 +0100 Subject: [PATCH 7/8] Remove commented out parameters --- contracts/pool/src/contract.rs | 18 ------------------ contracts/pool/src/tests/setup.rs | 9 --------- contracts/pool_stable/src/tests/setup.rs | 8 -------- 3 files changed, 35 deletions(-) diff --git a/contracts/pool/src/contract.rs b/contracts/pool/src/contract.rs index 8ab5a2f7e..8b6672396 100644 --- a/contracts/pool/src/contract.rs +++ b/contracts/pool/src/contract.rs @@ -34,17 +34,8 @@ pub trait LiquidityPoolTrait { #[allow(clippy::too_many_arguments)] fn initialize( env: Env, - // admin: Address, - // share_token_decimals: u32, - // swap_fee_bps: i64, - // fee_recipient: Address, - // max_allowed_slippage_bps: i64, - // max_allowed_spread_bps: i64, - // max_referral_bps: i64, stake_wasm_hash: BytesN<32>, token_wasm_hash: BytesN<32>, - // token_init_info: TokenInitInfo, - // stake_contract_info: StakeInitInfo, lp_init_info: LiquidityPoolInitInfo, ); @@ -135,17 +126,8 @@ impl LiquidityPoolTrait for LiquidityPool { #[allow(clippy::too_many_arguments)] fn initialize( env: Env, - // admin: Address, - // share_token_decimals: u32, - // swap_fee_bps: i64, - // fee_recipient: Address, - // max_allowed_slippage_bps: i64, - // max_allowed_spread_bps: i64, - // max_referral_bps: i64, stake_wasm_hash: BytesN<32>, token_wasm_hash: BytesN<32>, - // token_init_info: TokenInitInfo, - // stake_init_info: StakeInitInfo, lp_init_info: LiquidityPoolInitInfo, ) { if is_initialized(&env) { diff --git a/contracts/pool/src/tests/setup.rs b/contracts/pool/src/tests/setup.rs index c42e2fa10..3e1c639fc 100644 --- a/contracts/pool/src/tests/setup.rs +++ b/contracts/pool/src/tests/setup.rs @@ -66,15 +66,6 @@ pub fn deploy_liquidity_pool_contract<'a>( }; pool.initialize( - // &admin, - // &share_token_decimals, - // &swap_fees, - // &fee_recipient, - // &max_allowed_slippage, - // &max_allowed_spread, - // &5_000, - // &token_init_info, - // &stake_init_info, &stake_wasm_hash, &token_wasm_hash, &lp_init_info, diff --git a/contracts/pool_stable/src/tests/setup.rs b/contracts/pool_stable/src/tests/setup.rs index b42ef92c2..1d5d3da2e 100644 --- a/contracts/pool_stable/src/tests/setup.rs +++ b/contracts/pool_stable/src/tests/setup.rs @@ -68,14 +68,6 @@ pub fn deploy_stable_liquidity_pool_contract<'a>( }; pool.initialize( - // &admin, - // &share_token_decimals, - // &swap_fees, - // &fee_recipient, - // &max_allowed_slippage, - // &max_allowed_spread, - // &token_init_info, - // &stake_init_info, &stake_wasm_hash, &token_wasm_hash, &lp_init_info, From 40608334fd15600dd3f4cbec4861e120ab1c6659 Mon Sep 17 00:00:00 2001 From: Jakub Date: Thu, 25 Jan 2024 14:42:44 +0100 Subject: [PATCH 8/8] Pool stable: Bring back an AMP parameter mistakenly removed during a rebase --- contracts/pool_stable/src/contract.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/pool_stable/src/contract.rs b/contracts/pool_stable/src/contract.rs index d8fd9e16e..4aa72de3a 100644 --- a/contracts/pool_stable/src/contract.rs +++ b/contracts/pool_stable/src/contract.rs @@ -14,7 +14,7 @@ use crate::{ token_contract, }; use decimal::Decimal; -use phoenix::{utils::is_approx_ratio, validate_int_parameters}; +use phoenix::validate_int_parameters; // Minimum amount of initial LP shares to mint const MINIMUM_LIQUIDITY_AMOUNT: i128 = 1000; @@ -36,6 +36,7 @@ pub trait StableLiquidityPoolTrait { env: Env, stake_wasm_hash: BytesN<32>, token_wasm_hash: BytesN<32>, + amp: u64, lp_init_info: LiquidityPoolInitInfo, ); @@ -123,6 +124,7 @@ impl StableLiquidityPoolTrait for StableLiquidityPool { env: Env, stake_wasm_hash: BytesN<32>, token_wasm_hash: BytesN<32>, + amp: u64, lp_init_info: LiquidityPoolInitInfo, ) { if is_initialized(&env) {