Skip to content

Commit

Permalink
Hotfix: add missed pool creation fee during pool creation (#90)
Browse files Browse the repository at this point in the history
  • Loading branch information
betterclever authored Feb 7, 2024
2 parents e0b9e36 + a712604 commit 407a521
Show file tree
Hide file tree
Showing 27 changed files with 556 additions and 170 deletions.
32 changes: 16 additions & 16 deletions artifacts/checksums.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
b033c50a9172e847c3f349cf861652b92b6d3c77be24c1896b6f8fe49b351852 dexter_governance_admin-aarch64.wasm
ddab6c4c7b0ecce4f3c7fdd7a252df4513b20e8f556dced2d6fa26cb4e8b7cf5 dexter_governance_admin.wasm
763d18e2511dc2675f7922dfb436e50c873fb8700766a63d47727908dba89926 dexter_keeper-aarch64.wasm
7a6b92012a55079f30f19f281aca842b4278cdb3f9934d7d8fecbf4597932eca dexter_keeper.wasm
910c56f23aa385c0505a4e2e31a99b836630f7224442a79fd60fcc4ce04fca84 dexter_multi_staking-aarch64.wasm
389308f509cf2620a6b580c1a07e659bd2ed057ab9f6ff0fc80e899114a195fc dexter_multi_staking.wasm
a6cc2dbddf5116a94250a2da56a667f4261a303ada8fe0a9a2e18e761e72020a dexter_router-aarch64.wasm
7910f20513015a2ef412b683eca21578875013b253f5a9981949a6fc666dca37 dexter_router.wasm
ee15396844a7a5d2f3150e07077f729be8fb5b950a6163c2afe3ecf1455974d0 dexter_vault-aarch64.wasm
de02859f12133984ddc50cd267597855e4ea655ae12289450713233c034db17a dexter_vault.wasm
742d8db553a7ee49babbe94d2257d6aa1cba2853ec698d5eee938d0f63fc5552 lp_token-aarch64.wasm
a5e718ca06a7c5df8c2cc84a33b39be2aa4f4859922d2ca52536e29c2966f073 lp_token.wasm
5162acb9fb571be79d8933f6bf26a15e713bb2a3e0c5e9aa2b21876cd09a220f stable_pool-aarch64.wasm
fb1828921272e85b71a7d607552dea73892337601d52e0657827c1850b0f1f0e stable_pool.wasm
fe7a2248e0c87c9d5a7c527022e5f76e512f5ed4183da4bef9a4e6e59c079f09 weighted_pool-aarch64.wasm
e2ce35e3acb4d07ce215d524a9173ebc84395b2d24d98eedae87c84f49fcd35c weighted_pool.wasm
ec744098d4b8e64b006efa5ea4d38005b66fe6a04868c5731411a5218510d122 dexter_governance_admin-aarch64.wasm
4ae1b5525f1c0a157b9bb681b7cdd96585963c3b7d50b8beb5e40dbb635f4a06 dexter_governance_admin.wasm
f1637c62e407f3a8e632d1646ba059a07574742c66484d22baf2aa9ce53747cd dexter_keeper-aarch64.wasm
eed9ca38fae4f1898b5b9cef3bd6d93353823c139fc81dd502ce3d9bc829a628 dexter_keeper.wasm
c7aca4e73e5f5418d6c9a78e32ff97b3d7a21afe7055a05ff5bc74410e3e367a dexter_multi_staking-aarch64.wasm
010616b1325998fa5ce47437b9c909cb47a6c011282665687aa7e6d7dbc30fdf dexter_multi_staking.wasm
8a55ee7c47ad6e97cef64b2b8ddc7b208c3bfcad870b52c356536739223d4dfe dexter_router-aarch64.wasm
2770cf94f9eb6c25f0f41a122dd83515702ba96e11596dc695d0a58acbbbe5f2 dexter_router.wasm
ccc87e6af394f8d6ed23f3d8501f26bb2e475e2d47e29f516ab46f0b37098b63 dexter_vault-aarch64.wasm
7ce2c09ec05be2e08fdbdbc672f419cf51d8cdab892f35850401b1783fb131f6 dexter_vault.wasm
d1ffada7fa5d2111debc4a0bba615322dc398c17624d7dea68e482aa5bf8d51a lp_token-aarch64.wasm
54ff6959266af5653f95f703e36f1b5d8d72d35b93c535f38cc94b5511634f0c lp_token.wasm
6b83675d1a9b0b34eabea0b4058998a923b836a31310aafccf5c87537b0133ab stable_pool-aarch64.wasm
f457177d505873465476f417e272991876bbb181b812097de8f513ef5938ffaa stable_pool.wasm
6a6a257e606478a66c6dd2db8f37322620ab01e18cbecedcce883985454be770 weighted_pool-aarch64.wasm
0c3ef881f46191127131fe042ca1579f34c20c8af2b93908dd9e14ac46e1249e weighted_pool.wasm
16 changes: 8 additions & 8 deletions artifacts/checksums_intermediate.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
6864211daf765d04b611daed7e4aa91fa1594f8c65eb1a1669e065ce4f9504f2 target/wasm32-unknown-unknown/release/dexter_governance_admin.wasm
337c3945a6fd4f80383370664b7a10fae5bcc2ffa665de30e51cf1fe81e9a4fd target/wasm32-unknown-unknown/release/dexter_keeper.wasm
ac31cf4d60749229327a513a630efe212096a1de1d5af4da0c78beb46dca2087 target/wasm32-unknown-unknown/release/dexter_multi_staking.wasm
fb899ce3aa92829910f318462dfe735303023e76cd76a24189a6bb45f06472ca target/wasm32-unknown-unknown/release/dexter_router.wasm
6b5dc74e43757d44d35bab7ae7f3a4807a836540a4f675b2dd35f8715ab63864 target/wasm32-unknown-unknown/release/dexter_vault.wasm
5e37e85f31a5c762543e16159c3bba55413b1436937690465166fb4ce96558a4 target/wasm32-unknown-unknown/release/lp_token.wasm
4725f4f4d7b910a529182fc47b0b2cfd47ef1343e4652ce6d5449941d7a021e3 target/wasm32-unknown-unknown/release/stable_pool.wasm
ed142f681bfe3b3bba578ccfc3af05009cb3d03147fb3fa9561edabc78dcf270 target/wasm32-unknown-unknown/release/weighted_pool.wasm
b712ae72f337b514b412980b318d6354e0dd3ab8e33cc87e0da94d78f0e875d7 target/wasm32-unknown-unknown/release/dexter_governance_admin.wasm
73c81bb6a9e418e0c5eaca3f38efcf9687ed39d20e39f3aad7648b52fd66277b target/wasm32-unknown-unknown/release/dexter_keeper.wasm
d5fedf51f7b10a4d2705331e053efe8999148421b1f2ba8bee577082cf4ff9a9 target/wasm32-unknown-unknown/release/dexter_multi_staking.wasm
29b9ab70ff4438b6fc2394c87f3965106ba313590e5c9b6bc85d937a9cefa41d target/wasm32-unknown-unknown/release/dexter_router.wasm
52026056c605a76edf8e20197badae509076117c6684db72c94d3af3ef614cc7 target/wasm32-unknown-unknown/release/dexter_vault.wasm
9bd1325f5a7460e8857d86525cd24c6354684f500c580112782a96d23e914cd4 target/wasm32-unknown-unknown/release/lp_token.wasm
688fc035141cf14036baf03fc665ff1eb7f789f04152e7b46555c525d3401af1 target/wasm32-unknown-unknown/release/stable_pool.wasm
705ff501c260f21bc07d4ea39d702afb980cbb81c679e490a1bc8f311fb35849 target/wasm32-unknown-unknown/release/weighted_pool.wasm
Binary file modified artifacts/dexter_governance_admin-aarch64.wasm
Binary file not shown.
Binary file modified artifacts/dexter_governance_admin.wasm
Binary file not shown.
Binary file modified artifacts/dexter_keeper-aarch64.wasm
Binary file not shown.
Binary file modified artifacts/dexter_keeper.wasm
Binary file not shown.
Binary file modified artifacts/dexter_multi_staking-aarch64.wasm
Binary file not shown.
Binary file modified artifacts/dexter_multi_staking.wasm
Binary file not shown.
Binary file modified artifacts/dexter_router-aarch64.wasm
Binary file not shown.
Binary file modified artifacts/dexter_router.wasm
Binary file not shown.
Binary file modified artifacts/dexter_vault-aarch64.wasm
Binary file not shown.
Binary file modified artifacts/dexter_vault.wasm
Binary file not shown.
Binary file modified artifacts/lp_token-aarch64.wasm
Binary file not shown.
Binary file modified artifacts/lp_token.wasm
Binary file not shown.
Binary file modified artifacts/stable_pool-aarch64.wasm
Binary file not shown.
Binary file modified artifacts/stable_pool.wasm
Binary file not shown.
Binary file modified artifacts/weighted_pool-aarch64.wasm
Binary file not shown.
Binary file modified artifacts/weighted_pool.wasm
Binary file not shown.
2 changes: 1 addition & 1 deletion contracts/governance_admin/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "dexter-governance-admin"
version = "1.0.0"
version = "1.1.0"
authors = ["PersistenceLabs"]
edition = "2021"

Expand Down
39 changes: 35 additions & 4 deletions contracts/governance_admin/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use cosmwasm_std::{
entry_point, to_json_binary, Binary, Deps, DepsMut, Env, Event, MessageInfo, Response, StdError,
StdResult,
};
use cw2::set_contract_version;
use cw2::{get_contract_version, set_contract_version};

use dexter::governance_admin::{ExecuteMsg, InstantiateMsg, QueryMsg};
use dexter::helper::EventExt;
Expand All @@ -32,6 +32,7 @@ use dexter::helper::EventExt;
pub const CONTRACT_NAME: &str = "dexter-governance-admin";
/// Contract version that is used for migration.
const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION");
const CONTRACT_VERSION_V1: &str = "1.0.0";

pub type ContractResult<T> = Result<T, ContractError>;

Expand Down Expand Up @@ -155,10 +156,40 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult<Binary> {
}

#[cw_serde]
pub struct MigrateMsg {}
pub enum MigrateMsg {
V1_1 {}
}

// migrate handler
#[cfg_attr(not(feature = "library"), entry_point)]
pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result<Response, ContractError> {
return Err(ContractError::MigrationNotSupported {});
pub fn migrate(deps: DepsMut, _env: Env, msg: MigrateMsg) -> Result<Response, ContractError> {
match msg {
MigrateMsg::V1_1 {} => {
let contract_version = get_contract_version(deps.storage)?;

// validate contract name
if contract_version.contract != CONTRACT_NAME {
return Err(ContractError::InvalidContractUpgrade {
expected_name: CONTRACT_NAME.to_string(),
actual_name: contract_version.contract,
});
}

if contract_version.version != CONTRACT_VERSION_V1 {
return Err(ContractError::InvalidContractVersionForUpgrade {
upgrade_version: CONTRACT_VERSION.to_string(),
expected: CONTRACT_VERSION_V1.to_string(),
actual: contract_version.version,
});
}

set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?;

let event = Event::new(concatcp!(CONTRACT_NAME, "::migrate"))
.add_attribute("from", CONTRACT_VERSION_V1)
.add_attribute("to", CONTRACT_VERSION);

Ok(Response::new().add_event(event))
}
}
}
13 changes: 13 additions & 0 deletions contracts/governance_admin/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,19 @@ pub enum ContractError {

#[error("Migration is not supported for v1 of the contract")]
MigrationNotSupported {},

#[error("Invalid contract version for upgrade {upgrade_version}. Expected: {expected}, Actual: {actual}")]
InvalidContractVersionForUpgrade {
upgrade_version: String,
expected: String,
actual: String,
},

#[error("This upgrade is meant for a contract named {expected_name} but the actual contract name is {actual_name}")]
InvalidContractUpgrade {
expected_name: String,
actual_name: String,
},
}

impl From<OverflowError> for ContractError {
Expand Down
35 changes: 32 additions & 3 deletions contracts/governance_admin/src/execute/resume_create_pool.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
use crate::add_wasm_execute_msg;
use crate::contract::{ContractResult, CONTRACT_NAME};
use crate::state::POOL_CREATION_REQUEST_DATA;
use crate::add_wasm_execute_msg;
use const_format::concatcp;

use cosmwasm_std::{to_json_binary, CosmosMsg, DepsMut, Env, Event, MessageInfo, Response};
use cosmwasm_std::{to_json_binary, Coin, CosmosMsg, DepsMut, Env, Event, MessageInfo, Response};

use dexter::asset::AssetInfo;
use dexter::governance_admin::FundsCategory;
use dexter::helper::EventExt;
use dexter::vault::ExecuteMsg as VaultExecuteMsg;

Expand Down Expand Up @@ -32,8 +34,35 @@ pub fn execute_resume_create_pool(
asset_infos: pool_creation_request.asset_info.clone(),
};

let user_funds = pool_creation_request_data.user_deposits_detailed;
let mut pool_creation_funds: Vec<Coin> = vec![];

for fund in user_funds {
if let FundsCategory::PoolCreationFee = fund.category {
for asset in fund.assets {
match asset.info {
AssetInfo::NativeToken { denom } => {
pool_creation_funds.push(Coin::new(asset.amount.u128(), denom));
}
AssetInfo::Token { contract_addr } => {
add_wasm_execute_msg!(
messages,
contract_addr,
cw20::Cw20ExecuteMsg::IncreaseAllowance {
spender: vault_addr.to_string(),
amount: asset.amount,
expires: Some(cw20::Expiration::AtHeight(env.block.height + 1)),
},
vec![]
);
}
}
}
}
}

// add the message to the list of messages
add_wasm_execute_msg!(messages, vault_addr, create_pool_msg, vec![]);
add_wasm_execute_msg!(messages, vault_addr, create_pool_msg, pool_creation_funds);

// add a message to return callback to the contract post proposal creation so we can find the
// pool id of the pool we just created. This can be just found by querying the latest pool id from the vault
Expand Down
Loading

0 comments on commit 407a521

Please sign in to comment.