From a8163a976087060978d9d33c9184fb445f9e8050 Mon Sep 17 00:00:00 2001 From: Oleg Nikonychev Date: Sat, 9 Mar 2024 01:15:40 +0400 Subject: [PATCH] feat: deregister vesting for list of accounts (#135) --- artifacts/checksums.txt | 2 + artifacts/core_token_vesting_v2.wasm | Bin 0 -> 219301 bytes contracts/core-token-vesting-v2/README.md | 25 +- .../core-token-vesting-v2/src/contract.rs | 272 ++++-------------- contracts/core-token-vesting-v2/src/msg.rs | 23 +- .../core-token-vesting-v2/src/testing.rs | 115 +++++++- 6 files changed, 203 insertions(+), 234 deletions(-) create mode 100644 artifacts/core_token_vesting_v2.wasm diff --git a/artifacts/checksums.txt b/artifacts/checksums.txt index 8e52fac..2fd54d7 100644 --- a/artifacts/checksums.txt +++ b/artifacts/checksums.txt @@ -1,4 +1,5 @@ 382c05baf544f2886de849933ecf59e8bc3bcdcdd552d5a63537bd6d63f2ecf1 controller.wasm +6cf70cdf7ca010cbeff5fff2ca992ccb6d48fa669baf2b9ee26c8289a926413c core_token_vesting_v2.wasm b56a880d4c67d9f353f549b502256f73159f89b50aa6dae683948e117efa4792 cw3_flex_multisig.wasm 1ecff403bbf3b5fcedccb5de76a0ef5f1fdbcc5f60890e3388f5425584899f0b incentives.wasm dc89ed88f1c69bf63fc284492b7bf6935e3a85da2945067d70f71f08c01df60d lockup.wasm @@ -7,3 +8,4 @@ ef5b4de76526713e3531c3b9bbc4620b5d61599c4a0e8605365ebb0f1d7ee2ac nibi_stargate_ 0074489ff40c8ecbd766f7140b32d288dcaf7302ba630d452f79e7d292ea57ef nusd_valuator.wasm 955592d08017aa41f3c9ba3883153d6de024e8c7a3a79aa3b664a241ec1e7a19 pricefeed.wasm 354fdeff1386394d7aa829358323f89bde548d4aa782bae4a16dddfe33dad739 shifter.wasm +8d982ca2d679ea8d44f825fe91a3d4e0cb92150b12e4684497eee9e76991d247 token_vesting.wasm diff --git a/artifacts/core_token_vesting_v2.wasm b/artifacts/core_token_vesting_v2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..dd361909cb8055ff0714881e0ffcd7f0ed0e2c31 GIT binary patch literal 219301 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

VW8n8PgAL)Jg4fh#NY*tNd-ns-9 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, -left_vesting_token_recipient: Option, + addresses: Vec, }, ``` - DeregisterVestingAccount - deregister vesting account - - It will compute `claimable_amount` and `left_vesting_amount`. Each amount respectively sent to (`vested_token_recipient` or `vesting_account`) - and (`left_vesting_token_recipient` or `master_address`). + - It will compute `claimable_amount` and `left_vesting_amount` and send back to the contract admin. #### By admin only @@ -139,10 +136,10 @@ cat << EOF | jq '.' | tee reward.json } ], "vesting_schedule": { - "linear_vesting": { + "linear_vesting_with_cliff": { "start_time": "1708642800", "end_time": "1708729200", - "vesting_amount": "0" + "cliff_time": "1708642800" } } } @@ -191,4 +188,18 @@ cat << EOF | jq '.' | tee withdraw.json EOF JSON_DATA="$( reward_users(deps, env, info, rewards, vesting_schedule), - ExecuteMsg::DeregisterVestingAccount { - address, - vested_token_recipient, - left_vesting_token_recipient, - } => deregister_vesting_account( - deps, - env, - info, - address, - vested_token_recipient, - left_vesting_token_recipient, - ), + ExecuteMsg::DeregisterVestingAccounts { addresses } => { + deregister_vesting_accounts(deps, env, info, addresses) + } ExecuteMsg::Claim { denoms: _denoms, recipient, @@ -238,23 +229,66 @@ fn register_vesting_account( ])) } -fn deregister_vesting_account( +fn deregister_vesting_accounts( deps: DepsMut, env: Env, info: MessageInfo, - address: String, - vested_token_recipient: Option, - left_vesting_token_recipient: Option, + addresses: Vec, ) -> Result { - let sender = info.sender; + let mut res = vec![]; let whitelist = WHITELIST.load(deps.storage)?; + if !(whitelist.is_member(info.sender.clone()) + || whitelist.is_admin(info.sender.clone())) + { + return Err(StdError::generic_err("Unauthorized").into()); + } + + let mut attrs: Vec = vec![]; + + for address in addresses { + let result = deregister_vesting_account( + deps.storage, + env.block.time.seconds(), + address.clone(), + whitelist.admin.clone(), + ); + + if let Ok(response) = result { + attrs.extend(response.attributes); + res.push(DeregisterUserResponse { + user_address: address.clone(), + success: true, + error_msg: "".to_string(), + }); + } else { + let error = result.err().unwrap(); + res.push(DeregisterUserResponse { + user_address: address.clone(), + success: false, + error_msg: "Failed to deregister vesting account: ".to_string() + + &error.to_string(), + }); + } + } + Ok(Response::new() + .add_attributes(attrs) + .add_attribute("action", "deregister_vesting_accounts") + .set_data(to_json_binary(&res).unwrap())) +} + +fn deregister_vesting_account( + storage: &mut dyn Storage, + timestamp: u64, + address: String, + admin_address: String, +) -> Result { let mut messages: Vec = vec![]; // vesting_account existence check - let account = VESTING_ACCOUNTS.may_load(deps.storage, address.as_str())?; - let denom = DENOM.load(deps.storage)?; + let account = VESTING_ACCOUNTS.may_load(storage, address.as_str())?; + let denom = DENOM.load(storage)?; if account.is_none() { return Err(ContractError::Std(StdError::generic_err(format!( @@ -264,14 +298,10 @@ fn deregister_vesting_account( } let account = account.unwrap(); - if !(whitelist.is_admin(sender.clone()) || whitelist.is_member(sender)) { - return Err(StdError::generic_err("unauthorized").into()); - } - // remove vesting account - VESTING_ACCOUNTS.remove(deps.storage, address.as_str()); + VESTING_ACCOUNTS.remove(storage, address.as_str()); - let vested_amount = account.vested_amount(env.block.time.seconds())?; + let vested_amount = account.vested_amount(timestamp)?; let claimed_amount = account.claimed_amount; // transfer already vested amount to vested_token_recipient and if @@ -281,7 +311,6 @@ fn deregister_vesting_account( &mut messages, claimable_amount, denom.clone(), - vested_token_recipient, address.clone(), )?; @@ -293,8 +322,7 @@ fn deregister_vesting_account( &mut messages, left_vesting_amount, denom, - left_vesting_token_recipient, - whitelist.admin.clone(), + admin_address, )?; Ok(Response::new().add_messages(messages).add_attributes(vec![ @@ -309,16 +337,13 @@ fn deregister_vesting_account( /// /// creates a send message if the amount to send is not zero /// -/// If we provide a recipient, we use it. Otherwise, we use the default_recipient fn send_if_amount_is_not_zero( messages: &mut Vec, amount: Uint128, denom: String, - recipient_option: Option, - default_recipient: String, + recipient: String, ) -> Result<(), ContractError> { if !amount.is_zero() { - let recipient = recipient_option.unwrap_or(default_recipient); let msg_send: CosmosMsg = build_send_msg(denom, amount, recipient)?; messages.push(msg_send); } @@ -454,180 +479,3 @@ fn vesting_account( } } } - -#[cfg(test)] -pub mod tests { - - use super::*; - use anyhow::anyhow; - use cosmwasm_std::{ - coin, - testing::{self, MockApi, MockQuerier, MockStorage}, - Empty, OwnedDeps, Timestamp, Uint64, - }; - - pub type TestResult = Result<(), anyhow::Error>; - - pub fn mock_env_with_time(block_time: u64) -> Env { - let mut env = testing::mock_env(); - env.block.time = Timestamp::from_seconds(block_time); - env - } - - /// Convenience function for instantiating the contract at and setting up - /// the env to have the given block time. - pub fn setup_with_block_time( - block_time: u64, - ) -> anyhow::Result<(OwnedDeps, Env)> - { - let mut deps = testing::mock_dependencies(); - let env = mock_env_with_time(block_time); - instantiate( - deps.as_mut(), - env.clone(), - testing::mock_info("admin-sender", &[coin(5000, "token")]), - InstantiateMsg { - admin: "admin-sender".to_string(), - managers: vec!["manager-sender".to_string()], - }, - )?; - Ok((deps, env)) - } - - #[test] - fn deregister_err_nonexistent_vesting_account() -> TestResult { - let (mut deps, _env) = setup_with_block_time(0)?; - - let msg = ExecuteMsg::DeregisterVestingAccount { - address: "nonexistent".to_string(), - vested_token_recipient: None, - left_vesting_token_recipient: None, - }; - - let res = execute( - deps.as_mut(), - testing::mock_env(), - testing::mock_info("admin-sender", &[]), - msg, - ); - - match res { - Ok(_) => Err(anyhow!("Unexpected result: {:#?}", res)), - Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { - assert!(msg.contains("vesting entry is not found for address")); - Ok(()) - } - Err(err) => Err(anyhow!("Unexpected error: {:#?}", err)), - } - } - - #[test] - fn deregister_err_unauthorized_vesting_account() -> TestResult { - // Set up the environment with a block time before the vesting start time - let (mut deps, env) = setup_with_block_time(50)?; - - let register_msg = ExecuteMsg::RewardUsers { - rewards: vec![RewardUserRequest { - user_address: "addr0001".to_string(), - vesting_amount: Uint128::new(5000u128), - cliff_amount: Uint128::zero(), - }], - vesting_schedule: VestingSchedule::LinearVestingWithCliff { - start_time: Uint64::new(100), - end_time: Uint64::new(110), - cliff_time: Uint64::new(105), - }, - }; - - let res = execute( - deps.as_mut(), - env.clone(), // Use the custom environment with the adjusted block time - testing::mock_info("admin-sender", &[coin(1000000, "token")]), - register_msg, - )?; - assert_eq!( - res.attributes, - vec![ - Attribute { - key: "action".to_string(), - value: "register_vesting_account".to_string() - }, - Attribute { - key: "address".to_string(), - value: "addr0001".to_string() - }, - Attribute { - key: "vesting_amount".to_string(), - value: "5000".to_string() - }, - Attribute { - key: "method".to_string(), - value: "reward_users".to_string() - } - ] - ); - - // Try to deregister with unauthorized sender - let msg = ExecuteMsg::DeregisterVestingAccount { - address: "addr0001".to_string(), - vested_token_recipient: None, - left_vesting_token_recipient: None, - }; - - let res = execute( - deps.as_mut(), - env, // Use the custom environment with the adjusted block time - testing::mock_info("addr0003", &[]), - msg, - ); - match res { - Err(ContractError::Std(StdError::GenericErr { msg, .. })) - if msg == "unauthorized" => {} - _ => return Err(anyhow!("Unexpected result: {:?}", res)), - } - - Ok(()) - } - - #[test] - fn deregister_successful() -> TestResult { - // Set up the environment with a block time before the vesting start time - let (mut deps, env) = setup_with_block_time(50)?; - - let register_msg = ExecuteMsg::RewardUsers { - rewards: vec![RewardUserRequest { - user_address: "addr0001".to_string(), - vesting_amount: Uint128::new(5000u128), - cliff_amount: Uint128::zero(), - }], - vesting_schedule: VestingSchedule::LinearVestingWithCliff { - start_time: Uint64::new(100), - end_time: Uint64::new(110), - cliff_time: Uint64::new(105), - }, - }; - - execute( - deps.as_mut(), - env.clone(), // Use the custom environment with the adjusted block time - testing::mock_info("admin-sender", &[]), - register_msg, - )?; - - // Deregister with the manager address - let msg = ExecuteMsg::DeregisterVestingAccount { - address: "addr0001".to_string(), - vested_token_recipient: None, - left_vesting_token_recipient: None, - }; - - let _res = execute( - deps.as_mut(), - env, // Use the custom environment with the adjusted block time - testing::mock_info("manager-sender", &[]), - msg, - )?; - - Ok(()) - } -} diff --git a/contracts/core-token-vesting-v2/src/msg.rs b/contracts/core-token-vesting-v2/src/msg.rs index fe38f6b..91719a9 100644 --- a/contracts/core-token-vesting-v2/src/msg.rs +++ b/contracts/core-token-vesting-v2/src/msg.rs @@ -24,18 +24,12 @@ pub enum ExecuteMsg { vesting_schedule: VestingSchedule, }, - /// A creator operation that unregisters a vesting account. + /// A creator operation that unregisters a vesting account + /// and transfers the rest of tokens back to contract admin. /// Args: - /// - address: String: Bech 32 address of the owner of vesting account. - /// - denom: Denom: The denomination of the tokens vested. - /// - vested_token_recipient: Option: Bech 32 address that will receive the vested - /// tokens after deregistration. If None, tokens are received by the owner address. - /// - left_vesting_token_recipient: Option: Bech 32 address that will receive the left - /// vesting tokens after deregistration. - DeregisterVestingAccount { - address: String, - vested_token_recipient: Option, - left_vesting_token_recipient: Option, + /// - addresses: Vec: Bech 32 addresses of the owners of vesting accounts. + DeregisterVestingAccounts { + addresses: Vec, }, /// Claim is an operation that allows one to claim vested tokens. @@ -82,6 +76,13 @@ pub struct RewardUserResponse { pub error_msg: String, } +#[cw_serde] +pub struct DeregisterUserResponse { + pub user_address: String, + pub success: bool, + pub error_msg: String, +} + /// Enum representing the message types for the query entry point. #[cw_serde] pub enum QueryMsg { diff --git a/contracts/core-token-vesting-v2/src/testing.rs b/contracts/core-token-vesting-v2/src/testing.rs index 64d27a7..da589e8 100644 --- a/contracts/core-token-vesting-v2/src/testing.rs +++ b/contracts/core-token-vesting-v2/src/testing.rs @@ -1,14 +1,13 @@ -use crate::contract::tests::TestResult; use crate::contract::{execute, instantiate, query}; use crate::errors::{ContractError, VestingError}; use crate::msg::{ - ExecuteMsg, InstantiateMsg, QueryMsg, RewardUserRequest, - VestingAccountResponse, VestingData, VestingSchedule, + DeregisterUserResponse, ExecuteMsg, InstantiateMsg, QueryMsg, + RewardUserRequest, VestingAccountResponse, VestingData, VestingSchedule, VestingScheduleQueryOutput, }; use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage}; -use cosmwasm_std::{coin, MessageInfo}; +use cosmwasm_std::{coin, testing, Empty, MessageInfo}; use cosmwasm_std::{ from_json, testing::{mock_dependencies, mock_env, mock_info}, @@ -16,6 +15,33 @@ use cosmwasm_std::{ Timestamp, Uint128, Uint64, }; +pub type TestResult = Result<(), anyhow::Error>; + +pub fn mock_env_with_time(block_time: u64) -> Env { + let mut env = testing::mock_env(); + env.block.time = Timestamp::from_seconds(block_time); + env +} + +/// Convenience function for instantiating the contract at and setting up +/// the env to have the given block time. +pub fn setup_with_block_time( + block_time: u64, +) -> anyhow::Result<(OwnedDeps, Env)> { + let mut deps = testing::mock_dependencies(); + let env = mock_env_with_time(block_time); + instantiate( + deps.as_mut(), + env.clone(), + testing::mock_info("admin-sender", &[coin(5000, "token")]), + InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec!["manager-sender".to_string()], + }, + )?; + Ok((deps, env)) +} + #[test] fn proper_initialization() -> TestResult { let mut deps = mock_dependencies(); @@ -868,3 +894,84 @@ fn claim_native() -> TestResult { Ok(()) } + +#[test] +fn deregister_err_nonexistent_vesting_account() -> TestResult { + let (mut deps, env) = setup_with_block_time(50)?; + + let msg = ExecuteMsg::DeregisterVestingAccounts { + addresses: vec!["nonexistent".to_string()], + }; + let res = execute( + deps.as_mut(), + env, // Use the custom environment with the adjusted block time + testing::mock_info("manager-sender", &[]), + msg, + )?; + let response_items: Vec = + from_json(res.data.unwrap()).unwrap(); + assert!(!response_items[0].success); + let error_msg = response_items[0].clone().error_msg; + if !error_msg.contains("not found") { + panic!("Unexpected error message {error_msg:?}") + } + Ok(()) +} + +#[test] +fn deregister_err_unauthorized_vesting_account() -> TestResult { + // Set up the environment with a block time before the vesting start time + let (mut deps, env) = setup_with_block_time(50)?; + + // Try to deregister with unauthorized sender + let msg = ExecuteMsg::DeregisterVestingAccounts { + addresses: vec!["addr0001".to_string()], + }; + require_error( + &mut deps, + &env, + mock_info("addr0042", &[]), + msg, + StdError::generic_err("Unauthorized").into(), + ); + Ok(()) +} + +#[test] +fn deregister_successful() -> TestResult { + // Set up the environment with a block time before the vesting start time + let (mut deps, env) = setup_with_block_time(50)?; + + let register_msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(5000u128), + cliff_amount: Uint128::zero(), + }], + vesting_schedule: VestingSchedule::LinearVestingWithCliff { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + cliff_time: Uint64::new(105), + }, + }; + + execute( + deps.as_mut(), + env.clone(), // Use the custom environment with the adjusted block time + testing::mock_info("admin-sender", &[]), + register_msg, + )?; + + // Deregister with the manager address + let msg = ExecuteMsg::DeregisterVestingAccounts { + addresses: vec!["addr0001".to_string()], + }; + + let _res = execute( + deps.as_mut(), + env, // Use the custom environment with the adjusted block time + testing::mock_info("manager-sender", &[]), + msg, + )?; + Ok(()) +}