From e8280d38924fe05aff06a7139568b6511bdbea02 Mon Sep 17 00:00:00 2001 From: Kayanski Date: Mon, 15 Jan 2024 16:00:13 +0100 Subject: [PATCH 1/5] Added instantiate2 --- cw-orch-daemon/src/core.rs | 58 ++++++++++++++++++- cw-orch-daemon/src/sync/core.rs | 15 +++++ cw-orch/src/osmosis_test_tube/core.rs | 12 ++++ .../src/contract/contract_instance.rs | 50 ++++++++++++++++ .../src/environment/cosmwasm_environment.rs | 13 ++++- packages/cw-orch-mock/src/core.rs | 56 +++++++++++++----- 6 files changed, 188 insertions(+), 16 deletions(-) diff --git a/cw-orch-daemon/src/core.rs b/cw-orch-daemon/src/core.rs index 9951e129e..409073d88 100644 --- a/cw-orch-daemon/src/core.rs +++ b/cw-orch-daemon/src/core.rs @@ -11,16 +11,18 @@ use super::{ use cosmrs::{ cosmwasm::{MsgExecuteContract, MsgInstantiateContract, MsgMigrateContract}, + proto::cosmwasm::wasm::v1::MsgInstantiateContract2, tendermint::Time, - AccountId, Denom, + AccountId, Any, Denom, }; -use cosmwasm_std::{Addr, Coin}; +use cosmwasm_std::{Addr, Binary, Coin}; use cw_orch_core::{ contract::interface_traits::Uploadable, environment::{ChainState, IndexResponse}, log::transaction_target, }; use flate2::{write, Compression}; +use prost::Message; use serde::{de::DeserializeOwned, Serialize}; use serde_json::from_str; use std::{ @@ -144,6 +146,44 @@ impl DaemonAsync { Ok(result) } + /// Instantiate a contract. + pub async fn instantiate2( + &self, + code_id: u64, + init_msg: &I, + label: Option<&str>, + admin: Option<&Addr>, + coins: &[Coin], + salt: Binary, + ) -> Result { + let sender = &self.sender; + + let init_msg = MsgInstantiateContract2 { + code_id, + label: label.unwrap_or("instantiate_contract").to_string(), + admin: admin.map(|a| a.to_string()).unwrap_or("".to_string()), + sender: sender.address()?.to_string(), + msg: serde_json::to_vec(&init_msg)?, + funds: proto_parse_cw_coins(coins)?, + salt: salt.to_vec(), + fix_msg: false, + }; + + let result = sender + .commit_tx_any( + vec![Any { + type_url: "/cosmwasm.wasm.v1.MsgInstantiateContract2".to_string(), + value: init_msg.encode_to_vec(), + }], + None, + ) + .await?; + + log::info!(target: &transaction_target(), "Instantiation done: {:?}", result.txhash); + + Ok(result) + } + /// Query a contract. pub async fn query( &self, @@ -281,3 +321,17 @@ pub(crate) fn parse_cw_coins( }) .collect::, DaemonError>>() } + +pub(crate) fn proto_parse_cw_coins( + coins: &[cosmwasm_std::Coin], +) -> Result, DaemonError> { + coins + .iter() + .map(|cosmwasm_std::Coin { amount, denom }| { + Ok(cosmrs::proto::cosmos::base::v1beta1::Coin { + amount: amount.to_string(), + denom: denom.clone(), + }) + }) + .collect::, DaemonError>>() +} diff --git a/cw-orch-daemon/src/sync/core.rs b/cw-orch-daemon/src/sync/core.rs index c5793be61..b4c7a60c9 100644 --- a/cw-orch-daemon/src/sync/core.rs +++ b/cw-orch-daemon/src/sync/core.rs @@ -135,6 +135,21 @@ impl TxHandler for Daemon { .migrate(migrate_msg, new_code_id, contract_address), ) } + + fn instantiate2( + &self, + code_id: u64, + init_msg: &I, + label: Option<&str>, + admin: Option<&Addr>, + coins: &[cosmwasm_std::Coin], + salt: cosmwasm_std::Binary, + ) -> Result { + self.rt_handle.block_on( + self.daemon + .instantiate2(code_id, init_msg, label, admin, coins, salt), + ) + } } impl Stargate for Daemon { diff --git a/cw-orch/src/osmosis_test_tube/core.rs b/cw-orch/src/osmosis_test_tube/core.rs index 2f820fb44..91aa08dfd 100644 --- a/cw-orch/src/osmosis_test_tube/core.rs +++ b/cw-orch/src/osmosis_test_tube/core.rs @@ -268,6 +268,18 @@ impl TxHandler for OsmosisTestTube { ) -> Result { panic!("Migrate not implemented on osmosis test_tube") } + + fn instantiate2( + &self, + _code_id: u64, + _init_msg: &I, + _label: Option<&str>, + _admin: Option<&Addr>, + _coins: &[cosmwasm_std::Coin], + _salt: Binary, + ) -> Result { + unimplemented!("Osmosis Test Tube doesn't support Instantiate 2 directly"); + } } impl BankSetter for OsmosisTestTube { diff --git a/packages/cw-orch-core/src/contract/contract_instance.rs b/packages/cw-orch-core/src/contract/contract_instance.rs index 44f54292f..bdef87240 100644 --- a/packages/cw-orch-core/src/contract/contract_instance.rs +++ b/packages/cw-orch-core/src/contract/contract_instance.rs @@ -171,6 +171,56 @@ impl Contract { Ok(resp) } + /// Initializes the contract + pub fn instantiate2( + &self, + msg: &I, + admin: Option<&Addr>, + coins: Option<&[Coin]>, + ) -> Result, CwEnvError> { + log::info!( + target: &contract_target(), + "[{}][Instantiate]", + self.id, + ); + + log::debug!( + target: &contract_target(), + "[{}][Instantiate] {}", + self.id, + log_serialize_message(msg)? + ); + + let resp = self + .chain + .instantiate( + self.code_id()?, + msg, + Some(&self.id), + admin, + coins.unwrap_or(&[]), + ) + .map_err(Into::into)?; + let contract_address = resp.instantiated_contract_address()?; + + self.set_address(&contract_address); + + log::info!( + target: &&contract_target(), + "[{}][Instantiated] {}", + self.id, + contract_address + ); + log::debug!( + target: &&transaction_target(), + "[{}][Instantiated] response: {:?}", + self.id, + resp + ); + + Ok(resp) + } + /// Query the contract pub fn query( &self, diff --git a/packages/cw-orch-core/src/environment/cosmwasm_environment.rs b/packages/cw-orch-core/src/environment/cosmwasm_environment.rs index f51819fe5..9d2d4fc95 100644 --- a/packages/cw-orch-core/src/environment/cosmwasm_environment.rs +++ b/packages/cw-orch-core/src/environment/cosmwasm_environment.rs @@ -2,7 +2,7 @@ use super::{queriers::QueryHandler, ChainState, IndexResponse}; use crate::{contract::interface_traits::Uploadable, error::CwEnvError}; -use cosmwasm_std::{Addr, Coin}; +use cosmwasm_std::{Addr, Coin, Binary}; use serde::Serialize; use std::fmt::Debug; @@ -46,6 +46,17 @@ pub trait TxHandler: ChainState + Clone { coins: &[cosmwasm_std::Coin], ) -> Result; + /// Send a Instantiate2Msg to a contract. + fn instantiate2( + &self, + code_id: u64, + init_msg: &I, + label: Option<&str>, + admin: Option<&Addr>, + coins: &[cosmwasm_std::Coin], + salt: Binary, + ) -> Result; + /// Send a ExecMsg to a contract. fn execute( &self, diff --git a/packages/cw-orch-mock/src/core.rs b/packages/cw-orch-mock/src/core.rs index ae5d0197f..80ceeb0ba 100644 --- a/packages/cw-orch-mock/src/core.rs +++ b/packages/cw-orch-mock/src/core.rs @@ -1,6 +1,6 @@ use std::{cell::RefCell, fmt::Debug, rc::Rc}; -use cosmwasm_std::{Addr, Coin, Empty, Event, Uint128}; +use cosmwasm_std::{to_json_binary, Addr, Binary, Coin, CosmosMsg, Empty, Event, Uint128, WasmMsg}; use cw_multi_test::{custom_app, AppResponse, BasicApp, Contract, Executor}; use cw_utils::NativeBalance; use serde::Serialize; @@ -238,20 +238,50 @@ impl TxHandler for Mock { admin: Option<&Addr>, coins: &[cosmwasm_std::Coin], ) -> Result { - let addr = self.app.borrow_mut().instantiate_contract( + let msg = WasmMsg::Instantiate { + admin: admin.map(|a| a.to_string()), code_id, - self.sender.clone(), - init_msg, - coins, - label.unwrap_or("contract_init"), - admin.map(|a| a.to_string()), - )?; - // add contract address to events manually - let mut event = Event::new("instantiate"); - event = event.add_attribute("_contract_address", addr); + label: label.unwrap_or("contract_init").to_string(), + msg: to_json_binary(init_msg)?, + funds: coins.to_vec(), + }; + let app = self + .app + .borrow_mut() + .execute(self.sender.clone(), CosmosMsg::Wasm(msg))?; + let resp = AppResponse { - events: vec![event], - ..Default::default() + events: app.events, + data: app.data, + }; + Ok(resp) + } + + fn instantiate2( + &self, + code_id: u64, + init_msg: &I, + label: Option<&str>, + admin: Option<&Addr>, + coins: &[cosmwasm_std::Coin], + salt: Binary, + ) -> Result { + let msg = WasmMsg::Instantiate2 { + admin: admin.map(|a| a.to_string()), + code_id, + label: label.unwrap_or("contract_init").to_string(), + msg: to_json_binary(init_msg)?, + funds: coins.to_vec(), + salt, + }; + let app = self + .app + .borrow_mut() + .execute(self.sender.clone(), CosmosMsg::Wasm(msg))?; + + let resp = AppResponse { + events: app.events, + data: app.data, }; Ok(resp) } From a067de7bc5fbe91301476804a9f32b5a492466aa Mon Sep 17 00:00:00 2001 From: Kayanski Date: Mon, 15 Jan 2024 20:30:35 +0100 Subject: [PATCH 2/5] some fixes --- cw-orch-daemon/src/core.rs | 5 ++-- cw-orch-daemon/src/queriers/cosmwasm.rs | 26 +++++++++++++++++-- cw-orch-daemon/src/sync/core.rs | 3 ++- cw-orch/src/osmosis_test_tube/core.rs | 1 + .../src/contract/contract_instance.rs | 8 ++++-- .../src/environment/cosmwasm_environment.rs | 3 ++- .../src/environment/queriers/wasm.rs | 9 ++++++- packages/cw-orch-mock/Cargo.toml | 1 + packages/cw-orch-mock/src/core.rs | 5 ++++ 9 files changed, 52 insertions(+), 9 deletions(-) diff --git a/cw-orch-daemon/src/core.rs b/cw-orch-daemon/src/core.rs index 409073d88..42276e114 100644 --- a/cw-orch-daemon/src/core.rs +++ b/cw-orch-daemon/src/core.rs @@ -155,18 +155,19 @@ impl DaemonAsync { admin: Option<&Addr>, coins: &[Coin], salt: Binary, + fix_msg: bool, ) -> Result { let sender = &self.sender; let init_msg = MsgInstantiateContract2 { code_id, label: label.unwrap_or("instantiate_contract").to_string(), - admin: admin.map(|a| a.to_string()).unwrap_or("".to_string()), + admin: admin.map(Into::into).unwrap_or_default(), sender: sender.address()?.to_string(), msg: serde_json::to_vec(&init_msg)?, funds: proto_parse_cw_coins(coins)?, salt: salt.to_vec(), - fix_msg: false, + fix_msg, }; let result = sender diff --git a/cw-orch-daemon/src/queriers/cosmwasm.rs b/cw-orch-daemon/src/queriers/cosmwasm.rs index e80135cd6..5ef681588 100644 --- a/cw-orch-daemon/src/queriers/cosmwasm.rs +++ b/cw-orch-daemon/src/queriers/cosmwasm.rs @@ -1,6 +1,11 @@ +use std::{io::Read, str::FromStr}; + use crate::{cosmos_modules, error::DaemonError, Daemon}; -use cosmrs::proto::cosmos::base::query::v1beta1::PageRequest; -use cosmwasm_std::{from_json, to_json_binary, CodeInfoResponse, ContractInfoResponse}; +use cosmrs::{proto::cosmos::base::query::v1beta1::PageRequest, AccountId}; +use cosmwasm_std::{ + from_json, instantiate2_address, to_json_binary, CanonicalAddr, CodeInfoResponse, + ContractInfoResponse, +}; use cw_orch_core::environment::queriers::wasm::{WasmQuerier, WasmQuerierGetter}; use tokio::runtime::Handle; use tonic::transport::Channel; @@ -265,4 +270,21 @@ impl WasmQuerier for DaemonWasmQuerier { Ok(c) } + + fn instantiate2_addr( + &self, + code_id: u64, + creator: impl Into, + salt: cosmwasm_std::Binary, + fix_msg: bool, + ) -> Result { + let creator_str = creator.into(); + let account_id = AccountId::from_str(&creator_str)?; + let prefix = account_id.prefix(); + let canon = account_id.to_bytes(); + let checksum = self.code_id_hash(code_id)?; + let addr = instantiate2_address(checksum.as_bytes(), &CanonicalAddr(canon.into()), &salt)?; + + Ok(AccountId::new(prefix, &addr.0.to_vec())?.to_string()) + } } diff --git a/cw-orch-daemon/src/sync/core.rs b/cw-orch-daemon/src/sync/core.rs index b4c7a60c9..e2684eba0 100644 --- a/cw-orch-daemon/src/sync/core.rs +++ b/cw-orch-daemon/src/sync/core.rs @@ -144,10 +144,11 @@ impl TxHandler for Daemon { admin: Option<&Addr>, coins: &[cosmwasm_std::Coin], salt: cosmwasm_std::Binary, + fix_msg: bool, ) -> Result { self.rt_handle.block_on( self.daemon - .instantiate2(code_id, init_msg, label, admin, coins, salt), + .instantiate2(code_id, init_msg, label, admin, coins, salt, fix_msg), ) } } diff --git a/cw-orch/src/osmosis_test_tube/core.rs b/cw-orch/src/osmosis_test_tube/core.rs index 91aa08dfd..9013e70e0 100644 --- a/cw-orch/src/osmosis_test_tube/core.rs +++ b/cw-orch/src/osmosis_test_tube/core.rs @@ -277,6 +277,7 @@ impl TxHandler for OsmosisTestTube { _admin: Option<&Addr>, _coins: &[cosmwasm_std::Coin], _salt: Binary, + _fix_msg: bool, ) -> Result { unimplemented!("Osmosis Test Tube doesn't support Instantiate 2 directly"); } diff --git a/packages/cw-orch-core/src/contract/contract_instance.rs b/packages/cw-orch-core/src/contract/contract_instance.rs index bdef87240..0808a01ee 100644 --- a/packages/cw-orch-core/src/contract/contract_instance.rs +++ b/packages/cw-orch-core/src/contract/contract_instance.rs @@ -8,7 +8,7 @@ use crate::{ }; use crate::environment::QueryHandler; -use cosmwasm_std::{Addr, Coin}; +use cosmwasm_std::{Addr, Binary, Coin}; use serde::{de::DeserializeOwned, Serialize}; use std::fmt::Debug; @@ -177,6 +177,8 @@ impl Contract { msg: &I, admin: Option<&Addr>, coins: Option<&[Coin]>, + salt: Binary, + fix_msg: bool, ) -> Result, CwEnvError> { log::info!( target: &contract_target(), @@ -193,12 +195,14 @@ impl Contract { let resp = self .chain - .instantiate( + .instantiate2( self.code_id()?, msg, Some(&self.id), admin, coins.unwrap_or(&[]), + salt, + fix_msg, ) .map_err(Into::into)?; let contract_address = resp.instantiated_contract_address()?; diff --git a/packages/cw-orch-core/src/environment/cosmwasm_environment.rs b/packages/cw-orch-core/src/environment/cosmwasm_environment.rs index 9d2d4fc95..c7685502f 100644 --- a/packages/cw-orch-core/src/environment/cosmwasm_environment.rs +++ b/packages/cw-orch-core/src/environment/cosmwasm_environment.rs @@ -2,7 +2,7 @@ use super::{queriers::QueryHandler, ChainState, IndexResponse}; use crate::{contract::interface_traits::Uploadable, error::CwEnvError}; -use cosmwasm_std::{Addr, Coin, Binary}; +use cosmwasm_std::{Addr, Binary, Coin}; use serde::Serialize; use std::fmt::Debug; @@ -55,6 +55,7 @@ pub trait TxHandler: ChainState + Clone { admin: Option<&Addr>, coins: &[cosmwasm_std::Coin], salt: Binary, + fix_msg: bool, ) -> Result; /// Send a ExecMsg to a contract. diff --git a/packages/cw-orch-core/src/environment/queriers/wasm.rs b/packages/cw-orch-core/src/environment/queriers/wasm.rs index bf54f61d8..4627e89fd 100644 --- a/packages/cw-orch-core/src/environment/queriers/wasm.rs +++ b/packages/cw-orch-core/src/environment/queriers/wasm.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{CodeInfoResponse, ContractInfoResponse}; +use cosmwasm_std::{Binary, CodeInfoResponse, ContractInfoResponse}; use serde::{de::DeserializeOwned, Serialize}; use crate::{ @@ -47,4 +47,11 @@ pub trait WasmQuerier { ) -> Result { contract.wasm().checksum() } + + fn instantiate2_addr( + &self, + code_id: u64, + creator: impl Into, + salt: cosmwasm_std::Binary, + ) -> Result; } diff --git a/packages/cw-orch-mock/Cargo.toml b/packages/cw-orch-mock/Cargo.toml index c7bddc232..36c74570a 100644 --- a/packages/cw-orch-mock/Cargo.toml +++ b/packages/cw-orch-mock/Cargo.toml @@ -16,6 +16,7 @@ cw-multi-test = { workspace = true } cw-utils = { workspace = true } serde = { workspace = true } sha256 = { workspace = true } +log.workspace = true [dev-dependencies] speculoos = { workspace = true } diff --git a/packages/cw-orch-mock/src/core.rs b/packages/cw-orch-mock/src/core.rs index 80ceeb0ba..a92602dea 100644 --- a/packages/cw-orch-mock/src/core.rs +++ b/packages/cw-orch-mock/src/core.rs @@ -265,6 +265,7 @@ impl TxHandler for Mock { admin: Option<&Addr>, coins: &[cosmwasm_std::Coin], salt: Binary, + fix_msg: bool, ) -> Result { let msg = WasmMsg::Instantiate2 { admin: admin.map(|a| a.to_string()), @@ -274,6 +275,10 @@ impl TxHandler for Mock { funds: coins.to_vec(), salt, }; + + if fix_msg { + log::warn!("Fix msg is not taken into account by cw-multi-test"); + } let app = self .app .borrow_mut() From b4a7b1349ffdfc014baed7f5ac0546cceb7be0bd Mon Sep 17 00:00:00 2001 From: Kayanski Date: Tue, 16 Jan 2024 10:13:05 +0100 Subject: [PATCH 3/5] Added instantiate2 addr getter --- cw-orch-daemon/src/error.rs | 4 ++- cw-orch-daemon/src/queriers/cosmwasm.rs | 5 ++-- .../src/osmosis_test_tube/queriers/wasm.rs | 26 +++++++++++++++++-- .../src/environment/queriers/wasm.rs | 2 +- packages/cw-orch-mock/src/queriers/wasm.rs | 15 +++++++++-- 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/cw-orch-daemon/src/error.rs b/cw-orch-daemon/src/error.rs index fc1e163cd..8319a3cfc 100644 --- a/cw-orch-daemon/src/error.rs +++ b/cw-orch-daemon/src/error.rs @@ -1,6 +1,6 @@ #![allow(missing_docs)] -use cosmwasm_std::Coin; +use cosmwasm_std::{Coin, Instantiate2AddressError}; use cw_orch_core::CwEnvError; use thiserror::Error; @@ -118,6 +118,8 @@ pub enum DaemonError { NotEnoughBalance { expected: Coin, current: Coin }, #[error("Can't set the daemon state, it's read-only")] StateReadOnly, + #[error(transparent)] + Instantiate2Error(#[from] Instantiate2AddressError), } impl DaemonError { diff --git a/cw-orch-daemon/src/queriers/cosmwasm.rs b/cw-orch-daemon/src/queriers/cosmwasm.rs index 5ef681588..f4009826a 100644 --- a/cw-orch-daemon/src/queriers/cosmwasm.rs +++ b/cw-orch-daemon/src/queriers/cosmwasm.rs @@ -1,4 +1,4 @@ -use std::{io::Read, str::FromStr}; +use std::str::FromStr; use crate::{cosmos_modules, error::DaemonError, Daemon}; use cosmrs::{proto::cosmos::base::query::v1beta1::PageRequest, AccountId}; @@ -276,7 +276,6 @@ impl WasmQuerier for DaemonWasmQuerier { code_id: u64, creator: impl Into, salt: cosmwasm_std::Binary, - fix_msg: bool, ) -> Result { let creator_str = creator.into(); let account_id = AccountId::from_str(&creator_str)?; @@ -285,6 +284,6 @@ impl WasmQuerier for DaemonWasmQuerier { let checksum = self.code_id_hash(code_id)?; let addr = instantiate2_address(checksum.as_bytes(), &CanonicalAddr(canon.into()), &salt)?; - Ok(AccountId::new(prefix, &addr.0.to_vec())?.to_string()) + Ok(AccountId::new(prefix, &addr.0)?.to_string()) } } diff --git a/cw-orch/src/osmosis_test_tube/queriers/wasm.rs b/cw-orch/src/osmosis_test_tube/queriers/wasm.rs index a90aee540..1477ecc53 100644 --- a/cw-orch/src/osmosis_test_tube/queriers/wasm.rs +++ b/cw-orch/src/osmosis_test_tube/queriers/wasm.rs @@ -1,6 +1,10 @@ -use std::{cell::RefCell, rc::Rc}; +use std::{cell::RefCell, rc::Rc, str::FromStr}; -use cosmwasm_std::{from_json, to_json_vec, CodeInfoResponse, ContractInfoResponse}; +use cosmrs::AccountId; +use cosmwasm_std::{ + from_json, instantiate2_address, to_json_vec, CanonicalAddr, CodeInfoResponse, + ContractInfoResponse, +}; use cw_orch_core::{ environment::{ queriers::wasm::{WasmQuerier, WasmQuerierGetter}, @@ -153,4 +157,22 @@ impl WasmQuerier for OsmosisTestTubeWasmQuerier { Ok(c) } + + fn instantiate2_addr( + &self, + code_id: u64, + creator: impl Into, + salt: cosmwasm_std::Binary, + ) -> Result { + let checksum = self.code_id_hash(code_id)?; + + let creator_str = creator.into(); + let account_id = AccountId::from_str(&creator_str).unwrap(); + let prefix = account_id.prefix(); + let canon = account_id.to_bytes(); + let addr = + instantiate2_address(checksum.as_bytes(), &CanonicalAddr(canon.into()), &salt).unwrap(); + + Ok(AccountId::new(prefix, &addr.0).unwrap().to_string()) + } } diff --git a/packages/cw-orch-core/src/environment/queriers/wasm.rs b/packages/cw-orch-core/src/environment/queriers/wasm.rs index 4627e89fd..81fabcef8 100644 --- a/packages/cw-orch-core/src/environment/queriers/wasm.rs +++ b/packages/cw-orch-core/src/environment/queriers/wasm.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{Binary, CodeInfoResponse, ContractInfoResponse}; +use cosmwasm_std::{CodeInfoResponse, ContractInfoResponse}; use serde::{de::DeserializeOwned, Serialize}; use crate::{ diff --git a/packages/cw-orch-mock/src/queriers/wasm.rs b/packages/cw-orch-mock/src/queriers/wasm.rs index 4458b850f..e87979e2b 100644 --- a/packages/cw-orch-mock/src/queriers/wasm.rs +++ b/packages/cw-orch-mock/src/queriers/wasm.rs @@ -1,7 +1,7 @@ use std::{cell::RefCell, rc::Rc}; -use cosmwasm_std::{to_json_binary, ContractInfoResponse, Empty}; -use cw_multi_test::BasicApp; +use cosmwasm_std::{to_json_binary, ContractInfoResponse, Empty, HexBinary}; +use cw_multi_test::{AddressGenerator, BasicApp}; use cw_orch_core::{ contract::interface_traits::{ContractInstance, Uploadable}, environment::{ @@ -106,4 +106,15 @@ impl WasmQuerier for MockWasmQuerier { cosmwasm_std::WasmQuery::CodeInfo { code_id }, ))?) } + + fn instantiate2_addr( + &self, + _code_id: u64, + _creator: impl Into, + salt: cosmwasm_std::Binary, + ) -> Result { + Ok(format!("contract{}", HexBinary::from(salt).to_hex())) + } } + +impl AddressGenerator for MockWasmQuerier {} From e731af1ad77990a78466c66834f1c8a0d42e53c9 Mon Sep 17 00:00:00 2001 From: Kayanski Date: Tue, 23 Jan 2024 10:21:22 +0100 Subject: [PATCH 4/5] Format --- cw-orch-daemon/src/log.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cw-orch-daemon/src/log.rs b/cw-orch-daemon/src/log.rs index 9bbf5f942..cceb990b5 100644 --- a/cw-orch-daemon/src/log.rs +++ b/cw-orch-daemon/src/log.rs @@ -8,7 +8,7 @@ static LOGS_DISABLED: Once = Once::new(); // Prints a warning if log is disabled for the application pub fn print_if_log_disabled() -> Result<(), DaemonError> { - LOGS_DISABLED.call_once(|| { + LOGS_DISABLED.call_once(|| { // Here we check for logging capabilities. if !log::log_enabled!(log::Level::Info) && !CwOrchEnvVars::load().map(|env|env.disable_logs_message).unwrap_or(false){ println!( From d8201cda250dcf91637fc699291af88d9b1d150a Mon Sep 17 00:00:00 2001 From: Kayanski Date: Thu, 1 Feb 2024 16:24:39 +0100 Subject: [PATCH 5/5] Nits --- cw-orch-daemon/tests/instantiate2.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cw-orch-daemon/tests/instantiate2.rs b/cw-orch-daemon/tests/instantiate2.rs index 5964ada67..9e7b6dd38 100644 --- a/cw-orch-daemon/tests/instantiate2.rs +++ b/cw-orch-daemon/tests/instantiate2.rs @@ -4,7 +4,6 @@ mod common; pub mod test { use cosmwasm_std::Binary; - use cosmwasm_std::HexBinary; use cw_orch_core::contract::interface_traits::ContractInstance; use cw_orch_core::contract::interface_traits::CwOrchInstantiate; use cw_orch_core::contract::interface_traits::CwOrchUpload; @@ -30,7 +29,7 @@ pub mod test { mock_contract.instantiate2(&InstantiateMsg {}, None, None, salt.clone())?; - let addr = mock_contract.address()?; + mock_contract.address()?; Ok(()) }