diff --git a/Cargo.lock b/Cargo.lock index 2ec758b..565dee6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -179,15 +179,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "cosmwasm-schema" -version = "0.10.0" -source = "git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0#490fba9243e6cb291462e9d3c1bcbd1975c0df1e" -dependencies = [ - "schemars", - "serde_json", -] - [[package]] name = "cosmwasm-sgx-vm" version = "0.10.0" @@ -234,15 +225,6 @@ dependencies = [ "snafu", ] -[[package]] -name = "cosmwasm-storage" -version = "0.10.0" -source = "git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0#490fba9243e6cb291462e9d3c1bcbd1975c0df1e" -dependencies = [ - "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", - "serde", -] - [[package]] name = "cosmwasm-storage" version = "0.10.0" @@ -447,12 +429,12 @@ name = "lockup-incentives" version = "0.1.0" dependencies = [ "base64 0.12.3", - "cosmwasm-schema 0.10.0", - "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", - "cosmwasm-storage 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", + "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", + "cosmwasm-storage", "rand 0.7.3", "schemars", - "secret-toolkit 0.1.0 (git+https://github.com/enigmampc/secret-toolkit)", + "scrt-finance", + "secret-toolkit", "serde", "snafu", "subtle 2.4.0", @@ -674,9 +656,9 @@ name = "scrt-finance" version = "0.1.0" dependencies = [ "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", - "cosmwasm-storage 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", + "cosmwasm-storage", "schemars", - "secret-toolkit 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", + "secret-toolkit", "serde", "snafu", ] @@ -686,23 +668,11 @@ name = "secret-toolkit" version = "0.1.0" source = "git+https://github.com/enigmampc/secret-toolkit?branch=debug-print#e960c64971d5f3cfe33114b3d80b0b0aa46cf963" dependencies = [ - "secret-toolkit-crypto 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", - "secret-toolkit-serialization 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", - "secret-toolkit-snip20 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", - "secret-toolkit-storage 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", - "secret-toolkit-utils 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", -] - -[[package]] -name = "secret-toolkit" -version = "0.1.0" -source = "git+https://github.com/enigmampc/secret-toolkit#1faf60a45ece9b4dc7c635786259f731405b4f76" -dependencies = [ - "secret-toolkit-crypto 0.1.0 (git+https://github.com/enigmampc/secret-toolkit)", - "secret-toolkit-serialization 0.1.0 (git+https://github.com/enigmampc/secret-toolkit)", - "secret-toolkit-snip20 0.1.0 (git+https://github.com/enigmampc/secret-toolkit)", - "secret-toolkit-storage 0.1.0 (git+https://github.com/enigmampc/secret-toolkit)", - "secret-toolkit-utils 0.1.0 (git+https://github.com/enigmampc/secret-toolkit)", + "secret-toolkit-crypto", + "secret-toolkit-serialization", + "secret-toolkit-snip20", + "secret-toolkit-storage", + "secret-toolkit-utils", ] [[package]] @@ -717,18 +687,6 @@ dependencies = [ "sha2 0.9.3", ] -[[package]] -name = "secret-toolkit-crypto" -version = "0.1.0" -source = "git+https://github.com/enigmampc/secret-toolkit#1faf60a45ece9b4dc7c635786259f731405b4f76" -dependencies = [ - "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", - "libsecp256k1", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "sha2 0.9.3", -] - [[package]] name = "secret-toolkit-serialization" version = "0.1.0" @@ -739,16 +697,6 @@ dependencies = [ "serde", ] -[[package]] -name = "secret-toolkit-serialization" -version = "0.1.0" -source = "git+https://github.com/enigmampc/secret-toolkit#1faf60a45ece9b4dc7c635786259f731405b4f76" -dependencies = [ - "bincode2", - "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", - "serde", -] - [[package]] name = "secret-toolkit-snip20" version = "0.1.0" @@ -756,18 +704,7 @@ source = "git+https://github.com/enigmampc/secret-toolkit?branch=debug-print#e96 dependencies = [ "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", "schemars", - "secret-toolkit-utils 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", - "serde", -] - -[[package]] -name = "secret-toolkit-snip20" -version = "0.1.0" -source = "git+https://github.com/enigmampc/secret-toolkit#1faf60a45ece9b4dc7c635786259f731405b4f76" -dependencies = [ - "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", - "schemars", - "secret-toolkit-utils 0.1.0 (git+https://github.com/enigmampc/secret-toolkit)", + "secret-toolkit-utils", "serde", ] @@ -777,19 +714,8 @@ version = "0.1.0" source = "git+https://github.com/enigmampc/secret-toolkit?branch=debug-print#e960c64971d5f3cfe33114b3d80b0b0aa46cf963" dependencies = [ "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", - "cosmwasm-storage 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", - "secret-toolkit-serialization 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", - "serde", -] - -[[package]] -name = "secret-toolkit-storage" -version = "0.1.0" -source = "git+https://github.com/enigmampc/secret-toolkit#1faf60a45ece9b4dc7c635786259f731405b4f76" -dependencies = [ - "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", - "cosmwasm-storage 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", - "secret-toolkit-serialization 0.1.0 (git+https://github.com/enigmampc/secret-toolkit)", + "cosmwasm-storage", + "secret-toolkit-serialization", "serde", ] @@ -803,16 +729,6 @@ dependencies = [ "serde", ] -[[package]] -name = "secret-toolkit-utils" -version = "0.1.0" -source = "git+https://github.com/enigmampc/secret-toolkit#1faf60a45ece9b4dc7c635786259f731405b4f76" -dependencies = [ - "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?tag=v1.0.0)", - "schemars", - "serde", -] - [[package]] name = "serde" version = "1.0.123" @@ -931,15 +847,15 @@ version = "0.1.0" dependencies = [ "base64 0.12.3", "bincode2", - "cosmwasm-schema 0.9.4", + "cosmwasm-schema", "cosmwasm-sgx-vm", "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", - "cosmwasm-storage 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", + "cosmwasm-storage", "hex", "rand_chacha 0.2.2", "rand_core 0.5.1", "schemars", - "secret-toolkit 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", + "secret-toolkit", "serde", "sha2 0.9.3", "snafu", @@ -1074,10 +990,10 @@ name = "weight-master" version = "0.1.0" dependencies = [ "cosmwasm-std 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", - "cosmwasm-storage 0.10.0 (git+https://github.com/enigmampc/SecretNetwork?rev=004c6bc)", + "cosmwasm-storage", "schemars", "scrt-finance", - "secret-toolkit 0.1.0 (git+https://github.com/enigmampc/secret-toolkit?branch=debug-print)", + "secret-toolkit", "serde", "snafu", ] diff --git a/contracts/lp-staking/Cargo.toml b/contracts/lp-staking/Cargo.toml index 710d8a9..5b7b847 100644 --- a/contracts/lp-staking/Cargo.toml +++ b/contracts/lp-staking/Cargo.toml @@ -33,13 +33,13 @@ default = [] backtraces = ["cosmwasm-std/backtraces"] [dependencies] -cosmwasm-schema = { git = "https://github.com/enigmampc/SecretNetwork", tag = "v1.0.0" } -cosmwasm-std = { git = "https://github.com/enigmampc/SecretNetwork", tag = "v1.0.0" } -cosmwasm-storage = { git = "https://github.com/enigmampc/SecretNetwork", tag = "v1.0.0" } +secret-toolkit = { git = "https://github.com/enigmampc/secret-toolkit", branch = "debug-print" } +cosmwasm-storage = { git = "https://github.com/enigmampc/SecretNetwork", rev = "004c6bc" } +cosmwasm-std = { git = "https://github.com/enigmampc/SecretNetwork", rev = "004c6bc" } schemars = "0.7" serde = { version = "1.0.103", default-features = false, features = ["derive"] } snafu = { version = "0.6.3" } -secret-toolkit = { git = "https://github.com/enigmampc/secret-toolkit" } +scrt-finance = { path = "../../packages/scrt-finance", version = "0.1.0" } base64 = "0.12.3" subtle = { version = "2.2.3", default-features = false } diff --git a/contracts/lp-staking/src/constants.rs b/contracts/lp-staking/src/constants.rs index be1efe9..28dfb58 100644 --- a/contracts/lp-staking/src/constants.rs +++ b/contracts/lp-staking/src/constants.rs @@ -5,5 +5,5 @@ pub const VIEWING_KEY_KEY: &[u8] = b"viewingkey"; pub const RESPONSE_BLOCK_SIZE: usize = 256; // TODO: get those as an input for specific coins, as some coins might require different scales than others -pub const INC_TOKEN_SCALE: u128 = 1_000_000_000_000; // 10 ^ 12 +pub const INC_TOKEN_SCALE: u128 = 1; // LP Tokens and Gov Token is at the same scale pub const REWARD_SCALE: u128 = 1_000_000_000_000; // 10 ^ 12 diff --git a/contracts/lp-staking/src/contract.rs b/contracts/lp-staking/src/contract.rs index 83909c1..7addad9 100644 --- a/contracts/lp-staking/src/contract.rs +++ b/contracts/lp-staking/src/contract.rs @@ -10,11 +10,10 @@ use secret_toolkit::utils::{pad_handle_result, pad_query_result}; use crate::constants::*; use crate::msg::ResponseStatus::Success; -use crate::msg::{ - HandleAnswer, HandleMsg, InitMsg, QueryAnswer, QueryMsg, ReceiveAnswer, ReceiveMsg, -}; +use crate::msg::{HandleAnswer, InitMsg, QueryAnswer, QueryMsg, ReceiveAnswer, ReceiveMsg}; use crate::state::{Config, RewardPool, UserInfo}; use crate::viewing_key::{ViewingKey, VIEWING_KEY_SIZE}; +use scrt_finance::msg::LPStakingHandleMsg; pub fn init( deps: &mut Extern, @@ -89,13 +88,13 @@ pub fn init( pub fn handle( deps: &mut Extern, env: Env, - msg: HandleMsg, + msg: LPStakingHandleMsg, ) -> StdResult { let config: Config = TypedStoreMut::attach(&mut deps.storage).load(CONFIG_KEY)?; if config.is_stopped { return match msg { - HandleMsg::EmergencyRedeem {} => emergency_redeem(deps, env), - HandleMsg::ResumeContract {} => resume_contract(deps, env), + LPStakingHandleMsg::EmergencyRedeem {} => emergency_redeem(deps, env), + LPStakingHandleMsg::ResumeContract {} => resume_contract(deps, env), _ => Err(StdError::generic_err( "this contract is stopped and this action is not allowed", )), @@ -103,16 +102,20 @@ pub fn handle( } let response = match msg { - HandleMsg::Redeem { amount } => redeem(deps, env, amount), - HandleMsg::Receive { + LPStakingHandleMsg::Redeem { amount } => redeem(deps, env, amount), + LPStakingHandleMsg::Receive { from, amount, msg, .. } => receive(deps, env, from, amount.u128(), msg), - HandleMsg::CreateViewingKey { entropy, .. } => create_viewing_key(deps, env, entropy), - HandleMsg::SetViewingKey { key, .. } => set_viewing_key(deps, env, key), - HandleMsg::ClaimRewardPool { to: recipient } => claim_reward_pool(deps, env, recipient), - HandleMsg::StopContract {} => stop_contract(deps, env), - HandleMsg::ChangeAdmin { address } => change_admin(deps, env, address), - HandleMsg::SetDeadline { block: height } => set_deadline(deps, env, height), + LPStakingHandleMsg::CreateViewingKey { entropy, .. } => { + create_viewing_key(deps, env, entropy) + } + LPStakingHandleMsg::SetViewingKey { key, .. } => set_viewing_key(deps, env, key), + LPStakingHandleMsg::ClaimRewardPool { to: recipient } => { + claim_reward_pool(deps, env, recipient) + } + LPStakingHandleMsg::StopContract {} => stop_contract(deps, env), + LPStakingHandleMsg::ChangeAdmin { address } => change_admin(deps, env, address), + LPStakingHandleMsg::SetDeadline { block: height } => set_deadline(deps, env, height), _ => Err(StdError::generic_err("Unavailable or unknown action")), }; @@ -198,7 +201,7 @@ fn deposit( } // Adjust scale to allow easy division and prevent overflows - let amount = amount / INC_TOKEN_SCALE; + // let amount = amount / INC_TOKEN_SCALE; let mut reward_pool = update_rewards(deps, &env, &config)?; @@ -689,7 +692,7 @@ fn update_rewards( #[cfg(test)] mod tests { use super::*; - use crate::msg::HandleMsg::{Receive, Redeem, SetViewingKey}; + use crate::msg::LPStakingHandleMsg::{Receive, Redeem, SetViewingKey}; use crate::msg::QueryMsg::{Deposit, Rewards}; use crate::msg::ReceiveMsg; use crate::state::Snip20; @@ -757,7 +760,7 @@ mod tests { deps: &Extern, action: &str, user: HumanAddr, - ) -> (HandleMsg, String) { + ) -> (LPStakingHandleMsg, String) { let mut rng = rand::thread_rng(); let chance = rng.gen_range(0, 100000); @@ -765,7 +768,7 @@ mod tests { "deposit" => { let amount: u128 = rng.gen_range(10e12 as u128, 1000e18 as u128); - let msg = HandleMsg::Receive { + let msg = LPStakingHandleMsg::Receive { sender: user.clone(), from: user, amount: Uint128(amount), @@ -777,7 +780,7 @@ mod tests { "redeem" => { let amount: u128 = rng.gen_range(1e12 as u128, 1000e18 as u128); - let msg = HandleMsg::Redeem { + let msg = LPStakingHandleMsg::Redeem { amount: Some(Uint128(amount)), }; @@ -789,14 +792,14 @@ mod tests { let new = rng.gen_range(current + 1.0, current * 1.001); - let msg = HandleMsg::SetDeadline { block: new as u64 }; + let msg = LPStakingHandleMsg::SetDeadline { block: new as u64 }; (msg, "admin".to_string()) } "rewards" if chance == 7 => { let amount: u128 = rng.gen_range(10000e6 as u128, 100000e6 as u128); - let msg = HandleMsg::Receive { + let msg = LPStakingHandleMsg::Receive { sender: user.clone(), from: user, amount: Uint128(amount), @@ -806,7 +809,7 @@ mod tests { (msg, "scrt".to_string()) } _ => ( - HandleMsg::Redeem { + LPStakingHandleMsg::Redeem { amount: Some(Uint128(u128::MAX)), // This will never work but will keep the tests going }, "".to_string(), @@ -917,9 +920,9 @@ mod tests { 0 } - fn extract_reward_deposit(msg: HandleMsg) -> u128 { + fn extract_reward_deposit(msg: LPStakingHandleMsg) -> u128 { match msg { - HandleMsg::Receive { amount, msg, .. } => { + LPStakingHandleMsg::Receive { amount, msg, .. } => { let transfer_msg: ReceiveMsg = from_binary(&msg).unwrap(); match transfer_msg { @@ -979,7 +982,7 @@ mod tests { // Make sure all users are fully redeemed for user in users.clone() { - let redeem_msg = HandleMsg::Redeem { amount: None }; + let redeem_msg = LPStakingHandleMsg::Redeem { amount: None }; let result = handle(&mut deps, mock_env(user.0, &[], 1_700_000), redeem_msg); total_rewards_output += extract_rewards(result); } @@ -1005,11 +1008,11 @@ mod tests { let mut rewards = 500_000_000000; let mut total_rewards_output = 0; - let msg = HandleMsg::SetDeadline { + let msg = LPStakingHandleMsg::SetDeadline { block: new_deadline, }; let result = handle(deps, mock_env("admin".to_string(), &[], start_block), msg); - let msg = HandleMsg::Receive { + let msg = LPStakingHandleMsg::Receive { sender: HumanAddr("admin".to_string()), from: HumanAddr("admin".to_string()), amount: Uint128(rewards), @@ -1050,7 +1053,7 @@ mod tests { // Make sure all users are fully redeemed for user in users { - let redeem_msg = HandleMsg::Redeem { amount: None }; + let redeem_msg = LPStakingHandleMsg::Redeem { amount: None }; let result = handle(deps, mock_env(user.0, &[], 1_700_000), redeem_msg); total_rewards_output += extract_rewards(result); } @@ -1066,7 +1069,7 @@ mod tests { fn test_claim_pool() { let (init_result, mut deps) = init_helper(10000000); // Claim height is deadline + 1 - let claim_msg = HandleMsg::ClaimRewardPool { to: None }; + let claim_msg = LPStakingHandleMsg::ClaimRewardPool { to: None }; let handle_response = handle(&mut deps, mock_env("not_admin", &[], 10), claim_msg.clone()); assert_eq!( handle_response.unwrap_err(), @@ -1103,7 +1106,7 @@ mod tests { fn test_stop_contract() { let (init_result, mut deps) = init_helper(10000000); - let stop_msg = HandleMsg::StopContract {}; + let stop_msg = LPStakingHandleMsg::StopContract {}; let handle_response = handle(&mut deps, mock_env("not_admin", &[], 10), stop_msg.clone()); assert_eq!( handle_response.unwrap_err(), @@ -1121,7 +1124,7 @@ mod tests { to_binary(&HandleAnswer::StopContract { status: Success }).unwrap() ); - let redeem_msg = HandleMsg::Redeem { amount: None }; + let redeem_msg = LPStakingHandleMsg::Redeem { amount: None }; let handle_response = handle(&mut deps, mock_env("user", &[], 20), redeem_msg); assert_eq!( handle_response.unwrap_err(), @@ -1131,7 +1134,7 @@ mod tests { } ); - let resume_msg = HandleMsg::ResumeContract {}; + let resume_msg = LPStakingHandleMsg::ResumeContract {}; let handle_response = handle(&mut deps, mock_env("admin", &[], 21), resume_msg); let unwrapped_result: HandleAnswer = from_binary(&handle_response.unwrap().data.unwrap()).unwrap(); @@ -1140,7 +1143,7 @@ mod tests { to_binary(&HandleAnswer::ResumeContract { status: Success }).unwrap() ); - let redeem_msg = HandleMsg::Redeem { amount: None }; + let redeem_msg = LPStakingHandleMsg::Redeem { amount: None }; let handle_response = handle(&mut deps, mock_env("user", &[], 20), redeem_msg); let unwrapped_result: HandleAnswer = from_binary(&handle_response.unwrap().data.unwrap()).unwrap(); @@ -1154,7 +1157,7 @@ mod tests { fn test_admin() { let (init_result, mut deps) = init_helper(10000000); - let admin_action_msg = HandleMsg::ChangeAdmin { + let admin_action_msg = LPStakingHandleMsg::ChangeAdmin { address: HumanAddr("not_admin".to_string()), }; let handle_response = handle(&mut deps, mock_env("not_admin", &[], 1), admin_action_msg); @@ -1166,7 +1169,7 @@ mod tests { } ); - let admin_action_msg = HandleMsg::ChangeAdmin { + let admin_action_msg = LPStakingHandleMsg::ChangeAdmin { address: HumanAddr("new_admin".to_string()), }; let handle_response = handle(&mut deps, mock_env("admin", &[], 1), admin_action_msg); @@ -1177,7 +1180,7 @@ mod tests { to_binary(&HandleAnswer::ChangeAdmin { status: Success }).unwrap() ); - let admin_action_msg = HandleMsg::ChangeAdmin { + let admin_action_msg = LPStakingHandleMsg::ChangeAdmin { address: HumanAddr("not_admin".to_string()), }; let handle_response = handle(&mut deps, mock_env("admin", &[], 1), admin_action_msg); @@ -1189,7 +1192,7 @@ mod tests { } ); - let admin_action_msg = HandleMsg::ChangeAdmin { + let admin_action_msg = LPStakingHandleMsg::ChangeAdmin { address: HumanAddr("not_admin".to_string()), }; let handle_response = handle(&mut deps, mock_env("new_admin", &[], 1), admin_action_msg); diff --git a/contracts/lp-staking/src/msg.rs b/contracts/lp-staking/src/msg.rs index b838df0..084a52c 100644 --- a/contracts/lp-staking/src/msg.rs +++ b/contracts/lp-staking/src/msg.rs @@ -14,44 +14,6 @@ pub struct InitMsg { pub prng_seed: Binary, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum HandleMsg { - Redeem { - amount: Option, - }, - CreateViewingKey { - entropy: String, - padding: Option, - }, - SetViewingKey { - key: String, - padding: Option, - }, - EmergencyRedeem {}, - - // Registered commands - Receive { - sender: HumanAddr, - from: HumanAddr, - amount: Uint128, - msg: Binary, - }, - - // Admin commands - SetDeadline { - block: u64, - }, - ClaimRewardPool { - to: Option, - }, - StopContract {}, - ResumeContract {}, - ChangeAdmin { - address: HumanAddr, - }, -} - #[derive(Serialize, Deserialize, JsonSchema, Debug)] #[serde(rename_all = "snake_case")] pub enum HandleAnswer { diff --git a/contracts/weight-master/src/contract.rs b/contracts/weight-master/src/contract.rs index 938733d..98607c4 100644 --- a/contracts/weight-master/src/contract.rs +++ b/contracts/weight-master/src/contract.rs @@ -3,9 +3,11 @@ use cosmwasm_std::{ StdError, StdResult, Storage, Uint128, WasmMsg, }; -use crate::msg::{HandleAnswer, HandleMsg, InitMsg, QueryAnswer, QueryMsg, WeightInfo}; -use crate::state::{config, config_read, sort_schedule, Schedule, SpySettings, State}; -use scrt_finance::callbacks::CallbackMsg::NotifyAllocation; +use crate::msg::{HandleAnswer, InitMsg, QueryAnswer, QueryMsg}; +use crate::state::{config, config_read, State}; +use scrt_finance::master_types::{sort_schedule, Schedule, SpySettings, WeightInfo}; +use scrt_finance::msg::CallbackMsg::NotifyAllocation; +use scrt_finance::msg::MasterHandleMsg; use secret_toolkit::snip20; use secret_toolkit::storage::{TypedStore, TypedStoreMut}; @@ -34,18 +36,18 @@ pub fn init( pub fn handle( deps: &mut Extern, env: Env, - msg: HandleMsg, + msg: MasterHandleMsg, ) -> StdResult { match msg { - HandleMsg::UpdateAllocation { + MasterHandleMsg::UpdateAllocation { spy_addr, spy_hash, hook, } => update_allocation(deps, env, spy_addr, spy_hash, hook), - HandleMsg::SetWeights { weights } => set_weights(deps, env, weights), - HandleMsg::SetSchedule { schedule } => set_schedule(deps, env, schedule), - HandleMsg::SetGovToken { addr, hash } => set_gov_token(deps, env, addr, hash), - HandleMsg::ChangeAdmin { addr } => change_admin(deps, env, addr), + MasterHandleMsg::SetWeights { weights } => set_weights(deps, env, weights), + MasterHandleMsg::SetSchedule { schedule } => set_schedule(deps, env, schedule), + MasterHandleMsg::SetGovToken { addr, hash } => set_gov_token(deps, env, addr, hash), + MasterHandleMsg::ChangeAdmin { addr } => change_admin(deps, env, addr), } } @@ -93,7 +95,7 @@ fn set_weights( rs.load(to_update.address.clone().0.as_bytes()) .unwrap_or(SpySettings { weight: 0, - last_update_block: env.block.height.clone(), + last_update_block: env.block.height, }); // There is no need to update a SPY twice in a block, and there is no need to update a SPY @@ -165,12 +167,10 @@ fn update_allocation( let state = config_read(&deps.storage).load()?; let mut rs = TypedStoreMut::attach(&mut deps.storage); - let mut spy_settings = rs - .load(spy_address.clone().0.as_bytes()) - .unwrap_or(SpySettings { - weight: 0, - last_update_block: env.block.height.clone(), - }); + let mut spy_settings = rs.load(spy_address.0.as_bytes()).unwrap_or(SpySettings { + weight: 0, + last_update_block: env.block.height, + }); let mut rewards = 0; let mut messages = vec![]; @@ -188,7 +188,7 @@ fn update_allocation( None, 1, state.gov_token_hash.clone(), - state.gov_token_addr.clone(), + state.gov_token_addr, )?); spy_settings.last_update_block = env.block.height; @@ -247,7 +247,7 @@ fn change_admin( enforce_admin(state.clone(), env)?; - state.admin = admin_addr.clone(); + state.admin = admin_addr; config(&mut deps.storage).save(&state)?; @@ -323,7 +323,7 @@ fn get_spy_rewards( let mut multiplier = 0; // Going serially assuming that schedule is not a big vector - for u in schedule.clone() { + for u in schedule.to_owned() { if last_update_block < u.end_block { if current_block > u.end_block { multiplier += (u.end_block - last_update_block) as u128 * u.mint_per_block; diff --git a/contracts/weight-master/src/msg.rs b/contracts/weight-master/src/msg.rs index acab385..d998486 100644 --- a/contracts/weight-master/src/msg.rs +++ b/contracts/weight-master/src/msg.rs @@ -1,6 +1,6 @@ -use crate::state::Schedule; -use cosmwasm_std::{Binary, HumanAddr, Uint128}; +use cosmwasm_std::HumanAddr; use schemars::JsonSchema; +use scrt_finance::master_types::Schedule; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] @@ -10,31 +10,6 @@ pub struct InitMsg { pub minting_schedule: Schedule, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum HandleMsg { - UpdateAllocation { - spy_addr: HumanAddr, - spy_hash: String, - hook: Option, - }, - - // Admin commands - SetWeights { - weights: Vec, - }, - SetSchedule { - schedule: Schedule, - }, - SetGovToken { - addr: HumanAddr, - hash: String, - }, - ChangeAdmin { - addr: HumanAddr, - }, -} - #[derive(Serialize, Deserialize, JsonSchema, Debug)] #[serde(rename_all = "snake_case")] pub enum HandleAnswer { @@ -68,10 +43,3 @@ pub enum QueryAnswer { weight: u64, }, } - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct WeightInfo { - pub address: HumanAddr, - pub hash: String, - pub weight: u64, -} diff --git a/contracts/weight-master/src/state.rs b/contracts/weight-master/src/state.rs index b458d47..67ebe73 100644 --- a/contracts/weight-master/src/state.rs +++ b/contracts/weight-master/src/state.rs @@ -3,6 +3,7 @@ use serde::{Deserialize, Serialize}; use cosmwasm_std::{HumanAddr, Storage}; use cosmwasm_storage::{singleton, singleton_read, ReadonlySingleton, Singleton}; +use scrt_finance::master_types::Schedule; pub static CONFIG_KEY: &[u8] = b"config"; @@ -22,21 +23,3 @@ pub fn config(storage: &mut S) -> Singleton { pub fn config_read(storage: &S) -> ReadonlySingleton { singleton_read(storage, CONFIG_KEY) } - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct SpySettings { - pub weight: u64, - pub last_update_block: u64, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema, Copy)] -pub struct ScheduleUnit { - pub end_block: u64, - pub mint_per_block: u128, -} - -pub type Schedule = Vec; - -pub fn sort_schedule(s: &mut Schedule) { - s.sort_by(|&s1, &s2| s1.end_block.cmp(&s2.end_block)) -} diff --git a/packages/scrt-finance/src/callbacks.rs b/packages/scrt-finance/src/callbacks.rs deleted file mode 100644 index 6d202a5..0000000 --- a/packages/scrt-finance/src/callbacks.rs +++ /dev/null @@ -1,12 +0,0 @@ -use cosmwasm_std::{Binary, Uint128}; -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum CallbackMsg { - NotifyAllocation { - amount: Uint128, - hook: Option, - }, -} diff --git a/packages/scrt-finance/src/lib.rs b/packages/scrt-finance/src/lib.rs index a348cc6..3da3c01 100644 --- a/packages/scrt-finance/src/lib.rs +++ b/packages/scrt-finance/src/lib.rs @@ -1,4 +1,5 @@ -pub mod callbacks; +pub mod master_types; +pub mod msg; #[cfg(test)] mod tests { diff --git a/packages/scrt-finance/src/master_types.rs b/packages/scrt-finance/src/master_types.rs new file mode 100644 index 0000000..0b84a05 --- /dev/null +++ b/packages/scrt-finance/src/master_types.rs @@ -0,0 +1,28 @@ +use cosmwasm_std::HumanAddr; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct WeightInfo { + pub address: HumanAddr, + pub hash: String, + pub weight: u64, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct SpySettings { + pub weight: u64, + pub last_update_block: u64, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema, Copy)] +pub struct ScheduleUnit { + pub end_block: u64, + pub mint_per_block: u128, +} + +pub type Schedule = Vec; + +pub fn sort_schedule(s: &mut Schedule) { + s.sort_by(|&s1, &s2| s1.end_block.cmp(&s2.end_block)) +} diff --git a/packages/scrt-finance/src/msg.rs b/packages/scrt-finance/src/msg.rs new file mode 100644 index 0000000..63fa5e6 --- /dev/null +++ b/packages/scrt-finance/src/msg.rs @@ -0,0 +1,76 @@ +use crate::master_types::{Schedule, WeightInfo}; +use cosmwasm_std::{Binary, HumanAddr, Uint128}; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum MasterHandleMsg { + UpdateAllocation { + spy_addr: HumanAddr, + spy_hash: String, + hook: Option, + }, + + // Admin commands + SetWeights { + weights: Vec, + }, + SetSchedule { + schedule: Schedule, + }, + SetGovToken { + addr: HumanAddr, + hash: String, + }, + ChangeAdmin { + addr: HumanAddr, + }, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum LPStakingHandleMsg { + Redeem { + amount: Option, + }, + CreateViewingKey { + entropy: String, + padding: Option, + }, + SetViewingKey { + key: String, + padding: Option, + }, + EmergencyRedeem {}, + + // Registered commands + Receive { + sender: HumanAddr, + from: HumanAddr, + amount: Uint128, + msg: Binary, + }, + + // Admin commands + SetDeadline { + block: u64, + }, + ClaimRewardPool { + to: Option, + }, + StopContract {}, + ResumeContract {}, + ChangeAdmin { + address: HumanAddr, + }, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum CallbackMsg { + NotifyAllocation { + amount: Uint128, + hook: Option, + }, +}