From deb4d4ad9dcb4fda5c51c3ef87254b018c8ba7d0 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Fri, 31 Mar 2023 19:13:43 +1300 Subject: [PATCH 1/8] add gas_target optional fields to utilize evaporation api --- src/contract.rs | 6 ++-- src/msg.rs | 87 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 89 insertions(+), 4 deletions(-) diff --git a/src/contract.rs b/src/contract.rs index 6b803f47..5fd2b181 100644 --- a/src/contract.rs +++ b/src/contract.rs @@ -13,7 +13,7 @@ use secret_toolkit_crypto::{sha_256, Prng, SHA256_HASH_SIZE}; use crate::batch; use crate::msg::QueryWithPermit; use crate::msg::{ - ContractStatusLevel, Decoyable, ExecuteAnswer, ExecuteMsg, InstantiateMsg, QueryAnswer, + ContractStatusLevel, Decoyable, Evaporator, ExecuteAnswer, ExecuteMsg, InstantiateMsg, QueryAnswer, QueryMsg, ResponseStatus::Success, }; use crate::receiver::Snip20ReceiveMsg; @@ -374,7 +374,9 @@ pub fn execute(deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg) -> S } }; - pad_handle_result(response, RESPONSE_BLOCK_SIZE) + let padded_result = pad_handle_result(response, RESPONSE_BLOCK_SIZE); + msg.evaporate_to_target(deps.api)?; + padded_result } #[entry_point] diff --git a/src/msg.rs b/src/msg.rs index 974e35b5..54cb8e53 100644 --- a/src/msg.rs +++ b/src/msg.rs @@ -95,11 +95,13 @@ pub enum ExecuteMsg { denom: Option, decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, Deposit { decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, @@ -110,6 +112,7 @@ pub enum ExecuteMsg { memo: Option, decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, Send { @@ -120,16 +123,19 @@ pub enum ExecuteMsg { memo: Option, decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, BatchTransfer { actions: Vec, entropy: Option, + gas_target: Option, padding: Option, }, BatchSend { actions: Vec, entropy: Option, + gas_target: Option, padding: Option, }, Burn { @@ -137,18 +143,22 @@ pub enum ExecuteMsg { memo: Option, decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, RegisterReceive { code_hash: String, + gas_target: Option, padding: Option, }, CreateViewingKey { entropy: String, + gas_target: Option, padding: Option, }, SetViewingKey { key: String, + gas_target: Option, padding: Option, }, @@ -157,12 +167,14 @@ pub enum ExecuteMsg { spender: String, amount: Uint128, expiration: Option, + gas_target: Option, padding: Option, }, DecreaseAllowance { spender: String, amount: Uint128, expiration: Option, + gas_target: Option, padding: Option, }, TransferFrom { @@ -172,6 +184,7 @@ pub enum ExecuteMsg { memo: Option, decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, SendFrom { @@ -183,16 +196,19 @@ pub enum ExecuteMsg { memo: Option, decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, BatchTransferFrom { actions: Vec, entropy: Option, + gas_target: Option, padding: Option, }, BatchSendFrom { actions: Vec, entropy: Option, + gas_target: Option, padding: Option, }, BurnFrom { @@ -201,11 +217,13 @@ pub enum ExecuteMsg { memo: Option, decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, BatchBurnFrom { actions: Vec, entropy: Option, + gas_target: Option, padding: Option, }, @@ -216,43 +234,57 @@ pub enum ExecuteMsg { memo: Option, decoys: Option>, entropy: Option, + gas_target: Option, padding: Option, }, BatchMint { actions: Vec, entropy: Option, + gas_target: Option, padding: Option, }, AddMinters { minters: Vec, + gas_target: Option, padding: Option, }, RemoveMinters { minters: Vec, + gas_target: Option, padding: Option, }, SetMinters { minters: Vec, + gas_target: Option, padding: Option, }, // Admin ChangeAdmin { address: String, + gas_target: Option, padding: Option, }, SetContractStatus { level: ContractStatusLevel, + gas_target: Option, padding: Option, }, /// Add deposit/redeem support for these coin denoms - AddSupportedDenoms { denoms: Vec }, + AddSupportedDenoms { + denoms: Vec, + gas_target: Option, + }, /// Remove deposit/redeem support for these coin denoms - RemoveSupportedDenoms { denoms: Vec }, + RemoveSupportedDenoms { + denoms: Vec, + gas_target: Option, + }, // Permit RevokePermit { permit_name: String, + gas_target: Option, padding: Option, }, } @@ -329,6 +361,57 @@ fn get_min_decoys_count(actions: &[T]) -> usize { } } +pub trait Evaporator { + fn evaporate_to_target(&self, api: &dyn Api) -> StdResult<()>; +} + +impl Evaporator for ExecuteMsg { + fn evaporate_to_target(&self, api: &dyn Api) -> StdResult<()> { + match self { + ExecuteMsg::Redeem { gas_target, .. } | + ExecuteMsg::Deposit { gas_target, .. } | + ExecuteMsg::Transfer { gas_target, .. } | + ExecuteMsg::Send {gas_target, .. } | + ExecuteMsg::BatchTransfer { gas_target, .. } | + ExecuteMsg::BatchSend { gas_target, .. } | + ExecuteMsg::Burn { gas_target, .. } | + ExecuteMsg::RegisterReceive { gas_target, .. } | + ExecuteMsg::CreateViewingKey { gas_target, .. } | + ExecuteMsg::SetViewingKey { gas_target, .. } | + ExecuteMsg::IncreaseAllowance { gas_target, .. } | + ExecuteMsg::DecreaseAllowance { gas_target, .. } | + ExecuteMsg::TransferFrom { gas_target, .. } | + ExecuteMsg::SendFrom { gas_target, .. } | + ExecuteMsg::BatchTransferFrom { gas_target, .. } | + ExecuteMsg::BatchSendFrom { gas_target, .. } | + ExecuteMsg::BurnFrom { gas_target, .. } | + ExecuteMsg::BatchBurnFrom { gas_target, .. } | + ExecuteMsg::Mint { gas_target, .. } | + ExecuteMsg::BatchMint { gas_target, .. } | + ExecuteMsg::AddMinters { gas_target, .. } | + ExecuteMsg::RemoveMinters { gas_target, .. } | + ExecuteMsg::SetMinters { gas_target, .. } | + ExecuteMsg::ChangeAdmin { gas_target, .. } | + ExecuteMsg::SetContractStatus { gas_target, .. } | + ExecuteMsg::AddSupportedDenoms { gas_target, .. } | + ExecuteMsg::RemoveSupportedDenoms { gas_target, .. } | + ExecuteMsg::RevokePermit { gas_target, .. } => { + match gas_target { + Some(gas_target) => { + let gas_used = api.check_gas()? as u32; + if gas_used < *gas_target { + let evaporate_amount = gas_target - gas_used; + api.gas_evaporate(evaporate_amount)?; + } + Ok(()) + } + None => Ok(()) + } + } + } + } +} + #[derive(Serialize, Deserialize, JsonSchema, Debug)] #[serde(rename_all = "snake_case")] pub enum ExecuteAnswer { From b3612ae41794aec1a133136718be5fb473556881 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Sun, 4 Feb 2024 08:22:38 +1300 Subject: [PATCH 2/8] add gas_target to tests --- src/contract.rs | 119 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/src/contract.rs b/src/contract.rs index d8af71e3..a5855767 100644 --- a/src/contract.rs +++ b/src/contract.rs @@ -13,7 +13,7 @@ use secret_toolkit_crypto::{sha_256, Prng, SHA256_HASH_SIZE}; use crate::batch; use crate::msg::{ AllowanceGivenResult, AllowanceReceivedResult, ContractStatusLevel, Decoyable, Evaporator, ExecuteAnswer, - ExecuteMsg, InstantiateMsg, QueryAnswer, QueryMsg, ResponseStatus::Success, + ExecuteMsg, InstantiateMsg, QueryAnswer, QueryMsg, QueryWithPermit, ResponseStatus::Success, }; use crate::receiver::Snip20ReceiveMsg; use crate::state::{ @@ -2351,6 +2351,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -2371,6 +2372,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -2416,6 +2418,7 @@ mod tests { memo: None, decoys: Some(vec![lior_addr.clone(), jhon_addr.clone()]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; @@ -2452,6 +2455,7 @@ mod tests { let handle_msg = ExecuteMsg::RegisterReceive { code_hash: "this_is_a_hash_of_a_code".to_string(), + gas_target: None, padding: None, }; let info = mock_info("contract", &[]); @@ -2469,6 +2473,7 @@ mod tests { padding: None, msg: Some(to_binary("hey hey you you").unwrap()), decoys: None, + gas_target: None, entropy: None, }; let info = mock_info("bob", &[]); @@ -2517,6 +2522,7 @@ mod tests { let handle_msg = ExecuteMsg::RegisterReceive { code_hash: "this_is_a_hash_of_a_code".to_string(), + gas_target: None, padding: None, }; let info = mock_info("contract", &[]); @@ -2547,6 +2553,7 @@ mod tests { let handle_msg = ExecuteMsg::CreateViewingKey { entropy: "".to_string(), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -2588,6 +2595,7 @@ mod tests { // Set VK let handle_msg = ExecuteMsg::SetViewingKey { key: "hi lol".to_string(), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -2608,6 +2616,7 @@ mod tests { let actual_vk = "x".to_string().repeat(VIEWING_KEY_SIZE); let handle_msg = ExecuteMsg::SetViewingKey { key: actual_vk.clone(), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -2632,6 +2641,7 @@ mod tests { ) -> Result { let handle_msg = ExecuteMsg::RevokePermit { permit_name: permit_name.to_string(), + gas_target: None, padding: None, }; let info = mock_info(user_address, &[]); @@ -2841,6 +2851,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -2855,6 +2866,7 @@ mod tests { spender: "alice".to_string(), amount: Uint128::new(2000), padding: None, + gas_target: None, expiration: Some(1_571_797_420), }; let info = mock_info("bob", &[]); @@ -2873,6 +2885,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -2890,6 +2903,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; @@ -2926,6 +2940,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -2955,6 +2970,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -2987,6 +3003,7 @@ mod tests { msg: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3001,6 +3018,7 @@ mod tests { spender: "alice".to_string(), amount: Uint128::new(2000), padding: None, + gas_target: None, expiration: None, }; let info = mock_info("bob", &[]); @@ -3021,6 +3039,7 @@ mod tests { msg: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3033,6 +3052,7 @@ mod tests { // Sanity check let handle_msg = ExecuteMsg::RegisterReceive { code_hash: "lolz".to_string(), + gas_target: None, padding: None, }; let info = mock_info("contract", &[]); @@ -3061,6 +3081,7 @@ mod tests { msg: Some(send_msg), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3100,6 +3121,7 @@ mod tests { msg: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3146,6 +3168,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3162,6 +3185,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3175,6 +3199,7 @@ mod tests { let handle_msg = ExecuteMsg::IncreaseAllowance { spender: "alice".to_string(), amount: Uint128::new(2000), + gas_target: None, padding: None, expiration: None, }; @@ -3193,6 +3218,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3209,6 +3235,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3233,6 +3260,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3295,6 +3323,7 @@ mod tests { let handle_msg = ExecuteMsg::BatchBurnFrom { actions, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3322,6 +3351,7 @@ mod tests { spender: "alice".to_string(), amount: Uint128::new(allowance_size), padding: None, + gas_target: None, expiration: None, }; let info = mock_info(*name, &[]); @@ -3338,6 +3368,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3362,6 +3393,7 @@ mod tests { let handle_msg = ExecuteMsg::BatchBurnFrom { actions, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3395,6 +3427,7 @@ mod tests { let handle_msg = ExecuteMsg::BatchBurnFrom { actions, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3427,6 +3460,7 @@ mod tests { let handle_msg = ExecuteMsg::BatchBurnFrom { actions, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -3452,6 +3486,7 @@ mod tests { let handle_msg = ExecuteMsg::DecreaseAllowance { spender: "alice".to_string(), amount: Uint128::new(2000), + gas_target: None, padding: None, expiration: None, }; @@ -3480,6 +3515,7 @@ mod tests { let handle_msg = ExecuteMsg::IncreaseAllowance { spender: "alice".to_string(), amount: Uint128::new(2000), + gas_target: None, padding: None, expiration: None, }; @@ -3496,6 +3532,7 @@ mod tests { let handle_msg = ExecuteMsg::DecreaseAllowance { spender: "alice".to_string(), amount: Uint128::new(50), + gas_target: None, padding: None, expiration: None, }; @@ -3534,6 +3571,7 @@ mod tests { let handle_msg = ExecuteMsg::IncreaseAllowance { spender: "alice".to_string(), amount: Uint128::new(2000), + gas_target: None, padding: None, expiration: None, }; @@ -3562,6 +3600,7 @@ mod tests { let handle_msg = ExecuteMsg::IncreaseAllowance { spender: "alice".to_string(), amount: Uint128::new(2000), + gas_target: None, padding: None, expiration: None, }; @@ -3599,6 +3638,7 @@ mod tests { let handle_msg = ExecuteMsg::ChangeAdmin { address: "bob".to_string(), + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -3629,6 +3669,7 @@ mod tests { let handle_msg = ExecuteMsg::SetContractStatus { level: ContractStatusLevel::StopAll, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -3701,6 +3742,7 @@ mod tests { denom: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("butler", &[]); @@ -3716,6 +3758,7 @@ mod tests { denom: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("butler", &[]); @@ -3734,6 +3777,7 @@ mod tests { denom: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("butler", &[]); @@ -3752,6 +3796,7 @@ mod tests { denom: Option::from("uscrt".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("butler", &[]); @@ -3801,6 +3846,7 @@ mod tests { let handle_msg = ExecuteMsg::Deposit { decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info( @@ -3818,6 +3864,7 @@ mod tests { let handle_msg = ExecuteMsg::Deposit { decoys: None, entropy: None, + gas_target: None, padding: None, }; @@ -3875,6 +3922,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("lebron", &[]); @@ -3891,6 +3939,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("lebron", &[]); @@ -3943,6 +3992,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -3960,6 +4010,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -3999,6 +4050,7 @@ mod tests { let pause_msg = ExecuteMsg::SetContractStatus { level: ContractStatusLevel::StopAllButRedeems, + gas_target: None, padding: None, }; let info = mock_info("not_admin", &[]); @@ -4010,6 +4062,7 @@ mod tests { let mint_msg = ExecuteMsg::AddMinters { minters: vec!["not_admin".to_string()], + gas_target: None, padding: None, }; let info = mock_info("not_admin", &[]); @@ -4021,6 +4074,7 @@ mod tests { let mint_msg = ExecuteMsg::RemoveMinters { minters: vec!["admin".to_string()], + gas_target: None, padding: None, }; let info = mock_info("not_admin", &[]); @@ -4032,6 +4086,7 @@ mod tests { let mint_msg = ExecuteMsg::SetMinters { minters: vec!["not_admin".to_string()], + gas_target: None, padding: None, }; let info = mock_info("not_admin", &[]); @@ -4043,6 +4098,7 @@ mod tests { let change_admin_msg = ExecuteMsg::ChangeAdmin { address: "not_admin".to_string(), + gas_target: None, padding: None, }; let info = mock_info("not_admin", &[]); @@ -4075,6 +4131,7 @@ mod tests { let pause_msg = ExecuteMsg::SetContractStatus { level: ContractStatusLevel::StopAllButRedeems, + gas_target: None, padding: None, }; @@ -4094,6 +4151,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4111,6 +4169,7 @@ mod tests { denom: Option::from("uscrt".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("lebron", &[]); @@ -4138,6 +4197,7 @@ mod tests { let pause_msg = ExecuteMsg::SetContractStatus { level: ContractStatusLevel::StopAll, + gas_target: None, padding: None, }; @@ -4157,6 +4217,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4174,6 +4235,7 @@ mod tests { denom: Option::from("uscrt".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("lebron", &[]); @@ -4218,6 +4280,7 @@ mod tests { // try when mint disabled let handle_msg = ExecuteMsg::SetMinters { minters: vec!["bob".to_string()], + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4229,6 +4292,7 @@ mod tests { let handle_msg = ExecuteMsg::SetMinters { minters: vec!["bob".to_string()], + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -4240,6 +4304,7 @@ mod tests { let handle_msg = ExecuteMsg::SetMinters { minters: vec!["bob".to_string()], + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4254,6 +4319,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -4268,6 +4334,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4309,6 +4376,7 @@ mod tests { // try when mint disabled let handle_msg = ExecuteMsg::AddMinters { minters: vec!["bob".to_string()], + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4320,6 +4388,7 @@ mod tests { let handle_msg = ExecuteMsg::AddMinters { minters: vec!["bob".to_string()], + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -4331,6 +4400,7 @@ mod tests { let handle_msg = ExecuteMsg::AddMinters { minters: vec!["bob".to_string()], + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4345,6 +4415,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -4359,6 +4430,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4399,6 +4471,7 @@ mod tests { // try when mint disabled let handle_msg = ExecuteMsg::RemoveMinters { minters: vec!["bob".to_string()], + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4410,6 +4483,7 @@ mod tests { let handle_msg = ExecuteMsg::RemoveMinters { minters: vec!["admin".to_string()], + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -4421,6 +4495,7 @@ mod tests { let handle_msg = ExecuteMsg::RemoveMinters { minters: vec!["admin".to_string()], + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4435,6 +4510,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -4450,6 +4526,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4462,6 +4539,7 @@ mod tests { // Removing another extra time to ensure nothing funky happens let handle_msg = ExecuteMsg::RemoveMinters { minters: vec!["admin".to_string()], + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4476,6 +4554,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -4491,6 +4570,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -4528,6 +4608,7 @@ mod tests { let create_vk_msg = ExecuteMsg::CreateViewingKey { entropy: "34".to_string(), + gas_target: None, padding: None, }; let info = mock_info("giannis", &[]); @@ -4934,6 +5015,7 @@ mod tests { let handle_msg = ExecuteMsg::IncreaseAllowance { spender: "lebron".to_string(), amount: Uint128::new(2000), + gas_target: None, padding: None, expiration: None, }; @@ -4966,6 +5048,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: vk1.clone(), + gas_target: None, padding: None, }; let info = mock_info("lebron", &[]); @@ -4984,6 +5067,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: vk2.clone(), + gas_target: None, padding: None, }; let info = mock_info("giannis", &[]); @@ -5059,6 +5143,7 @@ mod tests { for i in 0..num_owners { let handle_msg = ExecuteMsg::SetViewingKey { key: vk.clone(), + gas_target: None, padding: None, }; let info = mock_info(format!("owner{}", i).as_str(), &[]); @@ -5081,6 +5166,7 @@ mod tests { let handle_msg = ExecuteMsg::IncreaseAllowance { spender: format!("spender{}", j), amount: Uint128::new(50), + gas_target: None, padding: None, expiration: None, }; @@ -5095,6 +5181,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: vk.clone(), + gas_target: None, padding: None, }; let info = mock_info(format!("spender{}", j).as_str(), &[]); @@ -5280,6 +5367,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5330,6 +5418,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5344,6 +5433,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5358,6 +5448,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5372,6 +5463,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5460,6 +5552,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5469,6 +5562,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "alice_key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -5478,6 +5572,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "lior_key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("lior", &[]); @@ -5487,6 +5582,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "banana_key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("banana", &[]); @@ -5510,6 +5606,7 @@ mod tests { ]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5524,6 +5621,7 @@ mod tests { memo: None, decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5670,6 +5768,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5683,6 +5782,7 @@ mod tests { memo: Some("my burn message".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5700,6 +5800,7 @@ mod tests { denom: Option::from("uscrt".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5718,6 +5819,7 @@ mod tests { memo: Some("my mint message".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -5729,6 +5831,7 @@ mod tests { let handle_msg = ExecuteMsg::Deposit { decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info( @@ -5752,6 +5855,7 @@ mod tests { memo: Some("my transfer message #1".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5767,6 +5871,7 @@ mod tests { memo: Some("my transfer message #2".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5782,6 +5887,7 @@ mod tests { memo: Some("my transfer message #3".to_string()), decoys: None, entropy: None, + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5964,6 +6070,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -5973,6 +6080,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "alice_key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("alice", &[]); @@ -5982,6 +6090,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "lior_key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("lior", &[]); @@ -5991,6 +6100,7 @@ mod tests { let handle_msg = ExecuteMsg::SetViewingKey { key: "jhon_key".to_string(), + gas_target: None, padding: None, }; let info = mock_info("jhon", &[]); @@ -6012,6 +6122,7 @@ mod tests { alice_addr.clone(), ]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -6033,6 +6144,7 @@ mod tests { alice_addr.clone(), ]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -6055,6 +6167,7 @@ mod tests { alice_addr.clone(), ]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; let info = mock_info("admin", &[]); @@ -6070,6 +6183,7 @@ mod tests { alice_addr.clone(), ]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; let info = mock_info( @@ -6097,6 +6211,7 @@ mod tests { alice_addr.clone(), ]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -6116,6 +6231,7 @@ mod tests { alice_addr.clone(), ]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); @@ -6135,6 +6251,7 @@ mod tests { alice_addr.clone(), ]), entropy: Some(Binary::from_base64("VEVTVFRFU1RURVNUQ0hFQ0tDSEVDSw==").unwrap()), + gas_target: None, padding: None, }; let info = mock_info("bob", &[]); From 8bd58538aa2e0e630c17d4c085713522352eb411 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Sun, 4 Feb 2024 12:41:43 +1300 Subject: [PATCH 3/8] update secret-cosmwasm-std, secret-cosmwasm-storage, secret-toolit version # --- Cargo.lock | 215 ++++++++++++++++++++++++++---------------------- Cargo.toml | 16 ++-- src/contract.rs | 10 ++- 3 files changed, 127 insertions(+), 114 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e3ff6b2..bb4533d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,6 +77,15 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -89,22 +98,11 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" -[[package]] -name = "cosmwasm-crypto" -version = "1.1.9" -source = "git+https://github.com/scrtlabs/cosmwasm/?tag=v1.1.9-secret#e40a15f04dae80680dbe22aef760e5eaab6b0a19" -dependencies = [ - "digest 0.10.6", - "ed25519-zebra", - "k256", - "rand_core 0.6.4", - "thiserror", -] - [[package]] name = "cosmwasm-derive" -version = "1.1.9" -source = "git+https://github.com/scrtlabs/cosmwasm/?tag=v1.1.9-secret#e40a15f04dae80680dbe22aef760e5eaab6b0a19" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5e72e330bd3bdab11c52b5ecbdeb6a8697a004c57964caeb5d876f0b088b3c" dependencies = [ "syn 1.0.109", ] @@ -133,33 +131,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "cosmwasm-std" -version = "1.1.9" -source = "git+https://github.com/scrtlabs/cosmwasm/?tag=v1.1.9-secret#e40a15f04dae80680dbe22aef760e5eaab6b0a19" -dependencies = [ - "base64 0.13.1", - "cosmwasm-crypto", - "cosmwasm-derive", - "derivative", - "forward_ref", - "hex", - "schemars", - "serde", - "serde-json-wasm", - "thiserror", - "uint", -] - -[[package]] -name = "cosmwasm-storage" -version = "1.1.9" -source = "git+https://github.com/scrtlabs/cosmwasm/?tag=v1.1.9-secret#e40a15f04dae80680dbe22aef760e5eaab6b0a19" -dependencies = [ - "cosmwasm-std", - "serde", -] - [[package]] name = "cpufeatures" version = "0.2.5" @@ -430,18 +401,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.52" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.26" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -482,13 +453,13 @@ dependencies = [ [[package]] name = "remain" -version = "0.2.7" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4b7d9b4676922ecbbad6d317e0f847762c4b28b935a2db3b44bd4f36c1aa7f" +checksum = "1ad5e011230cad274d0532460c5ab69828ea47ae75681b42a841663efffaf794" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] @@ -555,16 +526,75 @@ dependencies = [ "zeroize", ] +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] + +[[package]] +name = "secret-cosmwasm-crypto" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8535d61c88d0a6c222df2cebb69859d8e9ba419a299a1bc84c904b0d9c00c7b2" +dependencies = [ + "digest 0.10.6", + "ed25519-zebra", + "k256", + "rand_core 0.6.4", + "thiserror", +] + +[[package]] +name = "secret-cosmwasm-std" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e4393b01aa6587007161a6bb193859deaa8165ab06c8a35f253d329ff99e4d" +dependencies = [ + "base64 0.13.1", + "cosmwasm-derive", + "derivative", + "forward_ref", + "hex", + "schemars", + "secret-cosmwasm-crypto", + "serde", + "serde-json-wasm", + "thiserror", + "uint", +] + +[[package]] +name = "secret-cosmwasm-storage" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb43da2cb72a53b16ea1555bca794fb828b48ab24ebeb45f8e26f1881c45a783" +dependencies = [ + "secret-cosmwasm-std", + "serde", +] + [[package]] name = "secret-toolkit" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338c972c0a98de51ccbb859312eb7672bc64b9050b086f058748ba26a509edbb" dependencies = [ "secret-toolkit-crypto", "secret-toolkit-permit", "secret-toolkit-serialization", - "secret-toolkit-snip20", - "secret-toolkit-snip721", "secret-toolkit-storage", "secret-toolkit-utils", "secret-toolkit-viewing-key", @@ -572,93 +602,78 @@ dependencies = [ [[package]] name = "secret-toolkit-crypto" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003d7d5772c67f2240b7f298f96eb73a8a501916fe18c1d730ebfd591bf7e519" dependencies = [ - "cosmwasm-std", "rand_chacha", "rand_core 0.6.4", + "secp256k1", + "secret-cosmwasm-std", "sha2 0.10.6", ] [[package]] name = "secret-toolkit-permit" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4330571400b5959450fa37040609e6804a147d83f606783506bc2275f1527712" dependencies = [ "bech32", - "cosmwasm-std", "remain", "ripemd", "schemars", + "secret-cosmwasm-std", "secret-toolkit-crypto", "serde", ] [[package]] name = "secret-toolkit-serialization" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "890adaeaa710f9f7068a807eb1553edc8c30ce9907290895c9097dd642fc613b" dependencies = [ "bincode2", - "cosmwasm-std", - "schemars", - "serde", -] - -[[package]] -name = "secret-toolkit-snip20" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" -dependencies = [ - "cosmwasm-std", - "schemars", - "secret-toolkit-utils", - "serde", -] - -[[package]] -name = "secret-toolkit-snip721" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" -dependencies = [ - "cosmwasm-std", "schemars", - "secret-toolkit-utils", + "secret-cosmwasm-std", "serde", ] [[package]] name = "secret-toolkit-storage" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55e8c5418af3e7ae1d1331c383b32d56c74a340dbc3b972d53555a768698f2a3" dependencies = [ - "cosmwasm-std", - "cosmwasm-storage", + "secret-cosmwasm-std", + "secret-cosmwasm-storage", "secret-toolkit-serialization", "serde", ] [[package]] name = "secret-toolkit-utils" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f1cba2e70fd701e3dfc6072807c02eeeb9776bee49e346a9c7745d84ff40c8" dependencies = [ - "cosmwasm-std", - "cosmwasm-storage", "schemars", + "secret-cosmwasm-std", + "secret-cosmwasm-storage", "serde", ] [[package]] name = "secret-toolkit-viewing-key" -version = "0.8.0" -source = "git+https://github.com/scrtlabs/secret-toolkit?rev=9b74bdac71c2fedcc12246f18cdfdd94b8991282#9b74bdac71c2fedcc12246f18cdfdd94b8991282" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d89a0b69fa9b12735a612fa30e6e7e48130943982f1783b7ddd5c46ed09e921" dependencies = [ "base64 0.21.0", - "cosmwasm-std", - "cosmwasm-storage", "schemars", + "secret-cosmwasm-std", + "secret-cosmwasm-storage", "secret-toolkit-crypto", "secret-toolkit-utils", "serde", @@ -691,7 +706,7 @@ checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.48", ] [[package]] @@ -756,10 +771,10 @@ version = "1.0.0" dependencies = [ "base64 0.21.0", "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", "rand", "schemars", + "secret-cosmwasm-std", + "secret-cosmwasm-storage", "secret-toolkit", "secret-toolkit-crypto", "serde", @@ -800,9 +815,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.4" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c622ae390c9302e214c31013517c2061ecb2699935882c60a9b37f82f8625ae" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e6435002..f815d741 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,17 +32,13 @@ backtraces = ["cosmwasm-std/backtraces"] # debug-print = ["cosmwasm-std/debug-print"] [dependencies] -cosmwasm-std = { git = "https://github.com/scrtlabs/cosmwasm/", default-features = false, tag = "v1.1.9-secret" } -cosmwasm-storage = { git = "https://github.com/scrtlabs/cosmwasm/", tag = "v1.1.9-secret" } +cosmwasm-std = { package = "secret-cosmwasm-std", version = "1.1.11" } +cosmwasm-storage = { package = "secret-cosmwasm-storage", version = "1.1.11" } rand = { version = "0.8.5", default-features = false } -secret-toolkit = { git = "https://github.com/scrtlabs/secret-toolkit", features = [ - "permit", - "viewing-key", -], rev = "9b74bdac71c2fedcc12246f18cdfdd94b8991282" } -secret-toolkit-crypto = { git = "https://github.com/scrtlabs/secret-toolkit", features = [ - "rand", - "hash", -], rev = "9b74bdac71c2fedcc12246f18cdfdd94b8991282" } +secret-toolkit = { version = "0.10.0", default-features = false, features = ["crypto", "permit", "storage", "viewing-key"] } +secret-toolkit-crypto = { version = "0.10.0", features = ["rand", "hash"] } +#secret-toolkit-storage = "0.10.0" + schemars = "0.8.12" serde = { version = "1.0.158", default-features = false, features = ["derive"] } diff --git a/src/contract.rs b/src/contract.rs index a5855767..c82bca5d 100644 --- a/src/contract.rs +++ b/src/contract.rs @@ -8,7 +8,7 @@ use rand::RngCore; use secret_toolkit::permit::{Permit, RevokedPermits, TokenPermissions}; use secret_toolkit::utils::{pad_handle_result, pad_query_result}; use secret_toolkit::viewing_key::{ViewingKey, ViewingKeyStore}; -use secret_toolkit_crypto::{sha_256, Prng, SHA256_HASH_SIZE}; +use secret_toolkit_crypto::{sha_256, ContractPrng, SHA256_HASH_SIZE}; use crate::batch; use crate::msg::{ @@ -142,7 +142,7 @@ fn get_address_position( decoys_size: usize, entropy: &[u8; SHA256_HASH_SIZE], ) -> StdResult { - let mut rng = Prng::new(&PrngStore::load(store)?, entropy); + let mut rng = ContractPrng::new(&PrngStore::load(store)?, entropy); let mut new_contract_entropy = [0u8; 20]; rng.rng.fill_bytes(&mut new_contract_entropy); @@ -170,6 +170,7 @@ pub fn execute(deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg) -> S account_random_pos = Some(get_address_position(deps.storage, decoys_size, &entropy)?); } + let api = deps.api; match contract_status { ContractStatusLevel::StopAll | ContractStatusLevel::StopAllButRedeems => { let response = match msg { @@ -374,7 +375,7 @@ pub fn execute(deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg) -> S }; let padded_result = pad_handle_result(response, RESPONSE_BLOCK_SIZE); - msg.evaporate_to_target(deps.api)?; + msg.evaporate_to_target(api)?; padded_result } @@ -2919,8 +2920,9 @@ mod tests { height: 12_345, time: Timestamp::from_seconds(1_571_797_420), chain_id: "cosmos-testnet-14002".to_string(), + random: None, }, - transaction: Some(TransactionInfo { index: 3 }), + transaction: Some(TransactionInfo { index: 3, hash: "".to_string() }), contract: ContractInfo { address: Addr::unchecked(MOCK_CONTRACT_ADDR.to_string()), code_hash: "".to_string(), From 081e60c0fa8ee8c7736835d26c48071e0fa49db8 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Sun, 4 Feb 2024 13:28:19 +1300 Subject: [PATCH 4/8] update secret-contract-optimizer --- Cargo.toml | 2 -- Makefile | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f815d741..c4b786ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,8 +37,6 @@ cosmwasm-storage = { package = "secret-cosmwasm-storage", version = "1.1.11" } rand = { version = "0.8.5", default-features = false } secret-toolkit = { version = "0.10.0", default-features = false, features = ["crypto", "permit", "storage", "viewing-key"] } secret-toolkit-crypto = { version = "0.10.0", features = ["rand", "hash"] } -#secret-toolkit-storage = "0.10.0" - schemars = "0.8.12" serde = { version = "1.0.158", default-features = false, features = ["derive"] } diff --git a/Makefile b/Makefile index eee79095..4832c095 100644 --- a/Makefile +++ b/Makefile @@ -63,7 +63,7 @@ compile-optimized-reproducible: docker run --rm -v "$$(pwd)":/contract \ --mount type=volume,source="$$(basename "$$(pwd)")_cache",target=/code/target \ --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ - enigmampc/secret-contract-optimizer:1.0.7 + enigmampc/secret-contract-optimizer:1.0.10 contract.wasm.gz: contract.wasm cat ./contract.wasm | gzip -9 > ./contract.wasm.gz From a12e645dab9d7436ca13ca80dbf40ae33571094f Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Sun, 4 Feb 2024 19:56:37 +1300 Subject: [PATCH 5/8] update integration test localsecret v 1.12.2 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ef186b9a..345e7246 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,7 +29,7 @@ jobs: secretdev: # Docker Hub image options: --name secretdev - image: ghcr.io/scrtlabs/localsecret:v1.6.0-alpha.4 + image: ghcr.io/scrtlabs/localsecret:v1.12.2 volumes: - "/home/runner/work/snip20-reference-impl/snip20-reference-impl/:/root/code" ports: From 2958813162b6188f1345e5e6c733a18dfc98e94c Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Sun, 4 Feb 2024 20:03:36 +1300 Subject: [PATCH 6/8] chore: cargo fmt --all --- src/contract.rs | 10 +++++-- src/msg.rs | 80 ++++++++++++++++++++++++------------------------- 2 files changed, 46 insertions(+), 44 deletions(-) diff --git a/src/contract.rs b/src/contract.rs index c82bca5d..6417868e 100644 --- a/src/contract.rs +++ b/src/contract.rs @@ -12,8 +12,9 @@ use secret_toolkit_crypto::{sha_256, ContractPrng, SHA256_HASH_SIZE}; use crate::batch; use crate::msg::{ - AllowanceGivenResult, AllowanceReceivedResult, ContractStatusLevel, Decoyable, Evaporator, ExecuteAnswer, - ExecuteMsg, InstantiateMsg, QueryAnswer, QueryMsg, QueryWithPermit, ResponseStatus::Success, + AllowanceGivenResult, AllowanceReceivedResult, ContractStatusLevel, Decoyable, Evaporator, + ExecuteAnswer, ExecuteMsg, InstantiateMsg, QueryAnswer, QueryMsg, QueryWithPermit, + ResponseStatus::Success, }; use crate::receiver::Snip20ReceiveMsg; use crate::state::{ @@ -2922,7 +2923,10 @@ mod tests { chain_id: "cosmos-testnet-14002".to_string(), random: None, }, - transaction: Some(TransactionInfo { index: 3, hash: "".to_string() }), + transaction: Some(TransactionInfo { + index: 3, + hash: "".to_string(), + }), contract: ContractInfo { address: Addr::unchecked(MOCK_CONTRACT_ADDR.to_string()), code_hash: "".to_string(), diff --git a/src/msg.rs b/src/msg.rs index d3950977..a563912b 100644 --- a/src/msg.rs +++ b/src/msg.rs @@ -271,14 +271,14 @@ pub enum ExecuteMsg { padding: Option, }, /// Add deposit/redeem support for these coin denoms - AddSupportedDenoms { + AddSupportedDenoms { denoms: Vec, gas_target: Option, }, /// Remove deposit/redeem support for these coin denoms - RemoveSupportedDenoms { + RemoveSupportedDenoms { denoms: Vec, - gas_target: Option, + gas_target: Option, }, // Permit @@ -368,46 +368,44 @@ pub trait Evaporator { impl Evaporator for ExecuteMsg { fn evaporate_to_target(&self, api: &dyn Api) -> StdResult<()> { match self { - ExecuteMsg::Redeem { gas_target, .. } | - ExecuteMsg::Deposit { gas_target, .. } | - ExecuteMsg::Transfer { gas_target, .. } | - ExecuteMsg::Send {gas_target, .. } | - ExecuteMsg::BatchTransfer { gas_target, .. } | - ExecuteMsg::BatchSend { gas_target, .. } | - ExecuteMsg::Burn { gas_target, .. } | - ExecuteMsg::RegisterReceive { gas_target, .. } | - ExecuteMsg::CreateViewingKey { gas_target, .. } | - ExecuteMsg::SetViewingKey { gas_target, .. } | - ExecuteMsg::IncreaseAllowance { gas_target, .. } | - ExecuteMsg::DecreaseAllowance { gas_target, .. } | - ExecuteMsg::TransferFrom { gas_target, .. } | - ExecuteMsg::SendFrom { gas_target, .. } | - ExecuteMsg::BatchTransferFrom { gas_target, .. } | - ExecuteMsg::BatchSendFrom { gas_target, .. } | - ExecuteMsg::BurnFrom { gas_target, .. } | - ExecuteMsg::BatchBurnFrom { gas_target, .. } | - ExecuteMsg::Mint { gas_target, .. } | - ExecuteMsg::BatchMint { gas_target, .. } | - ExecuteMsg::AddMinters { gas_target, .. } | - ExecuteMsg::RemoveMinters { gas_target, .. } | - ExecuteMsg::SetMinters { gas_target, .. } | - ExecuteMsg::ChangeAdmin { gas_target, .. } | - ExecuteMsg::SetContractStatus { gas_target, .. } | - ExecuteMsg::AddSupportedDenoms { gas_target, .. } | - ExecuteMsg::RemoveSupportedDenoms { gas_target, .. } | - ExecuteMsg::RevokePermit { gas_target, .. } => { - match gas_target { - Some(gas_target) => { - let gas_used = api.check_gas()? as u32; - if gas_used < *gas_target { - let evaporate_amount = gas_target - gas_used; - api.gas_evaporate(evaporate_amount)?; - } - Ok(()) + ExecuteMsg::Redeem { gas_target, .. } + | ExecuteMsg::Deposit { gas_target, .. } + | ExecuteMsg::Transfer { gas_target, .. } + | ExecuteMsg::Send { gas_target, .. } + | ExecuteMsg::BatchTransfer { gas_target, .. } + | ExecuteMsg::BatchSend { gas_target, .. } + | ExecuteMsg::Burn { gas_target, .. } + | ExecuteMsg::RegisterReceive { gas_target, .. } + | ExecuteMsg::CreateViewingKey { gas_target, .. } + | ExecuteMsg::SetViewingKey { gas_target, .. } + | ExecuteMsg::IncreaseAllowance { gas_target, .. } + | ExecuteMsg::DecreaseAllowance { gas_target, .. } + | ExecuteMsg::TransferFrom { gas_target, .. } + | ExecuteMsg::SendFrom { gas_target, .. } + | ExecuteMsg::BatchTransferFrom { gas_target, .. } + | ExecuteMsg::BatchSendFrom { gas_target, .. } + | ExecuteMsg::BurnFrom { gas_target, .. } + | ExecuteMsg::BatchBurnFrom { gas_target, .. } + | ExecuteMsg::Mint { gas_target, .. } + | ExecuteMsg::BatchMint { gas_target, .. } + | ExecuteMsg::AddMinters { gas_target, .. } + | ExecuteMsg::RemoveMinters { gas_target, .. } + | ExecuteMsg::SetMinters { gas_target, .. } + | ExecuteMsg::ChangeAdmin { gas_target, .. } + | ExecuteMsg::SetContractStatus { gas_target, .. } + | ExecuteMsg::AddSupportedDenoms { gas_target, .. } + | ExecuteMsg::RemoveSupportedDenoms { gas_target, .. } + | ExecuteMsg::RevokePermit { gas_target, .. } => match gas_target { + Some(gas_target) => { + let gas_used = api.check_gas()? as u32; + if gas_used < *gas_target { + let evaporate_amount = gas_target - gas_used; + api.gas_evaporate(evaporate_amount)?; } - None => Ok(()) + Ok(()) } - } + None => Ok(()), + }, } } } From 0d7f586cc5f172c5659e8c0252d3ced03fbd9d37 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Sun, 4 Feb 2024 20:10:49 +1300 Subject: [PATCH 7/8] chore: fix linter error --- src/contract.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/contract.rs b/src/contract.rs index 6417868e..3a64532b 100644 --- a/src/contract.rs +++ b/src/contract.rs @@ -990,7 +990,7 @@ pub fn query_allowances_given( let owner = Addr::unchecked(owner); let all_allowances = - AllowancesStore::all_allowances(deps.storage, &owner, page, page_size).unwrap_or(vec![]); + AllowancesStore::all_allowances(deps.storage, &owner, page, page_size).unwrap_or_default(); let allowances_result = all_allowances .into_iter() @@ -1022,7 +1022,7 @@ pub fn query_allowances_received( let spender = Addr::unchecked(spender); let all_allowed = - AllowancesStore::all_allowed(deps.storage, &spender, page, page_size).unwrap_or(vec![]); + AllowancesStore::all_allowed(deps.storage, &spender, page, page_size).unwrap_or_default(); let allowances = all_allowed .into_iter() From 5e783a28b258decdb4dcb5b99f1235af217f6604 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Sun, 4 Feb 2024 20:47:18 +1300 Subject: [PATCH 8/8] update localsecret v1.12.2 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4832c095..7b7ffc48 100644 --- a/Makefile +++ b/Makefile @@ -76,7 +76,7 @@ start-server: # CTRL+C to stop docker run -it --rm \ -p 9091:9091 -p 26657:26657 -p 26656:26656 -p 1317:1317 -p 5000:5000 \ -v $$(pwd):/root/code \ - --name secretdev ghcr.io/scrtlabs/localsecret:v1.6.0-alpha.4 + --name secretdev ghcr.io/scrtlabs/localsecret:v1.12.2 .PHONY: schema schema: