From 8f34329e18f820ea92929f23b9cffba5965fa94d Mon Sep 17 00:00:00 2001 From: ismellike Date: Sun, 22 Sep 2024 15:37:51 -0500 Subject: [PATCH] Revert proposal execute callback messages --- Cargo.lock | 54 ++++++++----------- contracts/dao-dao-core/Cargo.toml | 1 - contracts/dao-dao-core/src/contract.rs | 36 ++++--------- .../external/dao-abc-factory/src/contract.rs | 7 +-- .../external/dao-migrator/src/contract.rs | 4 +- .../dao-pre-propose-approver/src/contract.rs | 4 +- .../test/dao-callback-messages/Cargo.toml | 23 -------- .../test/dao-callback-messages/README.md | 3 -- .../dao-callback-messages/src/contract.rs | 43 --------------- .../test/dao-callback-messages/src/lib.rs | 2 - .../test/dao-callback-messages/src/msg.rs | 7 --- .../dao-test-custom-factory/src/contract.rs | 12 ++--- .../dao-voting-cw721-staked/src/contract.rs | 6 +-- .../dao-voting-token-staked/src/contract.rs | 6 +-- .../src/tests/test_tube/integration_tests.rs | 2 +- packages/dao-interface/src/nft.rs | 4 +- packages/dao-interface/src/state.rs | 4 +- packages/dao-interface/src/token.rs | 4 +- 18 files changed, 59 insertions(+), 163 deletions(-) delete mode 100644 contracts/test/dao-callback-messages/Cargo.toml delete mode 100644 contracts/test/dao-callback-messages/README.md delete mode 100644 contracts/test/dao-callback-messages/src/contract.rs delete mode 100644 contracts/test/dao-callback-messages/src/lib.rs delete mode 100644 contracts/test/dao-callback-messages/src/msg.rs diff --git a/Cargo.lock b/Cargo.lock index ed0019e90..c0f1396c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -512,7 +512,7 @@ checksum = "aa13fae8b6255872fd86f7faf4b41168661d7d78609f7bfe6771b85c6739a15b" dependencies = [ "bs58 0.5.1", "hmac", - "k256 0.13.3", + "k256 0.13.4", "rand_core 0.6.4", "ripemd", "sha2 0.10.8", @@ -913,7 +913,7 @@ dependencies = [ "cosmos-sdk-proto 0.20.0", "ecdsa 0.16.9", "eyre", - "k256 0.13.3", + "k256 0.13.4", "rand_core 0.6.4", "serde", "serde_json", @@ -932,7 +932,7 @@ checksum = "0f862b355f7e47711e0acfe6af92cb3fd8fd5936b66a9eaa338b51edabd1e77d" dependencies = [ "digest 0.10.7", "ed25519-zebra", - "k256 0.13.3", + "k256 0.13.4", "rand_core 0.6.4", "thiserror", ] @@ -2311,15 +2311,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "dao-callback-messages" -version = "2.5.0" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "dao-interface 2.5.0", -] - [[package]] name = "dao-cw-orch" version = "2.5.0" @@ -2413,7 +2404,6 @@ dependencies = [ "cw20-base 1.1.2", "cw721 0.18.0", "cw721-base 0.18.0", - "dao-callback-messages", "dao-cw-orch", "dao-dao-macros 2.5.0", "dao-interface 2.5.0", @@ -4150,9 +4140,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa 0.16.9", @@ -4601,9 +4591,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.12" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" dependencies = [ "memchr", "thiserror", @@ -4612,9 +4602,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.12" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664d22978e2815783adbdd2c588b455b1bd625299ce36b2a99881ac9627e6d8d" +checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" dependencies = [ "pest", "pest_generator", @@ -4622,9 +4612,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.12" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2d5487022d5d33f4c30d91c22afa240ce2a644e87fe08caad974d4eab6badbe" +checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" dependencies = [ "pest", "pest_meta", @@ -4635,9 +4625,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.7.12" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0091754bbd0ea592c4deb3a122ce8ecbb0753b738aa82bc055fcc2eccc8d8174" +checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" dependencies = [ "once_cell", "pest", @@ -5352,9 +5342,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -5545,9 +5535,9 @@ dependencies = [ [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "slab" @@ -5804,7 +5794,7 @@ dependencies = [ "ed25519-consensus", "flex-error", "futures", - "k256 0.13.3", + "k256 0.13.4", "num-traits", "once_cell", "prost 0.12.6", @@ -6038,18 +6028,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", diff --git a/contracts/dao-dao-core/Cargo.toml b/contracts/dao-dao-core/Cargo.toml index c3401326d..7e51b54e2 100644 --- a/contracts/dao-dao-core/Cargo.toml +++ b/contracts/dao-dao-core/Cargo.toml @@ -41,4 +41,3 @@ cw721-base = { workspace = true } dao-cw-orch = { path = "../../packages/cw-orch" } dao-proposal-sudo = { workspace = true } dao-voting-cw20-balance = { workspace = true } -dao-callback-messages = { workspace = true } diff --git a/contracts/dao-dao-core/src/contract.rs b/contracts/dao-dao-core/src/contract.rs index d4b914f86..1ee52a165 100644 --- a/contracts/dao-dao-core/src/contract.rs +++ b/contracts/dao-dao-core/src/contract.rs @@ -7,7 +7,7 @@ use cosmwasm_std::{ use cw2::{get_contract_version, set_contract_version, ContractVersion}; use cw_paginate_storage::{paginate_map, paginate_map_keys, paginate_map_values}; use cw_storage_plus::Map; -use cw_utils::{parse_reply_execute_data, parse_reply_instantiate_data, Duration}; +use cw_utils::{parse_reply_instantiate_data, Duration}; use dao_interface::{ msg::{ExecuteMsg, InitialItem, InstantiateMsg, MigrateMsg, QueryMsg}, query::{ @@ -15,7 +15,7 @@ use dao_interface::{ GetItemResponse, PauseInfoResponse, ProposalModuleCountResponse, SubDao, }, state::{ - Admin, CallbackMessages, Config, ModuleInstantiateInfo, ProposalModule, + Admin, Config, ModuleInstantiateCallback, ModuleInstantiateInfo, ProposalModule, ProposalModuleStatus, }, voting, @@ -30,10 +30,9 @@ use crate::state::{ pub(crate) const CONTRACT_NAME: &str = "crates.io:dao-dao-core"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); -const PROPOSAL_MODULE_INSTANTIATE_REPLY_ID: u64 = 0; +const PROPOSAL_MODULE_REPLY_ID: u64 = 0; const VOTE_MODULE_INSTANTIATE_REPLY_ID: u64 = 1; const VOTE_MODULE_UPDATE_REPLY_ID: u64 = 2; -const PROPOSAL_MODULE_EXECUTE_REPLY_ID: u64 = 3; #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( @@ -72,7 +71,7 @@ pub fn instantiate( .proposal_modules_instantiate_info .into_iter() .map(|info| info.into_wasm_msg(env.contract.address.clone())) - .map(|wasm| SubMsg::reply_on_success(wasm, PROPOSAL_MODULE_INSTANTIATE_REPLY_ID)) + .map(|wasm| SubMsg::reply_on_success(wasm, PROPOSAL_MODULE_REPLY_ID)) .collect(); if proposal_module_msgs.is_empty() { return Err(ContractError::NoActiveProposalModules {}); @@ -229,10 +228,7 @@ pub fn execute_proposal_hook( Ok(Response::default() .add_attribute("action", "execute_proposal_hook") - .add_submessages( - msgs.into_iter() - .map(|msg| SubMsg::reply_on_success(msg, PROPOSAL_MODULE_EXECUTE_REPLY_ID)), - )) + .add_messages(msgs)) } pub fn execute_nominate_admin( @@ -396,7 +392,7 @@ pub fn execute_update_proposal_modules( let to_add: Vec> = to_add .into_iter() .map(|info| info.into_wasm_msg(env.contract.address.clone())) - .map(|wasm| SubMsg::reply_on_success(wasm, PROPOSAL_MODULE_INSTANTIATE_REPLY_ID)) + .map(|wasm| SubMsg::reply_on_success(wasm, PROPOSAL_MODULE_REPLY_ID)) .collect(); Ok(Response::default() @@ -956,7 +952,7 @@ pub fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Result Result { match msg.id { - PROPOSAL_MODULE_INSTANTIATE_REPLY_ID => { + PROPOSAL_MODULE_REPLY_ID => { let res = parse_reply_instantiate_data(msg)?; let prop_module_addr = deps.api.addr_validate(&res.contract_address)?; let total_module_count = TOTAL_PROPOSAL_MODULE_COUNT.load(deps.storage)?; @@ -977,7 +973,7 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result from_json::(&data) + Some(data) => from_json::(&data) .map(|m| m.msgs) .unwrap_or_else(|_| vec![]), None => vec![], @@ -987,6 +983,7 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result { let res = parse_reply_instantiate_data(msg)?; let vote_module_addr = deps.api.addr_validate(&res.contract_address)?; @@ -1002,7 +999,7 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result from_json::(&data) + Some(data) => from_json::(&data) .map(|m| m.msgs) .unwrap_or_else(|_| vec![]), None => vec![], @@ -1020,19 +1017,6 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result match parse_reply_execute_data(msg) { - Ok(res) => { - let callback_msgs = match res.data { - Some(data) => from_json::(&data) - .map(|m| m.msgs) - .unwrap_or_else(|_| vec![]), - None => vec![], - }; - - Ok(Response::default().add_messages(callback_msgs)) - } - Err(_) => Ok(Response::default()), - }, _ => Err(ContractError::UnknownReplyID {}), } } diff --git a/contracts/external/dao-abc-factory/src/contract.rs b/contracts/external/dao-abc-factory/src/contract.rs index e78bc0ecf..b2836742f 100644 --- a/contracts/external/dao-abc-factory/src/contract.rs +++ b/contracts/external/dao-abc-factory/src/contract.rs @@ -12,7 +12,8 @@ use cw_abc::msg::{ use cw_storage_plus::{Bound, Item, Map}; use cw_utils::parse_reply_instantiate_data; use dao_interface::{ - state::CallbackMessages, token::TokenFactoryCallback, voting::Query as VotingModuleQueryMsg, + state::ModuleInstantiateCallback, token::TokenFactoryCallback, + voting::Query as VotingModuleQueryMsg, }; use crate::{ @@ -158,10 +159,10 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result"] -description = "A contract for sending callback messages in the data field." -edition = { workspace = true } -license = { workspace = true } -repository = { workspace = true } -version = { workspace = true } - -[lib] -crate-type = ["cdylib", "rlib"] -doctest = false - -[features] -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all instantiate/execute/query exports -library = [] - -[dependencies] -cosmwasm-std = { workspace = true } -cosmwasm-schema = { workspace = true } -dao-interface = { workspace = true } diff --git a/contracts/test/dao-callback-messages/README.md b/contracts/test/dao-callback-messages/README.md deleted file mode 100644 index f219c6c21..000000000 --- a/contracts/test/dao-callback-messages/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# dao-proposal-sudo - -A contract for sending callback messages through the data field of the response. diff --git a/contracts/test/dao-callback-messages/src/contract.rs b/contracts/test/dao-callback-messages/src/contract.rs deleted file mode 100644 index 85f1cac2d..000000000 --- a/contracts/test/dao-callback-messages/src/contract.rs +++ /dev/null @@ -1,43 +0,0 @@ -#[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{ - to_json_binary, Binary, CosmosMsg, Deps, DepsMut, Empty, Env, MessageInfo, Response, StdResult, -}; -use dao_interface::state::CallbackMessages; - -use crate::msg::ExecuteMsg; - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - _deps: DepsMut, - _env: Env, - _info: MessageInfo, - _msg: Empty, -) -> StdResult { - Ok(Response::new().add_attribute("method", "instantiate")) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - _deps: DepsMut, - _env: Env, - _info: MessageInfo, - msg: ExecuteMsg, -) -> StdResult { - match msg { - ExecuteMsg::Execute { msgs } => execute_execute(msgs), - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(_deps: Deps, _env: Env, _msg: Empty) -> StdResult { - Ok(Binary::default()) -} - -pub fn execute_execute(msgs: Vec) -> StdResult { - let data = to_json_binary(&CallbackMessages { msgs })?; - - Ok(Response::default() - .add_attribute("action", "execute") - .set_data(data)) -} diff --git a/contracts/test/dao-callback-messages/src/lib.rs b/contracts/test/dao-callback-messages/src/lib.rs deleted file mode 100644 index 112ecadc8..000000000 --- a/contracts/test/dao-callback-messages/src/lib.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod contract; -pub mod msg; diff --git a/contracts/test/dao-callback-messages/src/msg.rs b/contracts/test/dao-callback-messages/src/msg.rs deleted file mode 100644 index e8a56d42a..000000000 --- a/contracts/test/dao-callback-messages/src/msg.rs +++ /dev/null @@ -1,7 +0,0 @@ -use cosmwasm_schema::cw_serde; -use cosmwasm_std::CosmosMsg; - -#[cw_serde] -pub enum ExecuteMsg { - Execute { msgs: Vec }, -} diff --git a/contracts/test/dao-test-custom-factory/src/contract.rs b/contracts/test/dao-test-custom-factory/src/contract.rs index 95a727155..67ad19686 100644 --- a/contracts/test/dao-test-custom-factory/src/contract.rs +++ b/contracts/test/dao-test-custom-factory/src/contract.rs @@ -15,7 +15,7 @@ use cw_tokenfactory_issuer::msg::{ use cw_utils::{one_coin, parse_reply_instantiate_data}; use dao_interface::{ nft::NftFactoryCallback, - state::CallbackMessages, + state::ModuleInstantiateCallback, token::{InitialBalance, NewTokenInfo, TokenFactoryCallback}, voting::{ActiveThresholdQuery, Query as VotingModuleQueryMsg}, }; @@ -274,7 +274,7 @@ pub fn execute_token_factory_factory_wrong_callback( ) } -/// Example method called in the CallbackMessages providing +/// Example method called in the ModuleInstantiateCallback providing /// an example for checking the DAO has been setup correctly. pub fn execute_validate_nft_dao( deps: DepsMut, @@ -432,10 +432,10 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result = initial_nfts .iter() .flat_map(|nft| -> Result { @@ -494,7 +494,7 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result Result Result, + pub module_instantiate_callback: Option, } diff --git a/packages/dao-interface/src/state.rs b/packages/dao-interface/src/state.rs index b19c274ea..2022640eb 100644 --- a/packages/dao-interface/src/state.rs +++ b/packages/dao-interface/src/state.rs @@ -81,9 +81,9 @@ impl ModuleInstantiateInfo { } } -/// Callbacks to be executed from response data +/// Callbacks to be executed when a module is instantiated #[cw_serde] -pub struct CallbackMessages { +pub struct ModuleInstantiateCallback { pub msgs: Vec, } diff --git a/packages/dao-interface/src/token.rs b/packages/dao-interface/src/token.rs index 79570ec93..c735a15c4 100644 --- a/packages/dao-interface/src/token.rs +++ b/packages/dao-interface/src/token.rs @@ -5,7 +5,7 @@ use cosmwasm_std::Uint128; // We re-export them here for convenience. pub use osmosis_std::types::cosmos::bank::v1beta1::{DenomUnit, Metadata}; -use crate::state::CallbackMessages; +use crate::state::ModuleInstantiateCallback; #[cw_serde] pub struct InitialBalance { @@ -48,5 +48,5 @@ pub struct NewTokenInfo { pub struct TokenFactoryCallback { pub denom: String, pub token_contract: Option, - pub module_instantiate_callback: Option, + pub module_instantiate_callback: Option, }