From a1ca1fe052adbaf15c66a37dd5d8c3f9b37cb62b Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Thu, 19 Oct 2023 01:03:35 +0300 Subject: [PATCH 1/8] Factory: initializes the multihop from the initialize method of factory and saves the multihop address in Config --- contracts/factory/src/contract.rs | 11 +++++++---- contracts/factory/src/lib.rs | 6 ++++++ contracts/factory/src/storage.rs | 25 ++++++++++++++----------- contracts/factory/src/utils.rs | 20 +++++++++++++++++++- 4 files changed, 46 insertions(+), 16 deletions(-) diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index beb267297..bfa1c18d7 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -2,9 +2,10 @@ use soroban_sdk::{ contract, contractimpl, contractmeta, log, Address, Env, IntoVal, Symbol, Val, Vec, }; -use crate::storage::{is_initialized, set_initialized, LiquidityPoolInfo, PairTupleKey}; +use crate::storage::{is_initialized, set_initialized, LiquidityPoolInfo, PairTupleKey, save_config, Config, get_config}; +use crate::utils::deploy_multihop_contract; use crate::{ - storage::{get_admin, get_lp_vec, save_admin, save_lp_vec, save_lp_vec_with_tuple_as_key}, + storage::{get_lp_vec, save_lp_vec, save_lp_vec_with_tuple_as_key}, utils::deploy_lp_contract, }; use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; @@ -40,7 +41,9 @@ impl FactoryTrait for Factory { set_initialized(&env); - save_admin(&env, admin.clone()); + let multihop_address = deploy_multihop_contract(env.clone(), admin.clone()); + + save_config(&env, Config{admin: admin.clone(), multihop_address}); save_lp_vec(&env, Vec::new(&env)); @@ -144,7 +147,7 @@ impl FactoryTrait for Factory { } fn get_admin(env: Env) -> Address { - get_admin(&env) + get_config(&env).admin } } diff --git a/contracts/factory/src/lib.rs b/contracts/factory/src/lib.rs index a6e36b07f..ada4c733c 100644 --- a/contracts/factory/src/lib.rs +++ b/contracts/factory/src/lib.rs @@ -3,5 +3,11 @@ mod contract; mod storage; mod utils; +pub mod multihop_contract { + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/phoenix_multihop.wasm" + ); +} + #[cfg(test)] mod tests; diff --git a/contracts/factory/src/storage.rs b/contracts/factory/src/storage.rs index c639d7a92..14ef4b804 100644 --- a/contracts/factory/src/storage.rs +++ b/contracts/factory/src/storage.rs @@ -3,10 +3,9 @@ use soroban_sdk::{contracttype, Address, ConversionError, Env, TryFromVal, Val, #[derive(Clone, Copy)] #[repr(u32)] pub enum DataKey { - Admin = 1, - Config = 2, - LpVec = 3, - Initialized = 4, + Config = 1, + LpVec = 2, + Initialized = 3, } #[derive(Clone)] @@ -24,6 +23,13 @@ impl TryFromVal for Val { } } +#[contracttype] +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Config { + pub admin: Address, + pub multihop_address: Address, +} + #[contracttype] #[derive(Clone, Debug, PartialEq, Eq)] pub struct Asset { @@ -53,15 +59,12 @@ pub struct LiquidityPoolInfo { pub total_fee_bps: i64, } -pub fn save_admin(env: &Env, address: Address) { - env.storage().instance().set(&DataKey::Admin, &address); +pub fn save_config(env: &Env, config: Config) { + env.storage().persistent().set(&DataKey::Config, &config); } -pub fn get_admin(env: &Env) -> Address { - env.storage() - .instance() - .get(&DataKey::Admin) - .expect("Factory: Failed to get admin from storage") +pub fn get_config(env: &Env) -> Config { + env.storage().persistent().get(&DataKey::Config).expect("Config not set") } pub fn get_lp_vec(env: &Env) -> Vec
{ diff --git a/contracts/factory/src/utils.rs b/contracts/factory/src/utils.rs index 2c26396c5..7650550e0 100644 --- a/contracts/factory/src/utils.rs +++ b/contracts/factory/src/utils.rs @@ -1,4 +1,4 @@ -use soroban_sdk::{xdr::ToXdr, Address, Bytes, BytesN, Env}; +use soroban_sdk::{xdr::ToXdr, Address, Bytes, BytesN, Env, IntoVal, Symbol, Val, Vec}; pub fn deploy_lp_contract( env: &Env, @@ -21,3 +21,21 @@ pub fn deploy_lp_contract( .with_current_contract(salt) .deploy(lp_wasm_hash) } + +pub fn deploy_multihop_contract(env: Env, admin: Address) -> Address { + let mut salt = Bytes::new(&env); + salt.append(&admin.to_xdr(&env)); + let salt = env.crypto().sha256(&salt); + + let multihop_wasm_hash = env.deployer().upload_contract_wasm(multihop_contract::WASM); + let multihop_address = env + .deployer() + .with_current_contract(salt) + .deploy(multihop_wasm_hash); + + let init_fn = Symbol::new(&env, "initialize"); + let init_args: Vec = (admin, env.current_contract_address()).into_val(&env); + env.invoke_contract(&multihop_address, &init_fn, init_args); + + multihop_address +} From 43cb84d68ed9a24d6f419cd700c5233b76326d7e Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Thu, 19 Oct 2023 19:40:46 +0300 Subject: [PATCH 2/8] Factory, Multihop: adds multihop_wasm param to the initialize method of factory. Failing tests --- contracts/factory/src/contract.rs | 22 ++++++++++++++++------ contracts/factory/src/lib.rs | 6 ------ contracts/factory/src/storage.rs | 7 +++++-- contracts/factory/src/tests.rs | 8 +++++--- contracts/factory/src/tests/setup.rs | 12 ++++++++++-- contracts/factory/src/utils.rs | 11 +++++++---- contracts/multihop/src/tests/setup.rs | 3 ++- 7 files changed, 45 insertions(+), 24 deletions(-) diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index bfa1c18d7..8152a89b2 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -1,8 +1,11 @@ use soroban_sdk::{ - contract, contractimpl, contractmeta, log, Address, Env, IntoVal, Symbol, Val, Vec, + contract, contractimpl, contractmeta, log, Address, BytesN, Env, IntoVal, Symbol, Val, Vec, }; -use crate::storage::{is_initialized, set_initialized, LiquidityPoolInfo, PairTupleKey, save_config, Config, get_config}; +use crate::storage::{ + get_config, is_initialized, save_config, set_initialized, Config, LiquidityPoolInfo, + PairTupleKey, +}; use crate::utils::deploy_multihop_contract; use crate::{ storage::{get_lp_vec, save_lp_vec, save_lp_vec_with_tuple_as_key}, @@ -17,7 +20,7 @@ contractmeta!(key = "Description", val = "Phoenix Protocol Factory"); pub struct Factory; pub trait FactoryTrait { - fn initialize(env: Env, admin: Address); + fn initialize(env: Env, admin: Address, multihop_wasm_hash: BytesN<32>); fn create_liquidity_pool(env: Env, lp_init_info: LiquidityPoolInitInfo) -> Address; @@ -34,16 +37,23 @@ pub trait FactoryTrait { #[contractimpl] impl FactoryTrait for Factory { - fn initialize(env: Env, admin: Address) { + fn initialize(env: Env, admin: Address, multihop_wasm_hash: BytesN<32>) { if is_initialized(&env) { panic!("Factory: Initialize: initializing contract twice is not allowed"); } set_initialized(&env); - let multihop_address = deploy_multihop_contract(env.clone(), admin.clone()); + let multihop_address = + deploy_multihop_contract(env.clone(), admin.clone(), multihop_wasm_hash); - save_config(&env, Config{admin: admin.clone(), multihop_address}); + save_config( + &env, + Config { + admin: admin.clone(), + multihop_address, + }, + ); save_lp_vec(&env, Vec::new(&env)); diff --git a/contracts/factory/src/lib.rs b/contracts/factory/src/lib.rs index ada4c733c..a6e36b07f 100644 --- a/contracts/factory/src/lib.rs +++ b/contracts/factory/src/lib.rs @@ -3,11 +3,5 @@ mod contract; mod storage; mod utils; -pub mod multihop_contract { - soroban_sdk::contractimport!( - file = "../../target/wasm32-unknown-unknown/release/phoenix_multihop.wasm" - ); -} - #[cfg(test)] mod tests; diff --git a/contracts/factory/src/storage.rs b/contracts/factory/src/storage.rs index 14ef4b804..09b0f458c 100644 --- a/contracts/factory/src/storage.rs +++ b/contracts/factory/src/storage.rs @@ -64,7 +64,10 @@ pub fn save_config(env: &Env, config: Config) { } pub fn get_config(env: &Env) -> Config { - env.storage().persistent().get(&DataKey::Config).expect("Config not set") + env.storage() + .persistent() + .get(&DataKey::Config) + .expect("Config not set") } pub fn get_lp_vec(env: &Env) -> Vec
{ @@ -112,7 +115,7 @@ mod tests { fn test_get_admin_should_panic_when_no_admin_saved() { let env = Env::default(); - get_admin(&env); + get_config(&env); } #[test] diff --git a/contracts/factory/src/tests.rs b/contracts/factory/src/tests.rs index e68093c3e..c6436dc14 100644 --- a/contracts/factory/src/tests.rs +++ b/contracts/factory/src/tests.rs @@ -1,5 +1,5 @@ use crate::contract::{Factory, FactoryClient}; -use soroban_sdk::{testutils::Address as _, Address, Env}; +use soroban_sdk::{testutils::Address as _, Address, BytesN, Env}; mod config; mod setup; @@ -15,6 +15,8 @@ fn test_deploy_factory_twice_should_fail() { let admin = Address::random(&env); let multihop = FactoryClient::new(&env, &env.register_contract(None, Factory {})); - multihop.initialize(&admin); - multihop.initialize(&admin); + let multihop_wasm_hash = BytesN::from_array(&env, &[1u8; 0x20]); + + multihop.initialize(&admin, &multihop_wasm_hash); + multihop.initialize(&admin, &multihop_wasm_hash); } diff --git a/contracts/factory/src/tests/setup.rs b/contracts/factory/src/tests/setup.rs index ce5bbd572..93c8aafdf 100644 --- a/contracts/factory/src/tests/setup.rs +++ b/contracts/factory/src/tests/setup.rs @@ -1,7 +1,6 @@ use crate::contract::{Factory, FactoryClient}; use soroban_sdk::testutils::Address as _; use soroban_sdk::{Address, BytesN, Env}; - #[allow(clippy::too_many_arguments)] pub mod lp_contract { soroban_sdk::contractimport!( @@ -9,6 +8,13 @@ pub mod lp_contract { ); } +pub fn install_multihop_wasm(env: &Env) -> BytesN<32> { + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/phoenix_multihop.wasm" + ); + env.deployer().upload_contract_wasm(WASM) +} + pub fn install_lp_contract(env: &Env) -> BytesN<32> { env.deployer().upload_contract_wasm(lp_contract::WASM) } @@ -33,7 +39,9 @@ pub fn deploy_factory_contract<'a>( ) -> FactoryClient<'a> { let admin = admin.into().unwrap_or(Address::random(env)); let factory = FactoryClient::new(env, &env.register_contract(None, Factory {})); + // let multihop_wasm_hash = BytesN::from_array(&env, &[1u8; 0x20]); + let multihop_wasm_hash = install_multihop_wasm(env); - factory.initialize(&admin); + factory.initialize(&admin, &multihop_wasm_hash); factory } diff --git a/contracts/factory/src/utils.rs b/contracts/factory/src/utils.rs index 7650550e0..8efb363af 100644 --- a/contracts/factory/src/utils.rs +++ b/contracts/factory/src/utils.rs @@ -22,12 +22,15 @@ pub fn deploy_lp_contract( .deploy(lp_wasm_hash) } -pub fn deploy_multihop_contract(env: Env, admin: Address) -> Address { +pub fn deploy_multihop_contract( + env: Env, + admin: Address, + multihop_wasm_hash: BytesN<32>, +) -> Address { let mut salt = Bytes::new(&env); - salt.append(&admin.to_xdr(&env)); + salt.append(&admin.clone().to_xdr(&env)); let salt = env.crypto().sha256(&salt); - let multihop_wasm_hash = env.deployer().upload_contract_wasm(multihop_contract::WASM); let multihop_address = env .deployer() .with_current_contract(salt) @@ -35,7 +38,7 @@ pub fn deploy_multihop_contract(env: Env, admin: Address) -> Address { let init_fn = Symbol::new(&env, "initialize"); let init_args: Vec = (admin, env.current_contract_address()).into_val(&env); - env.invoke_contract(&multihop_address, &init_fn, init_args); + env.invoke_contract::(&multihop_address, &init_fn, init_args); multihop_address } diff --git a/contracts/multihop/src/tests/setup.rs b/contracts/multihop/src/tests/setup.rs index e46550aae..44adda45e 100644 --- a/contracts/multihop/src/tests/setup.rs +++ b/contracts/multihop/src/tests/setup.rs @@ -88,8 +88,9 @@ pub fn deploy_and_mint_tokens<'a>( pub fn deploy_and_initialize_factory(env: &Env, admin: Address) -> factory::Client { let factory_addr = deploy_factory_contract(env, admin.clone()); let factory_client = factory::Client::new(env, &factory_addr); + let multihop_wasm_hash = install_stake_wasm(env); - factory_client.initialize(&admin.clone()); + factory_client.initialize(&admin.clone(), &multihop_wasm_hash); factory_client } From 11962982745e4f26d7798c40227b97008d155fc2 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Thu, 19 Oct 2023 21:48:39 +0300 Subject: [PATCH 3/8] Factory, Multihop: fixes the failingn tests --- contracts/factory/src/tests.rs | 6 ++++-- contracts/multihop/src/tests/setup.rs | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/contracts/factory/src/tests.rs b/contracts/factory/src/tests.rs index c6436dc14..adddf50eb 100644 --- a/contracts/factory/src/tests.rs +++ b/contracts/factory/src/tests.rs @@ -1,5 +1,7 @@ use crate::contract::{Factory, FactoryClient}; -use soroban_sdk::{testutils::Address as _, Address, BytesN, Env}; +use soroban_sdk::{testutils::Address as _, Address, Env}; + +use self::setup::install_multihop_wasm; mod config; mod setup; @@ -15,7 +17,7 @@ fn test_deploy_factory_twice_should_fail() { let admin = Address::random(&env); let multihop = FactoryClient::new(&env, &env.register_contract(None, Factory {})); - let multihop_wasm_hash = BytesN::from_array(&env, &[1u8; 0x20]); + let multihop_wasm_hash = install_multihop_wasm(&env); multihop.initialize(&admin, &multihop_wasm_hash); multihop.initialize(&admin, &multihop_wasm_hash); diff --git a/contracts/multihop/src/tests/setup.rs b/contracts/multihop/src/tests/setup.rs index 44adda45e..23bea6d5f 100644 --- a/contracts/multihop/src/tests/setup.rs +++ b/contracts/multihop/src/tests/setup.rs @@ -46,6 +46,13 @@ pub fn install_stake_wasm(env: &Env) -> BytesN<32> { env.deployer().upload_contract_wasm(WASM) } +pub fn install_multihop_wasm(env: &Env) -> BytesN<32> { + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/phoenix_multihop.wasm" + ); + env.deployer().upload_contract_wasm(WASM) +} + // pub fn deploy_liquidity_pool(e: &Env, admin: Address) -> Address { // let factory_wasm = e.deployer().upload_contract_wasm(factory::WASM); // let salt = Bytes::new(e); @@ -88,7 +95,7 @@ pub fn deploy_and_mint_tokens<'a>( pub fn deploy_and_initialize_factory(env: &Env, admin: Address) -> factory::Client { let factory_addr = deploy_factory_contract(env, admin.clone()); let factory_client = factory::Client::new(env, &factory_addr); - let multihop_wasm_hash = install_stake_wasm(env); + let multihop_wasm_hash = install_multihop_wasm(env); factory_client.initialize(&admin.clone(), &multihop_wasm_hash); factory_client From 6db63d336c317a289df1cdde7e7a3a40952e9f11 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Thu, 19 Oct 2023 22:11:31 +0300 Subject: [PATCH 4/8] Multihop: removes unnecessary comment --- contracts/multihop/src/tests/setup.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/contracts/multihop/src/tests/setup.rs b/contracts/multihop/src/tests/setup.rs index 23bea6d5f..6c86b1f09 100644 --- a/contracts/multihop/src/tests/setup.rs +++ b/contracts/multihop/src/tests/setup.rs @@ -53,14 +53,6 @@ pub fn install_multihop_wasm(env: &Env) -> BytesN<32> { env.deployer().upload_contract_wasm(WASM) } -// pub fn deploy_liquidity_pool(e: &Env, admin: Address) -> Address { -// let factory_wasm = e.deployer().upload_contract_wasm(factory::WASM); -// let salt = Bytes::new(e); -// let salt = e.crypto().sha256(&salt); -// -// e.deployer().with_address(admin, salt).deploy(factory_wasm) -// } - pub fn deploy_factory_contract(e: &Env, admin: Address) -> Address { let factory_wasm = e.deployer().upload_contract_wasm(factory::WASM); let salt = Bytes::new(e); From 67e2a7981096d5f8730cb5dc8a2a4d91fe37ad06 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Thu, 19 Oct 2023 23:26:59 +0300 Subject: [PATCH 5/8] Factory, Multihop: adds a new test for checking if the multihop contract is initialized from factory contract --- contracts/factory/src/contract.rs | 18 +++++++++++++----- contracts/factory/src/tests/config.rs | 18 ++++++++++++++++++ contracts/factory/src/tests/setup.rs | 1 - contracts/multihop/src/contract.rs | 15 +++++++++++++-- contracts/multihop/src/storage.rs | 8 -------- 5 files changed, 44 insertions(+), 16 deletions(-) diff --git a/contracts/factory/src/contract.rs b/contracts/factory/src/contract.rs index 8152a89b2..f12168ea5 100644 --- a/contracts/factory/src/contract.rs +++ b/contracts/factory/src/contract.rs @@ -1,9 +1,5 @@ -use soroban_sdk::{ - contract, contractimpl, contractmeta, log, Address, BytesN, Env, IntoVal, Symbol, Val, Vec, -}; - use crate::storage::{ - get_config, is_initialized, save_config, set_initialized, Config, LiquidityPoolInfo, + get_config, is_initialized, save_config, set_initialized, Config, DataKey, LiquidityPoolInfo, PairTupleKey, }; use crate::utils::deploy_multihop_contract; @@ -12,6 +8,9 @@ use crate::{ utils::deploy_lp_contract, }; use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; +use soroban_sdk::{ + contract, contractimpl, contractmeta, log, Address, BytesN, Env, IntoVal, Symbol, Val, Vec, +}; // Metadata that is added on to the WASM custom section contractmeta!(key = "Description", val = "Phoenix Protocol Factory"); @@ -33,6 +32,8 @@ pub trait FactoryTrait { fn query_for_pool_by_token_pair(env: Env, token_a: Address, token_b: Address) -> Address; fn get_admin(env: Env) -> Address; + + fn get_config(env: Env) -> Config; } #[contractimpl] @@ -159,6 +160,13 @@ impl FactoryTrait for Factory { fn get_admin(env: Env) -> Address { get_config(&env).admin } + + fn get_config(env: Env) -> Config { + env.storage() + .persistent() + .get(&DataKey::Config) + .expect("Factory: No multihop present in storage") + } } fn validate_token_info( diff --git a/contracts/factory/src/tests/config.rs b/contracts/factory/src/tests/config.rs index 0335ff568..a2ceb5912 100644 --- a/contracts/factory/src/tests/config.rs +++ b/contracts/factory/src/tests/config.rs @@ -6,6 +6,7 @@ use phoenix::utils::{LiquidityPoolInitInfo, StakeInitInfo, TokenInitInfo}; use soroban_sdk::arbitrary::std; use soroban_sdk::{testutils::Address as _, Address, Env}; +use soroban_sdk::{Symbol, Vec}; #[test] fn factory_successfully_inits_itself() { @@ -17,6 +18,23 @@ fn factory_successfully_inits_itself() { assert_eq!(factory.get_admin(), admin); } +#[test] +fn factory_successfully_inits_multihop() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::random(&env); + + let factory = deploy_factory_contract(&env, Some(admin.clone())); + + let multihop_address = factory.get_config().multihop_address; + + let func = Symbol::new(&env, "get_admin"); + let admin_in_multihop = env.invoke_contract(&multihop_address, &func, Vec::new(&env)); + + assert_eq!(admin, admin_in_multihop); +} + #[test] fn factory_successfully_inits_lp() { let env = Env::default(); diff --git a/contracts/factory/src/tests/setup.rs b/contracts/factory/src/tests/setup.rs index 93c8aafdf..983883f4e 100644 --- a/contracts/factory/src/tests/setup.rs +++ b/contracts/factory/src/tests/setup.rs @@ -39,7 +39,6 @@ pub fn deploy_factory_contract<'a>( ) -> FactoryClient<'a> { let admin = admin.into().unwrap_or(Address::random(env)); let factory = FactoryClient::new(env, &env.register_contract(None, Factory {})); - // let multihop_wasm_hash = BytesN::from_array(&env, &[1u8; 0x20]); let multihop_wasm_hash = install_multihop_wasm(env); factory.initialize(&admin, &multihop_wasm_hash); diff --git a/contracts/multihop/src/contract.rs b/contracts/multihop/src/contract.rs index e65f9ed05..9bb395911 100644 --- a/contracts/multihop/src/contract.rs +++ b/contracts/multihop/src/contract.rs @@ -1,7 +1,7 @@ use soroban_sdk::{contract, contractimpl, contractmeta, Address, Env, Vec}; use crate::storage::{ - get_factory, is_initialized, save_admin, save_factory, set_initialized, + get_factory, is_initialized, save_factory, set_initialized, DataKey, SimulateReverseSwapResponse, SimulateSwapResponse, Swap, }; use crate::{factory_contract, lp_contract}; @@ -27,6 +27,8 @@ pub trait MultihopTrait { operations: Vec, amount: i128, ) -> SimulateReverseSwapResponse; + + fn get_admin(env: Env) -> Address; } #[contractimpl] @@ -38,7 +40,9 @@ impl MultihopTrait for Multihop { set_initialized(&env); - save_admin(&env, &admin); + env.storage() + .persistent() + .set(&DataKey::Admin, &admin.clone()); save_factory(&env, factory); @@ -139,4 +143,11 @@ impl MultihopTrait for Multihop { simulate_swap_response } + + fn get_admin(env: Env) -> Address { + env.storage() + .persistent() + .get(&DataKey::Admin) + .expect("Multihop: No admin found") + } } diff --git a/contracts/multihop/src/storage.rs b/contracts/multihop/src/storage.rs index ed16ec7da..257f51279 100644 --- a/contracts/multihop/src/storage.rs +++ b/contracts/multihop/src/storage.rs @@ -44,14 +44,6 @@ pub struct PoolResponse { pub asset_lp_share: Asset, } -pub fn save_admin(env: &Env, admin: &Address) { - env.storage().instance().set(&DataKey::Admin, &admin); -} - -pub fn _get_admin(env: &Env) -> Address { - env.storage().instance().get(&DataKey::Admin).unwrap() -} - pub fn save_factory(env: &Env, factory: Address) { env.storage().instance().set(&DataKey::FactoryKey, &factory); } From aeb0b06ed2d7132e475937751b4e203c79daf421 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Thu, 19 Oct 2023 23:43:14 +0300 Subject: [PATCH 6/8] Pool_stable: trying to fix the failing build --- contracts/pool_stable/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/pool_stable/Makefile b/contracts/pool_stable/Makefile index 8b4b8b984..17f5e555c 100644 --- a/contracts/pool_stable/Makefile +++ b/contracts/pool_stable/Makefile @@ -6,6 +6,7 @@ test: build # because of token dependency cargo test build: + $(MAKE) -C ../stake build || break; $(MAKE) -C ../token build || break; cargo build --target wasm32-unknown-unknown --release From 0a3376df0de26f83b76e2c4c4fb5ce6c064b9cc2 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Mon, 23 Oct 2023 18:10:52 +0300 Subject: [PATCH 7/8] Factory: adds multihop to Makefile --- CHANGELOG.md | 2 ++ contracts/factory/Makefile | 1 + 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 059e2360b..237d4c983 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to - Total surrender refactor: replace all errors with panics ([#140]) - Pool/Pool stable: Replace `sell_a` parameter in simulate swap messages with `offer_asset` address ([#154]) - Multihop: Implement simulate swap/reverse swap queries ([#147]) +- Factory: Initializes the Multihop contract upon initializing Factory ([#158]) ## Bug fixes @@ -21,6 +22,7 @@ and this project adheres to [#144]: https://github.com/Phoenix-Protocol-Group/phoenix-contracts/pull/144 [#147]: https://github.com/Phoenix-Protocol-Group/phoenix-contracts/pull/147 [#157]: https://github.com/Phoenix-Protocol-Group/phoenix-contracts/pull/157 +[#158]: https://github.com/Phoenix-Protocol-Group/phoenix-contracts/pull/158 ## [0.7.0] - 2023-10-10 diff --git a/contracts/factory/Makefile b/contracts/factory/Makefile index 28eda6858..6a782874c 100644 --- a/contracts/factory/Makefile +++ b/contracts/factory/Makefile @@ -6,6 +6,7 @@ test: build # because of token dependency cargo test build: + $(MAKE) -C ../multihop build || break; $(MAKE) -C ../stake build || break; $(MAKE) -C ../pair build || break; cargo build --target wasm32-unknown-unknown --release From 4c08a5a90ef65290872ef3a0436ca5ab1e985c27 Mon Sep 17 00:00:00 2001 From: Kaloyan Gangov Date: Tue, 24 Oct 2023 00:18:09 +0300 Subject: [PATCH 8/8] Factory: reverts Makefile --- contracts/factory/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/factory/Makefile b/contracts/factory/Makefile index 6a782874c..28eda6858 100644 --- a/contracts/factory/Makefile +++ b/contracts/factory/Makefile @@ -6,7 +6,6 @@ test: build # because of token dependency cargo test build: - $(MAKE) -C ../multihop build || break; $(MAKE) -C ../stake build || break; $(MAKE) -C ../pair build || break; cargo build --target wasm32-unknown-unknown --release