From d07d7c59433900558fca070321746e32a9fdd0b3 Mon Sep 17 00:00:00 2001 From: pr0n00gler Date: Wed, 11 Oct 2023 16:49:20 +0300 Subject: [PATCH 01/12] backport of https://github.com/neutron-org/neutron-dao/pull/78 --- Cargo.lock | 1 + .../src/contract.rs | 6 +- .../schema/cwd-proposal-multiple.json | 32 ++++++++++ .../schema/raw/query.json | 24 +++++++ .../response_to_proposal_execution_error.json | 8 +++ .../cwd-proposal-multiple/src/contract.rs | 24 ++++++- .../proposal/cwd-proposal-multiple/src/msg.rs | 5 ++ .../cwd-proposal-multiple/src/state.rs | 2 + .../src/testing/tests.rs | 64 ++++++++++++++++++- .../schema/cwd-proposal-single.json | 32 ++++++++++ .../cwd-proposal-single/schema/raw/query.json | 24 +++++++ .../response_to_proposal_execution_error.json | 8 +++ .../cwd-proposal-single/src/contract.rs | 21 +++++- .../proposal/cwd-proposal-single/src/msg.rs | 5 ++ .../proposal/cwd-proposal-single/src/state.rs | 2 + .../cwd-proposal-single/src/testing/tests.rs | 8 ++- .../schema/cwd-subdao-core.json | 28 ++++++++ .../cwd-subdao-core/schema/raw/query.json | 22 +++++++ ...e_to_timelock_proposal_module_address.json | 6 ++ .../subdaos/cwd-subdao-core/src/contract.rs | 33 ++++++++-- .../cwd-subdao-timelock-single/Cargo.toml | 1 + .../schema/cwd-subdao-timelock-single.json | 32 ++++++++++ .../schema/raw/query.json | 24 +++++++ .../response_to_proposal_execution_error.json | 8 +++ .../src/contract.rs | 57 ++++++++++++++--- .../cwd-subdao-timelock-single/src/state.rs | 2 + .../src/testing/mock_querier.rs | 63 +++++++++++++----- .../src/testing/tests.rs | 41 +++++++++++- packages/neutron-subdao-core/src/msg.rs | 3 + .../neutron-subdao-timelock-single/src/msg.rs | 5 ++ 30 files changed, 550 insertions(+), 41 deletions(-) create mode 100644 contracts/dao/proposal/cwd-proposal-multiple/schema/raw/response_to_proposal_execution_error.json create mode 100644 contracts/dao/proposal/cwd-proposal-single/schema/raw/response_to_proposal_execution_error.json create mode 100644 contracts/subdaos/cwd-subdao-core/schema/raw/response_to_timelock_proposal_module_address.json create mode 100644 contracts/subdaos/cwd-subdao-timelock-single/schema/raw/response_to_proposal_execution_error.json diff --git a/Cargo.lock b/Cargo.lock index 1037c87b..85ee23ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1334,6 +1334,7 @@ dependencies = [ "neutron-sdk", "neutron-subdao-core", "neutron-subdao-pre-propose-single", + "neutron-subdao-proposal-single", "neutron-subdao-timelock-single", "schemars", "serde", diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/src/contract.rs b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/src/contract.rs index aa3d8318..5923bf93 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/src/contract.rs +++ b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/src/contract.rs @@ -198,7 +198,11 @@ fn is_subdao_legit(deps: &DepsMut, subdao_core: &Addr) -> Result Ok(subdao.addr == *subdao_core), + Ok(subdao) => { + // sanity check to make sure that query returned correct subdao + let correct_subdao = subdao.addr == *subdao_core; + Ok(correct_subdao) + } Err(_) => Ok(false), } } diff --git a/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json b/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json index 4b6e1bbb..d30faf41 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json +++ b/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json @@ -2801,6 +2801,30 @@ }, "additionalProperties": false }, + { + "description": "Returns errors of the failed proposal. Expected in the form of \"codespace=? code=?\". Returns `Option`", + "type": "object", + "required": [ + "proposal_execution_error" + ], + "properties": { + "proposal_execution_error": { + "type": "object", + "required": [ + "proposal_id" + ], + "properties": { + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -7568,6 +7592,14 @@ } } }, + "proposal_execution_error": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Nullable_String", + "type": [ + "string", + "null" + ] + }, "proposal_hooks": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "HooksResponse", diff --git a/contracts/dao/proposal/cwd-proposal-multiple/schema/raw/query.json b/contracts/dao/proposal/cwd-proposal-multiple/schema/raw/query.json index 97177e3c..6cedd8c0 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/schema/raw/query.json +++ b/contracts/dao/proposal/cwd-proposal-multiple/schema/raw/query.json @@ -226,6 +226,30 @@ }, "additionalProperties": false }, + { + "description": "Returns errors of the failed proposal. Expected in the form of \"codespace=? code=?\". Returns `Option`", + "type": "object", + "required": [ + "proposal_execution_error" + ], + "properties": { + "proposal_execution_error": { + "type": "object", + "required": [ + "proposal_id" + ], + "properties": { + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ diff --git a/contracts/dao/proposal/cwd-proposal-multiple/schema/raw/response_to_proposal_execution_error.json b/contracts/dao/proposal/cwd-proposal-multiple/schema/raw/response_to_proposal_execution_error.json new file mode 100644 index 00000000..f4c601d9 --- /dev/null +++ b/contracts/dao/proposal/cwd-proposal-multiple/schema/raw/response_to_proposal_execution_error.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Nullable_String", + "type": [ + "string", + "null" + ] +} diff --git a/contracts/dao/proposal/cwd-proposal-multiple/src/contract.rs b/contracts/dao/proposal/cwd-proposal-multiple/src/contract.rs index 74d1f3f7..3a4907f9 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/src/contract.rs +++ b/contracts/dao/proposal/cwd-proposal-multiple/src/contract.rs @@ -1,8 +1,8 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - to_binary, Addr, Binary, Deps, DepsMut, Empty, Env, MessageInfo, Reply, Response, StdResult, - Storage, SubMsg, WasmMsg, + to_binary, Addr, Binary, Deps, DepsMut, Empty, Env, MessageInfo, Reply, Response, StdError, + StdResult, Storage, SubMsg, WasmMsg, }; use cw2::set_contract_version; @@ -26,6 +26,7 @@ use cwd_voting::{ voting::{get_total_power, get_voting_power, validate_voting_period}, }; +use crate::state::PROPOSAL_EXECUTION_ERRORS; use crate::{msg::MigrateMsg, state::CREATION_POLICY}; use crate::{ msg::{ExecuteMsg, InstantiateMsg, QueryMsg}, @@ -730,6 +731,9 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::ProposalHooks {} => to_binary(&PROPOSAL_HOOKS.query_hooks(deps)?), QueryMsg::VoteHooks {} => to_binary(&VOTE_HOOKS.query_hooks(deps)?), QueryMsg::Dao {} => query_dao(deps), + QueryMsg::ProposalExecutionError { proposal_id } => { + query_proposal_execution_error(deps, proposal_id) + } } } @@ -841,6 +845,11 @@ pub fn query_info(deps: Deps) -> StdResult { to_binary(&cwd_interface::voting::InfoResponse { info }) } +pub fn query_proposal_execution_error(deps: Deps, proposal_id: u64) -> StdResult { + let error = PROPOSAL_EXECUTION_ERRORS.may_load(deps.storage, proposal_id)?; + to_binary(&error) +} + #[cfg_attr(not(feature = "library"), entry_point)] pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result { let repl = TaggedReplyId::new(msg.id)?; @@ -853,7 +862,16 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result Err(ContractError::NoSuchProposal { id: proposal_id }), })?; - Ok(Response::new().add_attribute("proposal execution failed", proposal_id.to_string())) + // Error is reduced before cosmwasm reply and is expected in form of "codespace=? code=?" + let error = msg.result.into_result().err().ok_or_else(|| { + // should never happen since we reply only on failure + ContractError::Std(StdError::generic_err( + "must be an error in the failed result", + )) + })?; + PROPOSAL_EXECUTION_ERRORS.save(deps.storage, proposal_id, &error)?; + + Ok(Response::new().add_attribute("proposal_execution_failed", proposal_id.to_string())) } TaggedReplyId::FailedProposalHook(idx) => { let addr = PROPOSAL_HOOKS.remove_hook_by_index(deps.storage, idx)?; diff --git a/contracts/dao/proposal/cwd-proposal-multiple/src/msg.rs b/contracts/dao/proposal/cwd-proposal-multiple/src/msg.rs index e8496408..b0a1acf2 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/src/msg.rs +++ b/contracts/dao/proposal/cwd-proposal-multiple/src/msg.rs @@ -186,6 +186,11 @@ pub enum QueryMsg { /// module. #[returns(HooksResponse)] VoteHooks {}, + /// Returns errors of the failed proposal. + /// Expected in the form of "codespace=? code=?". + /// Returns `Option` + #[returns(Option)] + ProposalExecutionError { proposal_id: u64 }, } #[cw_serde] diff --git a/contracts/dao/proposal/cwd-proposal-multiple/src/state.rs b/contracts/dao/proposal/cwd-proposal-multiple/src/state.rs index e676a25e..96272b9d 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/src/state.rs +++ b/contracts/dao/proposal/cwd-proposal-multiple/src/state.rs @@ -67,3 +67,5 @@ pub const VOTE_HOOKS: Hooks = Hooks::new("vote_hooks"); /// The address of the pre-propose module associated with this /// proposal module (if any). pub const CREATION_POLICY: Item = Item::new("creation_policy"); +/// Execution errors for proposals that do not close on failure (Config.close_proposal_on_execution_failure set to false) +pub const PROPOSAL_EXECUTION_ERRORS: Map = Map::new("proposal_execution_errors"); diff --git a/contracts/dao/proposal/cwd-proposal-multiple/src/testing/tests.rs b/contracts/dao/proposal/cwd-proposal-multiple/src/testing/tests.rs index 7017d6c1..1907d445 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/src/testing/tests.rs +++ b/contracts/dao/proposal/cwd-proposal-multiple/src/testing/tests.rs @@ -1,6 +1,7 @@ +use cosmwasm_std::testing::{mock_dependencies, mock_env}; use cosmwasm_std::{ - coins, to_binary, Addr, Api, Coin, CosmosMsg, Decimal, Empty, Storage, Timestamp, Uint128, - WasmMsg, + coins, from_binary, to_binary, Addr, Api, Attribute, Coin, CosmosMsg, Decimal, Empty, Reply, + Storage, SubMsgResult, Timestamp, Uint128, WasmMsg, }; use cw20::Cw20Coin; use cw_denom::{CheckedDenom, UncheckedDenom}; @@ -44,8 +45,10 @@ use crate::{ }; use cwd_pre_propose_multiple as cppm; +use crate::contract::query_proposal_execution_error; use crate::testing::execute::mint_natives; use cwd_testing::ShouldExecute; +use cwd_voting::reply::mask_proposal_execution_proposal_id; pub const CREATOR_ADDR: &str = "creator"; @@ -2128,3 +2131,60 @@ fn test_close_failed_proposal() { // not reverted assert_eq!(updated.proposal.status, Status::Passed); } + +#[test] +fn test_reply_proposal_mock() { + use crate::contract::reply; + use crate::state::PROPOSALS; + + let mut deps = mock_dependencies(); + let env = mock_env(); + + let m_proposal_id = mask_proposal_execution_proposal_id(1); + PROPOSALS + .save( + deps.as_mut().storage, + 1, + &MultipleChoiceProposal { + title: "A simple text proposal".to_string(), + description: "This is a simple text proposal".to_string(), + proposer: Addr::unchecked(CREATOR_ADDR), + start_height: env.block.height, + expiration: Duration::Height(6).after(&env.block), + min_voting_period: None, + allow_revoting: false, + total_power: Uint128::new(100_000_000), + status: Status::Open, + votes: MultipleChoiceVotes { + vote_weights: vec![Uint128::zero(); 3], + }, + choices: vec![], + voting_strategy: VotingStrategy::SingleChoice { + quorum: PercentageThreshold::Majority {}, + }, + }, + ) + .unwrap(); + + // PROPOSALS + let reply_msg = Reply { + id: m_proposal_id, + result: SubMsgResult::Err("error".to_string()), + }; + let res = reply(deps.as_mut(), env, reply_msg).unwrap(); + assert_eq!( + res.attributes[0], + Attribute { + key: "proposal_execution_failed".to_string(), + value: 1.to_string() + } + ); + + let prop = PROPOSALS.load(deps.as_mut().storage, 1).unwrap(); + assert_eq!(prop.status, Status::ExecutionFailed); + + // reply writes the failed proposal error + let query_res = query_proposal_execution_error(deps.as_ref(), 1).unwrap(); + let error: Option = from_binary(&query_res).unwrap(); + assert_eq!(error, Some("error".to_string())); +} diff --git a/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json b/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json index de044d7f..60b0a36e 100644 --- a/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json +++ b/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json @@ -2863,6 +2863,30 @@ }, "additionalProperties": false }, + { + "description": "Returns errors of the failed proposal. Expected in the form of \"codespace=? code=?\". Returns `Option`", + "type": "object", + "required": [ + "proposal_execution_error" + ], + "properties": { + "proposal_execution_error": { + "type": "object", + "required": [ + "proposal_id" + ], + "properties": { + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -7502,6 +7526,14 @@ } } }, + "proposal_execution_error": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Nullable_String", + "type": [ + "string", + "null" + ] + }, "proposal_hooks": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "HooksResponse", diff --git a/contracts/dao/proposal/cwd-proposal-single/schema/raw/query.json b/contracts/dao/proposal/cwd-proposal-single/schema/raw/query.json index fc1c8ec9..86a5452b 100644 --- a/contracts/dao/proposal/cwd-proposal-single/schema/raw/query.json +++ b/contracts/dao/proposal/cwd-proposal-single/schema/raw/query.json @@ -233,6 +233,30 @@ }, "additionalProperties": false }, + { + "description": "Returns errors of the failed proposal. Expected in the form of \"codespace=? code=?\". Returns `Option`", + "type": "object", + "required": [ + "proposal_execution_error" + ], + "properties": { + "proposal_execution_error": { + "type": "object", + "required": [ + "proposal_id" + ], + "properties": { + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ diff --git a/contracts/dao/proposal/cwd-proposal-single/schema/raw/response_to_proposal_execution_error.json b/contracts/dao/proposal/cwd-proposal-single/schema/raw/response_to_proposal_execution_error.json new file mode 100644 index 00000000..f4c601d9 --- /dev/null +++ b/contracts/dao/proposal/cwd-proposal-single/schema/raw/response_to_proposal_execution_error.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Nullable_String", + "type": [ + "string", + "null" + ] +} diff --git a/contracts/dao/proposal/cwd-proposal-single/src/contract.rs b/contracts/dao/proposal/cwd-proposal-single/src/contract.rs index 96ac1f6e..0fdf9583 100644 --- a/contracts/dao/proposal/cwd-proposal-single/src/contract.rs +++ b/contracts/dao/proposal/cwd-proposal-single/src/contract.rs @@ -1,7 +1,7 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - to_binary, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Reply, Response, + to_binary, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Reply, Response, StdError, StdResult, Storage, SubMsg, WasmMsg, }; use cw2::set_contract_version; @@ -23,7 +23,7 @@ use neutron_sdk::bindings::msg::NeutronMsg; use crate::msg::MigrateMsg; use crate::proposal::SingleChoiceProposal; -use crate::state::{Config, CREATION_POLICY}; +use crate::state::{Config, CREATION_POLICY, PROPOSAL_EXECUTION_ERRORS}; use crate::{ error::ContractError, @@ -667,6 +667,9 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::ProposalCreationPolicy {} => query_creation_policy(deps), QueryMsg::ProposalHooks {} => to_binary(&PROPOSAL_HOOKS.query_hooks(deps)?), QueryMsg::VoteHooks {} => to_binary(&VOTE_HOOKS.query_hooks(deps)?), + QueryMsg::ProposalExecutionError { proposal_id } => { + query_proposal_execution_error(deps, proposal_id) + } } } @@ -778,6 +781,11 @@ pub fn query_info(deps: Deps) -> StdResult { to_binary(&cwd_interface::voting::InfoResponse { info }) } +pub fn query_proposal_execution_error(deps: Deps, proposal_id: u64) -> StdResult { + let error = PROPOSAL_EXECUTION_ERRORS.may_load(deps.storage, proposal_id)?; + to_binary(&error) +} + #[cfg_attr(not(feature = "library"), entry_point)] pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { Ok(Response::default()) @@ -797,6 +805,15 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result Err(ContractError::NoSuchProposal { id: proposal_id }), })?; + // Error is reduced before cosmwasm reply and is expected in form of "codespace=? code=?" + let error = msg.result.into_result().err().ok_or_else(|| { + // should never happen since we reply only on failure + ContractError::Std(StdError::generic_err( + "must be an error in the failed result", + )) + })?; + PROPOSAL_EXECUTION_ERRORS.save(deps.storage, proposal_id, &error)?; + Ok(Response::new().add_attribute("proposal_execution_failed", proposal_id.to_string())) } TaggedReplyId::FailedProposalHook(idx) => { diff --git a/contracts/dao/proposal/cwd-proposal-single/src/msg.rs b/contracts/dao/proposal/cwd-proposal-single/src/msg.rs index e13a49b9..2a05ef8f 100644 --- a/contracts/dao/proposal/cwd-proposal-single/src/msg.rs +++ b/contracts/dao/proposal/cwd-proposal-single/src/msg.rs @@ -202,6 +202,11 @@ pub enum QueryMsg { /// module. Returns cwd_hooks::HooksResponse. #[returns(cwd_hooks::HooksResponse)] VoteHooks {}, + /// Returns errors of the failed proposal. + /// Expected in the form of "codespace=? code=?". + /// Returns `Option` + #[returns(Option)] + ProposalExecutionError { proposal_id: u64 }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] diff --git a/contracts/dao/proposal/cwd-proposal-single/src/state.rs b/contracts/dao/proposal/cwd-proposal-single/src/state.rs index e7086863..429fd658 100644 --- a/contracts/dao/proposal/cwd-proposal-single/src/state.rs +++ b/contracts/dao/proposal/cwd-proposal-single/src/state.rs @@ -64,3 +64,5 @@ pub const VOTE_HOOKS: Hooks = Hooks::new("vote_hooks"); /// The address of the pre-propose module associated with this /// proposal module (if any). pub const CREATION_POLICY: Item = Item::new("creation_policy"); +/// Execution errors for proposals that do not close on failure (Config.close_proposal_on_execution_failure set to false) +pub const PROPOSAL_EXECUTION_ERRORS: Map = Map::new("proposal_execution_errors"); diff --git a/contracts/dao/proposal/cwd-proposal-single/src/testing/tests.rs b/contracts/dao/proposal/cwd-proposal-single/src/testing/tests.rs index 939908b3..fa5d80af 100644 --- a/contracts/dao/proposal/cwd-proposal-single/src/testing/tests.rs +++ b/contracts/dao/proposal/cwd-proposal-single/src/testing/tests.rs @@ -1,5 +1,6 @@ +use crate::contract::query_proposal_execution_error; use cosmwasm_std::{ - coins, + coins, from_binary, testing::{mock_dependencies, mock_env}, to_binary, Addr, Attribute, BankMsg, ContractInfoResponse, CosmosMsg, Decimal, Empty, Reply, StdError, StdResult, SubMsgResult, Uint128, WasmMsg, WasmQuery, @@ -978,6 +979,11 @@ fn test_reply_proposal_mock() { let prop = PROPOSALS.load(deps.as_mut().storage, 1).unwrap(); assert_eq!(prop.status, Status::ExecutionFailed); + + // reply writes the failed proposal error + let query_res = query_proposal_execution_error(deps.as_ref(), 1).unwrap(); + let error: Option = from_binary(&query_res).unwrap(); + assert_eq!(error, Some("error_msg".to_string())); } #[test] diff --git a/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json b/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json index f2ddec2f..5d4002f3 100644 --- a/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json +++ b/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json @@ -2477,6 +2477,28 @@ }, "additionalProperties": false }, + { + "description": "Returns proposal module address for timelock contract if it's correct", + "type": "object", + "required": [ + "timelock_proposal_module_address" + ], + "properties": { + "timelock_proposal_module_address": { + "type": "object", + "required": [ + "timelock" + ], + "properties": { + "timelock": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ @@ -3114,6 +3136,12 @@ } } }, + "timelock_proposal_module_address": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Addr", + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, "total_power_at_height": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "TotalPowerAtHeightResponse", diff --git a/contracts/subdaos/cwd-subdao-core/schema/raw/query.json b/contracts/subdaos/cwd-subdao-core/schema/raw/query.json index 54abace9..aba08d24 100644 --- a/contracts/subdaos/cwd-subdao-core/schema/raw/query.json +++ b/contracts/subdaos/cwd-subdao-core/schema/raw/query.json @@ -236,6 +236,28 @@ }, "additionalProperties": false }, + { + "description": "Returns proposal module address for timelock contract if it's correct", + "type": "object", + "required": [ + "timelock_proposal_module_address" + ], + "properties": { + "timelock_proposal_module_address": { + "type": "object", + "required": [ + "timelock" + ], + "properties": { + "timelock": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, { "type": "object", "required": [ diff --git a/contracts/subdaos/cwd-subdao-core/schema/raw/response_to_timelock_proposal_module_address.json b/contracts/subdaos/cwd-subdao-core/schema/raw/response_to_timelock_proposal_module_address.json new file mode 100644 index 00000000..4c7f1934 --- /dev/null +++ b/contracts/subdaos/cwd-subdao-core/schema/raw/response_to_timelock_proposal_module_address.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Addr", + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" +} diff --git a/contracts/subdaos/cwd-subdao-core/src/contract.rs b/contracts/subdaos/cwd-subdao-core/src/contract.rs index 0635f494..a5526bf4 100644 --- a/contracts/subdaos/cwd-subdao-core/src/contract.rs +++ b/contracts/subdaos/cwd-subdao-core/src/contract.rs @@ -401,6 +401,9 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { QueryMsg::DaoURI {} => query_dao_uri(deps), QueryMsg::MainDao {} => query_main_dao(deps), QueryMsg::VerifyTimelock { timelock } => query_verify_timelock(deps, timelock), + QueryMsg::TimelockProposalModuleAddress { timelock } => { + query_timelock_proposal_module_address(deps, timelock) + } } } @@ -600,6 +603,13 @@ pub fn query_verify_timelock(deps: Deps, timelock: String) -> StdResult to_binary(&(execution_access_check(deps, deps.api.addr_validate(&timelock)?).is_ok())) } +pub fn query_timelock_proposal_module_address(deps: Deps, timelock: String) -> StdResult { + let maybe_proposal = proposal_from_timelock(deps, deps.api.addr_validate(&timelock)?)?; + let proposal = + maybe_proposal.ok_or_else(|| StdError::generic_err("incorrect timelock addr provided"))?; + to_binary(&proposal.address) +} + #[cfg_attr(not(feature = "library"), entry_point)] pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { Ok(Response::default()) @@ -660,29 +670,42 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result Result<(), ContractError> { + let res = proposal_from_timelock(deps, sender)?; + match res { + Some(_) => Ok(()), + None => Err(ContractError::Unauthorized {}), + } +} + +/// Tries to find proposal module for a given timelock contract (`timelock_contract`). +/// Returns Ok(None) if not found +fn proposal_from_timelock( + deps: Deps, + timelock_contract: Addr, +) -> Result, StdError> { let proposal_modules = PROPOSAL_MODULES .range(deps.storage, None, None, cosmwasm_std::Order::Ascending) .map(|kv| Ok(kv?.1)) .collect::>>()?; - for proposal_module in proposal_modules.iter() { + for proposal_module in proposal_modules.into_iter() { let policy: ProposalCreationPolicy = deps.querier.query_wasm_smart( &proposal_module.address, &ProposeQueryMsg::ProposalCreationPolicy {}, )?; if let ProposalCreationPolicy::Module { addr } = policy { - if let Ok(timelock_contract) = deps.querier.query_wasm_smart::( + if let Ok(proposal_timelock_contract) = deps.querier.query_wasm_smart::( &addr, &PreProposeQueryMsg::QueryExtension { msg: PreProposeQueryExt::TimelockAddress {}, }, ) { - if sender == timelock_contract { - return Ok(()); + if timelock_contract == proposal_timelock_contract { + return Ok(Some(proposal_module)); } } }; } - Err(ContractError::Unauthorized {}) + Ok(None) } pub(crate) fn derive_proposal_module_prefix(mut dividend: usize) -> StdResult { diff --git a/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml b/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml index 71267b07..e22e3de2 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml +++ b/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml @@ -34,6 +34,7 @@ neutron-subdao-core = { path = "../../../packages/neutron-subdao-core" } neutron-dao-pre-propose-overrule = { path = "../../../packages/neutron-dao-pre-propose-overrule" } cwd-proposal-single = { path = "../../../contracts/dao/proposal/cwd-proposal-single", features = ["library"]} cwd-voting = { path = "../../../packages/cwd-voting" } +neutron-subdao-proposal-single = { path = "../../../packages/neutron-subdao-proposal-single" } [dev-dependencies] cosmwasm-schema = { version = "1.3.0" } diff --git a/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json b/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json index 215501fd..2f5198d2 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json +++ b/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json @@ -1918,6 +1918,30 @@ } }, "additionalProperties": false + }, + { + "description": "Returns errors of the failed proposal. Expected in the form of \"codespace=? code=?\". Returns `Option`", + "type": "object", + "required": [ + "proposal_execution_error" + ], + "properties": { + "proposal_execution_error": { + "type": "object", + "required": [ + "proposal_id" + ], + "properties": { + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false } ] }, @@ -5535,6 +5559,14 @@ ] } } + }, + "proposal_execution_error": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Nullable_String", + "type": [ + "string", + "null" + ] } } } diff --git a/contracts/subdaos/cwd-subdao-timelock-single/schema/raw/query.json b/contracts/subdaos/cwd-subdao-timelock-single/schema/raw/query.json index cc0e1b2b..38d63f4b 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/schema/raw/query.json +++ b/contracts/subdaos/cwd-subdao-timelock-single/schema/raw/query.json @@ -73,6 +73,30 @@ } }, "additionalProperties": false + }, + { + "description": "Returns errors of the failed proposal. Expected in the form of \"codespace=? code=?\". Returns `Option`", + "type": "object", + "required": [ + "proposal_execution_error" + ], + "properties": { + "proposal_execution_error": { + "type": "object", + "required": [ + "proposal_id" + ], + "properties": { + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false } ] } diff --git a/contracts/subdaos/cwd-subdao-timelock-single/schema/raw/response_to_proposal_execution_error.json b/contracts/subdaos/cwd-subdao-timelock-single/schema/raw/response_to_proposal_execution_error.json new file mode 100644 index 00000000..f4c601d9 --- /dev/null +++ b/contracts/subdaos/cwd-subdao-timelock-single/schema/raw/response_to_proposal_execution_error.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Nullable_String", + "type": [ + "string", + "null" + ] +} diff --git a/contracts/subdaos/cwd-subdao-timelock-single/src/contract.rs b/contracts/subdaos/cwd-subdao-timelock-single/src/contract.rs index 6cbbba06..58b083b3 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/src/contract.rs +++ b/contracts/subdaos/cwd-subdao-timelock-single/src/contract.rs @@ -1,7 +1,7 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - to_binary, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Reply, Response, + to_binary, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Reply, Response, StdError, StdResult, SubMsg, WasmMsg, }; use cw2::set_contract_version; @@ -18,13 +18,15 @@ use neutron_dao_pre_propose_overrule::msg::{ use neutron_sdk::bindings::msg::NeutronMsg; use neutron_subdao_core::msg::QueryMsg as SubdaoQuery; use neutron_subdao_pre_propose_single::msg::QueryMsg as PreProposeQuery; +use neutron_subdao_proposal_single::msg::QueryMsg as ProposalQueryMsg; +use neutron_subdao_proposal_single::types::Config as ProposalConfig; use neutron_subdao_timelock_single::{ msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}, types::{Config, ProposalListResponse, ProposalStatus, SingleChoiceProposal}, }; use crate::error::ContractError; -use crate::state::{CONFIG, DEFAULT_LIMIT, PROPOSALS}; +use crate::state::{CONFIG, DEFAULT_LIMIT, PROPOSALS, PROPOSAL_EXECUTION_ERRORS}; pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-subdao-timelock-single"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -161,16 +163,36 @@ pub fn execute_execute_proposal( proposal.status = ProposalStatus::Executed; PROPOSALS.save(deps.storage, proposal_id, &proposal)?; - let msgs: Vec> = proposal - .msgs - .iter() - .map(|msg| SubMsg::reply_on_error(msg.clone(), proposal_id)) - .collect(); + let response: Response = { + // In order to get config.close_proposal_on_execution_failure on proposal module, + // we have to query subdao to get proposal module address and then it's config + let proposal_module: Addr = deps.querier.query_wasm_smart( + config.subdao, + &SubdaoQuery::TimelockProposalModuleAddress { + timelock: env.contract.address.to_string(), + }, + )?; + let proposal_config: ProposalConfig = deps + .querier + .query_wasm_smart(proposal_module, &ProposalQueryMsg::Config {})?; + + match proposal_config.close_proposal_on_execution_failure { + true => { + let msgs: Vec> = proposal + .msgs + .iter() + .map(|msg| SubMsg::reply_on_error(msg.clone(), proposal_id)) + .collect(); + + Response::default().add_submessages(msgs) + } + false => Response::default().add_messages(proposal.msgs), + } + }; // Note: we add the proposal messages as submessages to change the status to ExecutionFailed // in the reply handler if any of the submessages fail. - Ok(Response::new() - .add_submessages(msgs) + Ok(response .add_attribute("action", "execute_proposal") .add_attribute("sender", info.sender) .add_attribute("proposal_id", proposal_id.to_string())) @@ -248,6 +270,9 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { QueryMsg::ListProposals { start_after, limit } => { query_list_proposals(deps, start_after, limit) } + QueryMsg::ProposalExecutionError { proposal_id } => { + query_proposal_execution_error(deps, proposal_id) + } } } @@ -274,6 +299,11 @@ pub fn query_list_proposals( to_binary(&ProposalListResponse { proposals: props }) } +pub fn query_proposal_execution_error(deps: Deps, proposal_id: u64) -> StdResult { + let error = PROPOSAL_EXECUTION_ERRORS.may_load(deps.storage, proposal_id)?; + to_binary(&error) +} + #[cfg_attr(not(feature = "library"), entry_point)] pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { // Set contract to version to latest @@ -321,6 +351,15 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result Err(ContractError::NoSuchProposal { id: proposal_id }), })?; + // Error is reduced before cosmwasm reply and is expected in form of "codespace=? code=?" + let error = msg.result.into_result().err().ok_or_else(|| { + // should never happen since we reply only on failure + ContractError::Std(StdError::generic_err( + "must be an error in the failed result", + )) + })?; + PROPOSAL_EXECUTION_ERRORS.save(deps.storage, proposal_id, &error)?; + Ok(Response::new().add_attribute( "timelocked_proposal_execution_failed", proposal_id.to_string(), diff --git a/contracts/subdaos/cwd-subdao-timelock-single/src/state.rs b/contracts/subdaos/cwd-subdao-timelock-single/src/state.rs index c1fde550..fbbe42c2 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/src/state.rs +++ b/contracts/subdaos/cwd-subdao-timelock-single/src/state.rs @@ -6,3 +6,5 @@ pub const DEFAULT_LIMIT: u64 = 30; pub const CONFIG: Item = Item::new("config"); pub const PROPOSALS: Map = Map::new("proposals"); +/// Execution errors for proposals that do not close on failure (Config.close_proposal_on_execution_failure set to false) +pub const PROPOSAL_EXECUTION_ERRORS: Map = Map::new("proposal_execution_errors"); diff --git a/contracts/subdaos/cwd-subdao-timelock-single/src/testing/mock_querier.rs b/contracts/subdaos/cwd-subdao-timelock-single/src/testing/mock_querier.rs index a54dd8e3..8d439892 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/src/testing/mock_querier.rs +++ b/contracts/subdaos/cwd-subdao-timelock-single/src/testing/mock_querier.rs @@ -10,21 +10,23 @@ use cosmwasm_std::{ }; use cw_utils::Duration; use cwd_proposal_single::{ - msg::{QueryMsg as ProposeQuery, QueryMsg}, - proposal::SingleChoiceProposal as MainDaoSingleChoiceProposal, - query::ProposalResponse as MainDaoProposalResponse, - state::Config as OverrulProposalConfig, + msg::QueryMsg as ProposeQuery, proposal::SingleChoiceProposal as MainDaoSingleChoiceProposal, + query::ProposalResponse as MainDaoProposalResponse, state::Config as OverruleProposalConfig, }; use cwd_voting::status::Status; +use cwd_voting::threshold::PercentageThreshold::Majority; use cwd_voting::threshold::Threshold; use cwd_voting::voting::Votes; use neutron_dao_pre_propose_overrule::msg::{ QueryExt as PreProposeOverruleQueryExt, QueryMsg as PreProposeOverruleQuery, }; +use neutron_subdao_core::msg::QueryMsg as CoreSubdaoQuery; use neutron_subdao_pre_propose_single::msg::{ QueryExt as PreProposeQueryExt, QueryMsg as PreProposeQuery, }; +use neutron_subdao_proposal_single::types::Config as ProposalConfig; +pub const MOCK_PROPOSAL_ADDR: &str = "neutron1subdao_proposal_contract"; pub const MOCK_SUBDAO_CORE_ADDR: &str = "neutron1subdao_core_contract"; pub const MOCK_TIMELOCK_INITIALIZER: &str = "neutron1timelock_initializer"; pub const MOCK_MAIN_DAO_ADDR: &str = "neutron1main_dao_core_contract"; @@ -48,6 +50,7 @@ pub fn mock_dependencies( pub struct WasmMockQuerier { base: MockQuerier, overrule_proposal_status: Rc>, + close_proposal_on_execution_failure: bool, } impl Querier for WasmMockQuerier { @@ -85,7 +88,14 @@ impl WasmMockQuerier { return SystemResult::Ok(ContractResult::from(to_binary(addr))); } if contract_addr == MOCK_SUBDAO_CORE_ADDR { - let addr = { MOCK_MAIN_DAO_ADDR }; + let q: CoreSubdaoQuery = from_binary(msg).unwrap(); + let addr = match q { + CoreSubdaoQuery::MainDao {} => MOCK_MAIN_DAO_ADDR, + CoreSubdaoQuery::TimelockProposalModuleAddress { timelock: _ } => { + MOCK_PROPOSAL_ADDR + } + _ => todo!(), + }; return SystemResult::Ok(ContractResult::from(to_binary(addr))); } if contract_addr == MOCK_OVERRULE_PREPROPOSAL { @@ -108,7 +118,7 @@ impl WasmMockQuerier { if contract_addr == MOCK_OVERRULE_PROPOSAL { let q: ProposeQuery = from_binary(msg).unwrap(); let reply = match q { - QueryMsg::Config {} => to_binary(&OverrulProposalConfig { + ProposeQuery::Config {} => to_binary(&OverruleProposalConfig { threshold: Threshold::AbsoluteCount { threshold: Default::default(), }, @@ -118,7 +128,7 @@ impl WasmMockQuerier { dao: Addr::unchecked(MOCK_MAIN_DAO_ADDR), close_proposal_on_execution_failure: false, }), - QueryMsg::Proposal { .. } => to_binary(&MainDaoProposalResponse { + ProposeQuery::Proposal { .. } => to_binary(&MainDaoProposalResponse { id: 1, proposal: MainDaoSingleChoiceProposal { title: "".to_string(), @@ -142,14 +152,32 @@ impl WasmMockQuerier { allow_revoting: false, }, }), - QueryMsg::ListProposals { .. } => todo!(), - QueryMsg::ReverseProposals { .. } => todo!(), - QueryMsg::ProposalCount { .. } => todo!(), - QueryMsg::GetVote { .. } => todo!(), - QueryMsg::ListVotes { .. } => todo!(), - QueryMsg::ProposalCreationPolicy { .. } => todo!(), - QueryMsg::ProposalHooks { .. } => todo!(), - QueryMsg::VoteHooks { .. } => todo!(), + ProposeQuery::ListProposals { .. } => todo!(), + ProposeQuery::ReverseProposals { .. } => todo!(), + ProposeQuery::ProposalCount { .. } => todo!(), + ProposeQuery::GetVote { .. } => todo!(), + ProposeQuery::ListVotes { .. } => todo!(), + ProposeQuery::ProposalCreationPolicy { .. } => todo!(), + ProposeQuery::ProposalHooks { .. } => todo!(), + ProposeQuery::VoteHooks { .. } => todo!(), + _ => todo!(), + }; + return SystemResult::Ok(ContractResult::from(reply)); + } + if contract_addr == MOCK_PROPOSAL_ADDR { + let q: ProposeQuery = from_binary(msg).unwrap(); + let reply = match q { + ProposeQuery::Config {} => to_binary(&ProposalConfig { + threshold: Threshold::AbsolutePercentage { + percentage: Majority {}, + }, + max_voting_period: Duration::Time(1), + min_voting_period: None, + allow_revoting: false, + dao: Addr::unchecked(""), + close_proposal_on_execution_failure: self + .close_proposal_on_execution_failure, + }), _ => todo!(), }; return SystemResult::Ok(ContractResult::from(reply)); @@ -161,6 +189,10 @@ impl WasmMockQuerier { _ => self.base.handle_query(request), } } + + pub fn set_close_proposal_on_execution_failure(&mut self, v: bool) { + self.close_proposal_on_execution_failure = v + } } impl WasmMockQuerier { @@ -168,6 +200,7 @@ impl WasmMockQuerier { WasmMockQuerier { base, overrule_proposal_status: x, + close_proposal_on_execution_failure: true, } } } diff --git a/contracts/subdaos/cwd-subdao-timelock-single/src/testing/tests.rs b/contracts/subdaos/cwd-subdao-timelock-single/src/testing/tests.rs index 252aff63..c4e2191e 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/src/testing/tests.rs +++ b/contracts/subdaos/cwd-subdao-timelock-single/src/testing/tests.rs @@ -1,3 +1,4 @@ +use crate::contract::query_proposal_execution_error; use cosmwasm_std::testing::MOCK_CONTRACT_ADDR; use cosmwasm_std::{ from_binary, @@ -192,6 +193,8 @@ fn test_execute_proposal() { ) } + // check execution with close_proposal_on_execution_failure = true + deps.querier.set_close_proposal_on_execution_failure(true); let proposal = SingleChoiceProposal { id: 10, msgs: vec![NeutronMsg::remove_interchain_query(1).into()], @@ -206,7 +209,7 @@ fn test_execute_proposal() { let mut data_mut_ref = overrule_proposal_status.borrow_mut(); *data_mut_ref = Status::Rejected; } - let res = execute(deps.as_mut(), env, info, msg).unwrap(); + let res = execute(deps.as_mut(), env.clone(), info.clone(), msg.clone()).unwrap(); let expected_attributes = vec![ Attribute::new("action", "execute_proposal"), Attribute::new("sender", "neutron1unknownsender"), @@ -222,7 +225,34 @@ fn test_execute_proposal() { res.messages ); let updated_prop = PROPOSALS.load(deps.as_mut().storage, 10).unwrap(); - assert_eq!(ProposalStatus::Executed, updated_prop.status) + assert_eq!(ProposalStatus::Executed, updated_prop.status); + + // check proposal execution close_proposal_on_execution_failure = false + deps.querier.set_close_proposal_on_execution_failure(false); + let proposal2 = SingleChoiceProposal { + id: 10, + msgs: vec![NeutronMsg::remove_interchain_query(1).into()], + status: ProposalStatus::Timelocked, + }; + PROPOSALS + .save(deps.as_mut().storage, proposal2.id, &proposal2) + .unwrap(); + let res = execute(deps.as_mut(), env, info, msg).unwrap(); + let expected_attributes = vec![ + Attribute::new("action", "execute_proposal"), + Attribute::new("sender", "neutron1unknownsender"), + Attribute::new("proposal_id", "10"), + ]; + assert_eq!(expected_attributes, res.attributes); + // added as messages without reply + let expected_msgs = proposal2 + .msgs + .iter() + .map(|msg| SubMsg::new(msg.clone())) + .collect::>>(); + assert_eq!(expected_msgs, res.messages); + let updated_prop_2 = PROPOSALS.load(deps.as_mut().storage, 10).unwrap(); + assert_eq!(ProposalStatus::Executed, updated_prop_2.status); } #[test] @@ -519,9 +549,14 @@ fn test_reply() { msgs: vec![NeutronMsg::remove_interchain_query(1).into()], status: ProposalStatus::Timelocked, }; + let env = mock_env(); PROPOSALS.save(deps.as_mut().storage, 10, &prop).unwrap(); - let res_ok = reply(deps.as_mut(), mock_env(), msg).unwrap(); + let res_ok = reply(deps.as_mut(), env, msg).unwrap(); assert_eq!(0, res_ok.messages.len()); let expected_attributes = vec![Attribute::new("timelocked_proposal_execution_failed", "10")]; assert_eq!(expected_attributes, res_ok.attributes); + // reply writes the failed proposal error + let query_res = query_proposal_execution_error(deps.as_ref(), 10).unwrap(); + let error: Option = from_binary(&query_res).unwrap(); + assert_eq!(error, Some("error".to_string())); } diff --git a/packages/neutron-subdao-core/src/msg.rs b/packages/neutron-subdao-core/src/msg.rs index 2fcbd3a6..b9116ce8 100644 --- a/packages/neutron-subdao-core/src/msg.rs +++ b/packages/neutron-subdao-core/src/msg.rs @@ -155,6 +155,9 @@ pub enum QueryMsg { /// Verify timelock. Returns bool. #[returns(bool)] VerifyTimelock { timelock: String }, + /// Returns proposal module address for timelock contract if it's correct + #[returns(Addr)] + TimelockProposalModuleAddress { timelock: String }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] diff --git a/packages/neutron-subdao-timelock-single/src/msg.rs b/packages/neutron-subdao-timelock-single/src/msg.rs index 011d8a81..d7f785f9 100644 --- a/packages/neutron-subdao-timelock-single/src/msg.rs +++ b/packages/neutron-subdao-timelock-single/src/msg.rs @@ -54,6 +54,11 @@ pub enum QueryMsg { /// returned. limit: Option, }, + /// Returns errors of the failed proposal. + /// Expected in the form of "codespace=? code=?". + /// Returns `Option` + #[returns(Option)] + ProposalExecutionError { proposal_id: u64 }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] From 95fd7c124b7d965b5a138c96f977a0de27ee3c1b Mon Sep 17 00:00:00 2001 From: pr0n00gler Date: Thu, 12 Oct 2023 20:17:59 +0300 Subject: [PATCH 02/12] bump contracts versions --- Cargo.lock | 14 +++++++------- .../cwd-pre-propose-single-overrule/Cargo.toml | 2 +- .../schema/cwd-pre-propose-overrule.json | 2 +- .../dao/proposal/cwd-proposal-multiple/Cargo.toml | 2 +- .../schema/cwd-proposal-multiple.json | 2 +- .../dao/proposal/cwd-proposal-single/Cargo.toml | 2 +- .../schema/cwd-proposal-single.json | 2 +- .../dao/voting/neutron-voting-registry/Cargo.toml | 2 +- .../schema/neutron-voting-registry.json | 2 +- contracts/subdaos/cwd-subdao-core/Cargo.toml | 2 +- .../cwd-subdao-core/schema/cwd-subdao-core.json | 2 +- .../subdaos/cwd-subdao-timelock-single/Cargo.toml | 2 +- .../schema/cwd-subdao-timelock-single.json | 2 +- contracts/tokenomics/reserve/Cargo.toml | 2 +- .../tokenomics/reserve/schema/neutron-reserve.json | 2 +- 15 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 85ee23ca..09beff4a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "cwd-pre-propose-overrule" -version = "0.2.0" +version = "0.2.1" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1127,7 +1127,7 @@ dependencies = [ [[package]] name = "cwd-proposal-multiple" -version = "0.2.0" +version = "0.3.0" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1166,7 +1166,7 @@ dependencies = [ [[package]] name = "cwd-proposal-single" -version = "0.2.0" +version = "0.3.0" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1204,7 +1204,7 @@ dependencies = [ [[package]] name = "cwd-subdao-core" -version = "0.2.0" +version = "0.3.0" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1314,7 +1314,7 @@ dependencies = [ [[package]] name = "cwd-subdao-timelock-single" -version = "0.2.0" +version = "0.3.0" dependencies = [ "anyhow", "cosmwasm-schema", @@ -1858,7 +1858,7 @@ dependencies = [ [[package]] name = "neutron-reserve" -version = "0.1.0" +version = "0.1.1" dependencies = [ "astroport 2.5.0", "cosmwasm-schema", @@ -2024,7 +2024,7 @@ dependencies = [ [[package]] name = "neutron-voting-registry" -version = "0.2.0" +version = "0.3.0" dependencies = [ "anyhow", "cosmwasm-schema", diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml index e6821d02..5c10c03f 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml +++ b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-pre-propose-overrule" -version = "0.2.0" +version = "0.2.1" authors = ["oldremez"] edition = "2021" repository = "https://github.com/neutron-org/neutron-dao" diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json index 80c1dd2a..dabbf6ad 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json +++ b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-pre-propose-overrule", - "contract_version": "0.2.0", + "contract_version": "0.2.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/dao/proposal/cwd-proposal-multiple/Cargo.toml b/contracts/dao/proposal/cwd-proposal-multiple/Cargo.toml index 68bdfdc2..3e8bb29f 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/Cargo.toml +++ b/contracts/dao/proposal/cwd-proposal-multiple/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-proposal-multiple" -version = "0.2.0" +version = "0.3.0" authors = ["blue-note"] edition = "2021" repository = "https://github.com/DA0-DA0/dao-contracts" diff --git a/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json b/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json index d30faf41..aad3b253 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json +++ b/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-proposal-multiple", - "contract_version": "0.2.0", + "contract_version": "0.3.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/dao/proposal/cwd-proposal-single/Cargo.toml b/contracts/dao/proposal/cwd-proposal-single/Cargo.toml index eaf44bb9..56e950b1 100644 --- a/contracts/dao/proposal/cwd-proposal-single/Cargo.toml +++ b/contracts/dao/proposal/cwd-proposal-single/Cargo.toml @@ -4,7 +4,7 @@ description = "A DAO DAO proposal module for single choice (yes / no) voting." edition = "2021" name = "cwd-proposal-single" repository = "https://github.com/DA0-DA0/dao-contracts" -version = "0.2.0" +version = "0.3.0" [lib] crate-type = ["cdylib", "rlib"] diff --git a/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json b/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json index 60b0a36e..0c458736 100644 --- a/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json +++ b/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-proposal-single", - "contract_version": "0.2.0", + "contract_version": "0.3.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/dao/voting/neutron-voting-registry/Cargo.toml b/contracts/dao/voting/neutron-voting-registry/Cargo.toml index d66cf0e7..bb9eb2df 100644 --- a/contracts/dao/voting/neutron-voting-registry/Cargo.toml +++ b/contracts/dao/voting/neutron-voting-registry/Cargo.toml @@ -4,7 +4,7 @@ description = "A DAO DAO voting module based on staked cw721 tokens." edition = "2021" name = "neutron-voting-registry" repository = "https://github.com/DA0-DA0/dao-contracts" -version = "0.2.0" +version = "0.3.0" [lib] crate-type = ["cdylib", "rlib"] diff --git a/contracts/dao/voting/neutron-voting-registry/schema/neutron-voting-registry.json b/contracts/dao/voting/neutron-voting-registry/schema/neutron-voting-registry.json index 76b69405..9ee574fa 100644 --- a/contracts/dao/voting/neutron-voting-registry/schema/neutron-voting-registry.json +++ b/contracts/dao/voting/neutron-voting-registry/schema/neutron-voting-registry.json @@ -1,6 +1,6 @@ { "contract_name": "neutron-voting-registry", - "contract_version": "0.2.0", + "contract_version": "0.3.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/subdaos/cwd-subdao-core/Cargo.toml b/contracts/subdaos/cwd-subdao-core/Cargo.toml index 671dccba..02073afb 100644 --- a/contracts/subdaos/cwd-subdao-core/Cargo.toml +++ b/contracts/subdaos/cwd-subdao-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-subdao-core" -version = "0.2.0" +version = "0.3.0" authors = ["ekez "] edition = "2021" repository = "https://github.com/neutron-org/neutron-dao" diff --git a/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json b/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json index 5d4002f3..b3e327ed 100644 --- a/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json +++ b/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-subdao-core", - "contract_version": "0.2.0", + "contract_version": "0.3.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml b/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml index e22e3de2..6acf0438 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml +++ b/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-subdao-timelock-single" -version = "0.2.0" +version = "0.3.0" authors = ["Andrei Zavgorodnii "] edition = "2021" repository = "https://github.com/neutron-org/neutron-dao" diff --git a/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json b/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json index 2f5198d2..52d583d9 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json +++ b/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-subdao-timelock-single", - "contract_version": "0.2.0", + "contract_version": "0.3.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/tokenomics/reserve/Cargo.toml b/contracts/tokenomics/reserve/Cargo.toml index 62bb465e..bbb2ba1d 100644 --- a/contracts/tokenomics/reserve/Cargo.toml +++ b/contracts/tokenomics/reserve/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" license = "Apache-2.0" name = "neutron-reserve" repository = "https://github.com/neutron/neutron-dao" -version = "0.1.0" +version = "0.1.1" [lib] crate-type = ["cdylib", "rlib"] diff --git a/contracts/tokenomics/reserve/schema/neutron-reserve.json b/contracts/tokenomics/reserve/schema/neutron-reserve.json index f59d2664..7b13e8cc 100644 --- a/contracts/tokenomics/reserve/schema/neutron-reserve.json +++ b/contracts/tokenomics/reserve/schema/neutron-reserve.json @@ -1,6 +1,6 @@ { "contract_name": "neutron-reserve", - "contract_version": "0.1.0", + "contract_version": "0.1.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", From 3d62d98180703534aaa3a83a549db328359a4205 Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 13 Oct 2023 13:06:44 +0300 Subject: [PATCH 03/12] fixed cwd_proposal_single CONTRACT_NAME --- contracts/dao/proposal/cwd-proposal-single/src/contract.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/dao/proposal/cwd-proposal-single/src/contract.rs b/contracts/dao/proposal/cwd-proposal-single/src/contract.rs index 0fdf9583..b435474b 100644 --- a/contracts/dao/proposal/cwd-proposal-single/src/contract.rs +++ b/contracts/dao/proposal/cwd-proposal-single/src/contract.rs @@ -34,7 +34,7 @@ use crate::{ state::{Ballot, BALLOTS, CONFIG, PROPOSALS, PROPOSAL_COUNT, PROPOSAL_HOOKS, VOTE_HOOKS}, }; -pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-subdao-proposal-single"; +pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-proposal-single"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); #[cfg_attr(not(feature = "library"), entry_point)] @@ -787,7 +787,8 @@ pub fn query_proposal_execution_error(deps: Deps, proposal_id: u64) -> StdResult } #[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { +pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; Ok(Response::default()) } From fbbfd1c36441a2cac9509fbd8e3dc51388b7bc97 Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 13 Oct 2023 13:55:42 +0300 Subject: [PATCH 04/12] fixed CONTRACT_NAME --- contracts/dao/cwd-core/src/contract.rs | 2 +- .../dao/voting/lockdrop-vault-for-cl-pools/src/contract.rs | 2 +- .../dao/voting/vesting-lp-vault-for-cl-pools/src/contract.rs | 3 +-- .../cwd-security-subdao-pre-propose/src/contract.rs | 5 +++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contracts/dao/cwd-core/src/contract.rs b/contracts/dao/cwd-core/src/contract.rs index 98e7c12c..138f0fed 100644 --- a/contracts/dao/cwd-core/src/contract.rs +++ b/contracts/dao/cwd-core/src/contract.rs @@ -19,7 +19,7 @@ use crate::state::{ PAUSED, PROPOSAL_MODULES, SUBDAO_LIST, TOTAL_PROPOSAL_MODULE_COUNT, VOTING_REGISTRY_MODULE, }; -pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-subdao-core"; +pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-core"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); const PROPOSAL_MODULE_REPLY_ID: u64 = 0; diff --git a/contracts/dao/voting/lockdrop-vault-for-cl-pools/src/contract.rs b/contracts/dao/voting/lockdrop-vault-for-cl-pools/src/contract.rs index e65c6a19..fccd8a11 100644 --- a/contracts/dao/voting/lockdrop-vault-for-cl-pools/src/contract.rs +++ b/contracts/dao/voting/lockdrop-vault-for-cl-pools/src/contract.rs @@ -16,7 +16,7 @@ use neutron_lockdrop_vault_for_cl_pools::error::{ContractError, ContractResult}; use neutron_lockdrop_vault_for_cl_pools::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use neutron_lockdrop_vault_for_cl_pools::types::Config; -pub(crate) const CONTRACT_NAME: &str = "crates.io:neutron-lockdrop-vault-for-cl-pools-for-cl-pools"; +pub(crate) const CONTRACT_NAME: &str = "crates.io:neutron-lockdrop-vault-for-cl-pools"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); #[cfg_attr(not(feature = "library"), entry_point)] diff --git a/contracts/dao/voting/vesting-lp-vault-for-cl-pools/src/contract.rs b/contracts/dao/voting/vesting-lp-vault-for-cl-pools/src/contract.rs index 898677b8..1f21cdb5 100644 --- a/contracts/dao/voting/vesting-lp-vault-for-cl-pools/src/contract.rs +++ b/contracts/dao/voting/vesting-lp-vault-for-cl-pools/src/contract.rs @@ -20,8 +20,7 @@ use neutron_voting_power::voting_power::voting_power_from_lp_tokens; use vesting_base::msg::{QueryMsg as VestingLpQueryMsg, QueryMsgHistorical}; use vesting_base::types::Config as VestingBaseConfig; -pub(crate) const CONTRACT_NAME: &str = - "crates.io:neutron-vesting-lp-vault-for-cl-pools-for-cl-pools"; +pub(crate) const CONTRACT_NAME: &str = "crates.io:neutron-vesting-lp-vault-for-cl-pools"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); #[cfg_attr(not(feature = "library"), entry_point)] diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs index 5716fac4..fe373597 100644 --- a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs +++ b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs @@ -22,7 +22,7 @@ pub type InstantiateMsg = InstantiateBase; pub type ExecuteMsg = ExecuteBase; pub type QueryMsg = QueryBase; -pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-subdao-pre-propose-single"; +pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-security-subdao-pre-propose-single"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); /// Internal version of the propose message that includes the @@ -138,6 +138,7 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { } #[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { +pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; Ok(Response::default()) } From 3918ecdf165b612f47572434377970bdc5810654 Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 13 Oct 2023 14:04:05 +0300 Subject: [PATCH 05/12] moved cwd-security-subdao-pre-propose -> cwd-subdao-pre-propose-single-no-timelock --- .../.cargo/config | 0 .../Cargo.toml | 0 .../README.md | 0 .../examples/schema.rs | 0 .../schema/cwd-subdao-pre-propose-single-no-timelock.json | 0 .../schema/raw/execute.json | 0 .../schema/raw/instantiate.json | 0 .../schema/raw/query.json | 0 .../schema/raw/response_to_config.json | 0 .../schema/raw/response_to_dao.json | 0 .../schema/raw/response_to_deposit_info.json | 0 .../schema/raw/response_to_proposal_module.json | 0 .../schema/raw/response_to_query_extension.json | 0 .../src/contract.rs | 2 +- .../src/lib.rs | 0 15 files changed, 1 insertion(+), 1 deletion(-) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/.cargo/config (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/Cargo.toml (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/README.md (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/examples/schema.rs (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/cwd-subdao-pre-propose-single-no-timelock.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/raw/execute.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/raw/instantiate.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/raw/query.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/raw/response_to_config.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/raw/response_to_dao.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/raw/response_to_deposit_info.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/raw/response_to_proposal_module.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/schema/raw/response_to_query_extension.json (100%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/src/contract.rs (98%) rename contracts/subdaos/pre-propose/{cwd-security-subdao-pre-propose => cwd-subdao-pre-propose-single-no-timelock}/src/lib.rs (100%) diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/.cargo/config b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/.cargo/config similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/.cargo/config rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/.cargo/config diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/Cargo.toml b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/Cargo.toml similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/Cargo.toml rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/Cargo.toml diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/README.md b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/README.md similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/README.md rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/README.md diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/examples/schema.rs b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/examples/schema.rs similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/examples/schema.rs rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/examples/schema.rs diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/cwd-subdao-pre-propose-single-no-timelock.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/cwd-subdao-pre-propose-single-no-timelock.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/cwd-subdao-pre-propose-single-no-timelock.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/cwd-subdao-pre-propose-single-no-timelock.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/execute.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/execute.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/execute.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/execute.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/instantiate.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/instantiate.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/instantiate.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/instantiate.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/query.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/query.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/query.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/query.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_config.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_config.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_config.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_config.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_dao.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_dao.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_dao.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_dao.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_deposit_info.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_deposit_info.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_deposit_info.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_deposit_info.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_proposal_module.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_proposal_module.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_proposal_module.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_proposal_module.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_query_extension.json b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_query_extension.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_query_extension.json rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_query_extension.json diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/contract.rs similarity index 98% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/contract.rs index fe373597..bc5e1227 100644 --- a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs +++ b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/contract.rs @@ -22,7 +22,7 @@ pub type InstantiateMsg = InstantiateBase; pub type ExecuteMsg = ExecuteBase; pub type QueryMsg = QueryBase; -pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-security-subdao-pre-propose-single"; +pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-subdao-pre-propose-single-no-timelock"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); /// Internal version of the propose message that includes the diff --git a/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/lib.rs b/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/lib.rs similarity index 100% rename from contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/lib.rs rename to contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/lib.rs From d81666d3d21130eeefbfdc6dd4e7b5df097b075f Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 13 Oct 2023 16:53:10 +0300 Subject: [PATCH 06/12] added migration entrypoint --- .../dao/pre-propose/cwd-pre-propose-single/src/contract.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs b/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs index 79f6081f..5879cdd9 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs +++ b/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs @@ -3,6 +3,7 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{ Binary, CosmosMsg, Deps, DepsMut, Empty, Env, MessageInfo, Response, StdResult, }; +use cw20_base::msg::MigrateMsg; use cw2::set_contract_version; use neutron_sdk::bindings::msg::NeutronMsg; @@ -119,3 +120,8 @@ pub fn execute( pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { PrePropose::default().query(deps, env, msg) } + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result { + Ok(Response::default()) +} From 682e4f3276c2dfe695aeccc8d2602207742d419a Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 13 Oct 2023 16:53:49 +0300 Subject: [PATCH 07/12] lint --- .../dao/pre-propose/cwd-pre-propose-single/src/contract.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs b/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs index 5879cdd9..3e01d7fd 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs +++ b/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs @@ -3,8 +3,8 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{ Binary, CosmosMsg, Deps, DepsMut, Empty, Env, MessageInfo, Response, StdResult, }; -use cw20_base::msg::MigrateMsg; use cw2::set_contract_version; +use cw20_base::msg::MigrateMsg; use neutron_sdk::bindings::msg::NeutronMsg; use cwd_pre_propose_base::{ From b5f708add83fd4c9f53960ddc280517095754b0b Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 13 Oct 2023 17:01:35 +0300 Subject: [PATCH 08/12] linter & tests --- .../dao/pre-propose/cwd-pre-propose-single/src/contract.rs | 6 ++++-- .../dao/voting/lockdrop-vault-for-cl-pools/src/tests.rs | 2 +- .../dao/voting/vesting-lp-vault-for-cl-pools/src/tests.rs | 2 +- packages/cwd-pre-propose-base/src/msg.rs | 4 ++++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs b/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs index 3e01d7fd..5e33da03 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs +++ b/contracts/dao/pre-propose/cwd-pre-propose-single/src/contract.rs @@ -4,12 +4,14 @@ use cosmwasm_std::{ Binary, CosmosMsg, Deps, DepsMut, Empty, Env, MessageInfo, Response, StdResult, }; use cw2::set_contract_version; -use cw20_base::msg::MigrateMsg; use neutron_sdk::bindings::msg::NeutronMsg; use cwd_pre_propose_base::{ error::PreProposeError, - msg::{ExecuteMsg as ExecuteBase, InstantiateMsg as InstantiateBase, QueryMsg as QueryBase}, + msg::{ + ExecuteMsg as ExecuteBase, InstantiateMsg as InstantiateBase, MigrateMsg, + QueryMsg as QueryBase, + }, state::PreProposeContract, }; use schemars::JsonSchema; diff --git a/contracts/dao/voting/lockdrop-vault-for-cl-pools/src/tests.rs b/contracts/dao/voting/lockdrop-vault-for-cl-pools/src/tests.rs index b077bd3c..d97a7e64 100644 --- a/contracts/dao/voting/lockdrop-vault-for-cl-pools/src/tests.rs +++ b/contracts/dao/voting/lockdrop-vault-for-cl-pools/src/tests.rs @@ -396,7 +396,7 @@ fn test_query_info() { let resp: InfoResponse = app.wrap().query_wasm_smart(addr, &msg).unwrap(); assert_eq!( resp.info.contract, - "crates.io:neutron-lockdrop-vault-for-cl-pools-for-cl-pools" + "crates.io:neutron-lockdrop-vault-for-cl-pools" ); } diff --git a/contracts/dao/voting/vesting-lp-vault-for-cl-pools/src/tests.rs b/contracts/dao/voting/vesting-lp-vault-for-cl-pools/src/tests.rs index 35d8ba7d..e519061a 100644 --- a/contracts/dao/voting/vesting-lp-vault-for-cl-pools/src/tests.rs +++ b/contracts/dao/voting/vesting-lp-vault-for-cl-pools/src/tests.rs @@ -501,7 +501,7 @@ fn test_query_info() { let resp: InfoResponse = app.wrap().query_wasm_smart(addr, &msg).unwrap(); assert_eq!( resp.info.contract, - "crates.io:neutron-vesting-lp-vault-for-cl-pools-for-cl-pools" + "crates.io:neutron-vesting-lp-vault-for-cl-pools" ); } diff --git a/packages/cwd-pre-propose-base/src/msg.rs b/packages/cwd-pre-propose-base/src/msg.rs index eaff2c06..da7e7c82 100644 --- a/packages/cwd-pre-propose-base/src/msg.rs +++ b/packages/cwd-pre-propose-base/src/msg.rs @@ -119,3 +119,7 @@ pub struct DepositInfoResponse { /// The address that created the proposal. pub proposer: cosmwasm_std::Addr, } + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub struct MigrateMsg {} \ No newline at end of file From 53bfdf0c551f7b8a14705291de9cb38d95be8e17 Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 13 Oct 2023 17:04:23 +0300 Subject: [PATCH 09/12] rust fmt --- packages/cwd-pre-propose-base/src/msg.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cwd-pre-propose-base/src/msg.rs b/packages/cwd-pre-propose-base/src/msg.rs index da7e7c82..42be9442 100644 --- a/packages/cwd-pre-propose-base/src/msg.rs +++ b/packages/cwd-pre-propose-base/src/msg.rs @@ -122,4 +122,4 @@ pub struct DepositInfoResponse { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "snake_case")] -pub struct MigrateMsg {} \ No newline at end of file +pub struct MigrateMsg {} From d79a315bf638c92713b81b04f5cdfaa47851242b Mon Sep 17 00:00:00 2001 From: pr0n00gler Date: Sat, 14 Oct 2023 21:20:03 +0300 Subject: [PATCH 10/12] fix versions --- Cargo.lock | 10 +++++----- .../cwd-pre-propose-single-overrule/Cargo.toml | 2 +- .../schema/cwd-pre-propose-overrule.json | 2 +- .../dao/proposal/cwd-proposal-multiple/Cargo.toml | 2 +- .../schema/cwd-proposal-multiple.json | 2 +- contracts/dao/proposal/cwd-proposal-single/Cargo.toml | 2 +- .../schema/cwd-proposal-single.json | 2 +- contracts/subdaos/cwd-subdao-core/Cargo.toml | 2 +- .../cwd-subdao-core/schema/cwd-subdao-core.json | 2 +- .../subdaos/cwd-subdao-timelock-single/Cargo.toml | 2 +- .../schema/cwd-subdao-timelock-single.json | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 09beff4a..0a84142f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "cwd-pre-propose-overrule" -version = "0.2.1" +version = "0.2.0" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1127,7 +1127,7 @@ dependencies = [ [[package]] name = "cwd-proposal-multiple" -version = "0.3.0" +version = "0.2.1" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1166,7 +1166,7 @@ dependencies = [ [[package]] name = "cwd-proposal-single" -version = "0.3.0" +version = "0.2.1" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1204,7 +1204,7 @@ dependencies = [ [[package]] name = "cwd-subdao-core" -version = "0.3.0" +version = "0.2.1" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1314,7 +1314,7 @@ dependencies = [ [[package]] name = "cwd-subdao-timelock-single" -version = "0.3.0" +version = "0.2.1" dependencies = [ "anyhow", "cosmwasm-schema", diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml index 5c10c03f..e6821d02 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml +++ b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-pre-propose-overrule" -version = "0.2.1" +version = "0.2.0" authors = ["oldremez"] edition = "2021" repository = "https://github.com/neutron-org/neutron-dao" diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json index dabbf6ad..80c1dd2a 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json +++ b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-pre-propose-overrule", - "contract_version": "0.2.1", + "contract_version": "0.2.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/dao/proposal/cwd-proposal-multiple/Cargo.toml b/contracts/dao/proposal/cwd-proposal-multiple/Cargo.toml index 3e8bb29f..8f443d98 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/Cargo.toml +++ b/contracts/dao/proposal/cwd-proposal-multiple/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-proposal-multiple" -version = "0.3.0" +version = "0.2.1" authors = ["blue-note"] edition = "2021" repository = "https://github.com/DA0-DA0/dao-contracts" diff --git a/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json b/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json index aad3b253..737a4969 100644 --- a/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json +++ b/contracts/dao/proposal/cwd-proposal-multiple/schema/cwd-proposal-multiple.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-proposal-multiple", - "contract_version": "0.3.0", + "contract_version": "0.2.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/dao/proposal/cwd-proposal-single/Cargo.toml b/contracts/dao/proposal/cwd-proposal-single/Cargo.toml index 56e950b1..b5bd8919 100644 --- a/contracts/dao/proposal/cwd-proposal-single/Cargo.toml +++ b/contracts/dao/proposal/cwd-proposal-single/Cargo.toml @@ -4,7 +4,7 @@ description = "A DAO DAO proposal module for single choice (yes / no) voting." edition = "2021" name = "cwd-proposal-single" repository = "https://github.com/DA0-DA0/dao-contracts" -version = "0.3.0" +version = "0.2.1" [lib] crate-type = ["cdylib", "rlib"] diff --git a/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json b/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json index 0c458736..7f99880c 100644 --- a/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json +++ b/contracts/dao/proposal/cwd-proposal-single/schema/cwd-proposal-single.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-proposal-single", - "contract_version": "0.3.0", + "contract_version": "0.2.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/subdaos/cwd-subdao-core/Cargo.toml b/contracts/subdaos/cwd-subdao-core/Cargo.toml index 02073afb..d29383ed 100644 --- a/contracts/subdaos/cwd-subdao-core/Cargo.toml +++ b/contracts/subdaos/cwd-subdao-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-subdao-core" -version = "0.3.0" +version = "0.2.1" authors = ["ekez "] edition = "2021" repository = "https://github.com/neutron-org/neutron-dao" diff --git a/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json b/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json index b3e327ed..afca2166 100644 --- a/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json +++ b/contracts/subdaos/cwd-subdao-core/schema/cwd-subdao-core.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-subdao-core", - "contract_version": "0.3.0", + "contract_version": "0.2.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml b/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml index 6acf0438..80754b6d 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml +++ b/contracts/subdaos/cwd-subdao-timelock-single/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-subdao-timelock-single" -version = "0.3.0" +version = "0.2.1" authors = ["Andrei Zavgorodnii "] edition = "2021" repository = "https://github.com/neutron-org/neutron-dao" diff --git a/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json b/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json index 52d583d9..856baf06 100644 --- a/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json +++ b/contracts/subdaos/cwd-subdao-timelock-single/schema/cwd-subdao-timelock-single.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-subdao-timelock-single", - "contract_version": "0.3.0", + "contract_version": "0.2.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", From 8bdad6fb3904b5ac390b276a466aaacaba27bb3e Mon Sep 17 00:00:00 2001 From: pr0n00gler Date: Sun, 15 Oct 2023 21:41:22 +0300 Subject: [PATCH 11/12] rename cwd-subdao-pre-propose-single-no-timelock -> cwd-security-subdao-pre-propose --- .../.cargo/config | 0 .../Cargo.toml | 0 .../README.md | 0 .../examples/schema.rs | 0 .../schema/cwd-subdao-pre-propose-single-no-timelock.json | 0 .../schema/raw/execute.json | 0 .../schema/raw/instantiate.json | 0 .../schema/raw/query.json | 0 .../schema/raw/response_to_config.json | 0 .../schema/raw/response_to_dao.json | 0 .../schema/raw/response_to_deposit_info.json | 0 .../schema/raw/response_to_proposal_module.json | 0 .../schema/raw/response_to_query_extension.json | 0 .../src/contract.rs | 2 +- .../src/lib.rs | 0 15 files changed, 1 insertion(+), 1 deletion(-) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/.cargo/config (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/Cargo.toml (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/README.md (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/examples/schema.rs (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/cwd-subdao-pre-propose-single-no-timelock.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/raw/execute.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/raw/instantiate.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/raw/query.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/raw/response_to_config.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/raw/response_to_dao.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/raw/response_to_deposit_info.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/raw/response_to_proposal_module.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/schema/raw/response_to_query_extension.json (100%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/src/contract.rs (98%) rename contracts/subdaos/pre-propose/{cwd-subdao-pre-propose-single-no-timelock => cwd-security-subdao-pre-propose}/src/lib.rs (100%) diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/.cargo/config b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/.cargo/config similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/.cargo/config rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/.cargo/config diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/Cargo.toml b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/Cargo.toml similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/Cargo.toml rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/Cargo.toml diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/README.md b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/README.md similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/README.md rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/README.md diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/examples/schema.rs b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/examples/schema.rs similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/examples/schema.rs rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/examples/schema.rs diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/cwd-subdao-pre-propose-single-no-timelock.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/cwd-subdao-pre-propose-single-no-timelock.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/cwd-subdao-pre-propose-single-no-timelock.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/cwd-subdao-pre-propose-single-no-timelock.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/execute.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/execute.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/execute.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/execute.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/instantiate.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/instantiate.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/instantiate.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/instantiate.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/query.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/query.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/query.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/query.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_config.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_config.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_config.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_config.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_dao.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_dao.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_dao.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_dao.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_deposit_info.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_deposit_info.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_deposit_info.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_deposit_info.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_proposal_module.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_proposal_module.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_proposal_module.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_proposal_module.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_query_extension.json b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_query_extension.json similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/schema/raw/response_to_query_extension.json rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/schema/raw/response_to_query_extension.json diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/contract.rs b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs similarity index 98% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/contract.rs rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs index bc5e1227..159ffe21 100644 --- a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/contract.rs +++ b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/contract.rs @@ -22,7 +22,7 @@ pub type InstantiateMsg = InstantiateBase; pub type ExecuteMsg = ExecuteBase; pub type QueryMsg = QueryBase; -pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-subdao-pre-propose-single-no-timelock"; +pub(crate) const CONTRACT_NAME: &str = "crates.io:cwd-security-subdao-pre-propose"; pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); /// Internal version of the propose message that includes the diff --git a/contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/lib.rs b/contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/lib.rs similarity index 100% rename from contracts/subdaos/pre-propose/cwd-subdao-pre-propose-single-no-timelock/src/lib.rs rename to contracts/subdaos/pre-propose/cwd-security-subdao-pre-propose/src/lib.rs From 6c91cee44259e25f5b51517579c85ffebb58a08c Mon Sep 17 00:00:00 2001 From: pr0n00gler Date: Mon, 16 Oct 2023 15:18:48 +0300 Subject: [PATCH 12/12] fix versions --- Cargo.lock | 6 +++--- contracts/dao/cwd-core/Cargo.toml | 2 +- contracts/dao/cwd-core/schema/cwd-core.json | 2 +- .../pre-propose/cwd-pre-propose-single-overrule/Cargo.toml | 2 +- .../schema/cwd-pre-propose-overrule.json | 2 +- contracts/dao/pre-propose/cwd-pre-propose-single/Cargo.toml | 2 +- .../schema/cwd-pre-propose-single.json | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a84142f..424e102b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -965,7 +965,7 @@ dependencies = [ [[package]] name = "cwd-core" -version = "0.2.0" +version = "0.2.1" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "cwd-pre-propose-overrule" -version = "0.2.0" +version = "0.2.1" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1092,7 +1092,7 @@ dependencies = [ [[package]] name = "cwd-pre-propose-single" -version = "0.2.0" +version = "0.2.1" dependencies = [ "cosmwasm-schema", "cosmwasm-std", diff --git a/contracts/dao/cwd-core/Cargo.toml b/contracts/dao/cwd-core/Cargo.toml index a0ce8b67..c11f8c8f 100644 --- a/contracts/dao/cwd-core/Cargo.toml +++ b/contracts/dao/cwd-core/Cargo.toml @@ -4,7 +4,7 @@ description = "A DAO DAO core module." edition = "2021" name = "cwd-core" repository = "https://github.com/DA0-DA0/dao-contracts" -version = "0.2.0" +version = "0.2.1" [lib] crate-type = ["cdylib", "rlib"] diff --git a/contracts/dao/cwd-core/schema/cwd-core.json b/contracts/dao/cwd-core/schema/cwd-core.json index fef36f19..f0fc7a54 100644 --- a/contracts/dao/cwd-core/schema/cwd-core.json +++ b/contracts/dao/cwd-core/schema/cwd-core.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-core", - "contract_version": "0.2.0", + "contract_version": "0.2.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml index e6821d02..5c10c03f 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml +++ b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-pre-propose-overrule" -version = "0.2.0" +version = "0.2.1" authors = ["oldremez"] edition = "2021" repository = "https://github.com/neutron-org/neutron-dao" diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json index 80c1dd2a..dabbf6ad 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json +++ b/contracts/dao/pre-propose/cwd-pre-propose-single-overrule/schema/cwd-pre-propose-overrule.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-pre-propose-overrule", - "contract_version": "0.2.0", + "contract_version": "0.2.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single/Cargo.toml b/contracts/dao/pre-propose/cwd-pre-propose-single/Cargo.toml index eec276e5..d4adac18 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single/Cargo.toml +++ b/contracts/dao/pre-propose/cwd-pre-propose-single/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cwd-pre-propose-single" -version = "0.2.0" +version = "0.2.1" authors = ["ekez "] edition = "2021" repository = "https://github.com/DA0-DA0/dao-contracts" diff --git a/contracts/dao/pre-propose/cwd-pre-propose-single/schema/cwd-pre-propose-single.json b/contracts/dao/pre-propose/cwd-pre-propose-single/schema/cwd-pre-propose-single.json index ab3f5c5a..a8591d7a 100644 --- a/contracts/dao/pre-propose/cwd-pre-propose-single/schema/cwd-pre-propose-single.json +++ b/contracts/dao/pre-propose/cwd-pre-propose-single/schema/cwd-pre-propose-single.json @@ -1,6 +1,6 @@ { "contract_name": "cwd-pre-propose-single", - "contract_version": "0.2.0", + "contract_version": "0.2.1", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#",