From dd7dc8c6c37d0038b658e3a2f5e3220699157535 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Thu, 20 Feb 2025 19:26:39 +0700 Subject: [PATCH 1/5] fix(drive): transfer to frozen account is allowed --- .../token_transfer_transition_action/mod.rs | 2 +- .../state_v0/mod.rs | 34 ++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/mod.rs index 924b4b80a24..d0b4942b8f4 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/mod.rs @@ -68,7 +68,7 @@ impl TokenTransferTransitionActionValidation for TokenTransferTransitionAction { .validation_and_processing .state_transitions .batch_state_transition - .token_issuance_transition_state_validation + .token_transfer_transition_state_validation { 0 => self.validate_state_v0( platform, diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs index 43d272522f1..29c93a9981f 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs @@ -59,7 +59,9 @@ impl TokenTransferTransitionActionStateValidationV0 for TokenTransferTransitionA platform_version, )? .unwrap_or_default(); + execution_context.add_operation(ValidationOperation::RetrieveIdentityTokenBalance); + if balance < self.amount() { return Ok(SimpleConsensusValidationResult::new_with_error( ConsensusError::StateError(StateError::IdentityDoesNotHaveEnoughTokenBalanceError( @@ -83,9 +85,37 @@ impl TokenTransferTransitionActionStateValidationV0 for TokenTransferTransitionA transaction, platform_version, )?; + execution_context.add_operation(ValidationOperation::PrecalculatedOperation(fee_result)); + if let Some(info) = info { - if info.frozen() == true { + if info.frozen() { + return Ok(SimpleConsensusValidationResult::new_with_error( + ConsensusError::StateError(StateError::IdentityTokenAccountFrozenError( + IdentityTokenAccountFrozenError::new( + self.token_id(), + owner_id, + "transfer".to_string(), + ), + )), + )); + } + }; + + // We need to verify that account we are transferring to not frozen + let (info, fee_result) = platform.drive.fetch_identity_token_info_with_costs( + self.token_id().to_buffer(), + self.recipient_id().to_buffer(), + block_info, + true, + transaction, + platform_version, + )?; + + execution_context.add_operation(ValidationOperation::PrecalculatedOperation(fee_result)); + + if let Some(info) = info { + if info.frozen() { return Ok(SimpleConsensusValidationResult::new_with_error( ConsensusError::StateError(StateError::IdentityTokenAccountFrozenError( IdentityTokenAccountFrozenError::new( @@ -106,7 +136,9 @@ impl TokenTransferTransitionActionStateValidationV0 for TokenTransferTransitionA transaction, platform_version, )?; + execution_context.add_operation(ValidationOperation::PrecalculatedOperation(fee_result)); + if let Some(status) = token_status { if status.paused() { return Ok(SimpleConsensusValidationResult::new_with_error( From a63f8f51d155204da7b8377939b0c90ca258a13b Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Thu, 20 Feb 2025 19:29:26 +0700 Subject: [PATCH 2/5] fix: use correct identifier for error --- .../token/token_transfer_transition_action/state_v0/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs index 29c93a9981f..07091a488db 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs @@ -120,7 +120,7 @@ impl TokenTransferTransitionActionStateValidationV0 for TokenTransferTransitionA ConsensusError::StateError(StateError::IdentityTokenAccountFrozenError( IdentityTokenAccountFrozenError::new( self.token_id(), - owner_id, + self.recipient_id(), "transfer".to_string(), ), )), From e9d1b3c53cc8b0d32f18a2682902c4e9a0e46237 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Thu, 27 Feb 2025 20:22:25 +0700 Subject: [PATCH 3/5] feat: configure frozen account transfer --- .../token_configuration/accessors/mod.rs | 13 +++++ .../token_configuration/accessors/v0/mod.rs | 6 ++ .../token_configuration/v0/accessors.rs | 10 ++++ .../token_configuration/v0/mod.rs | 4 ++ .../state_v0/mod.rs | 37 ++++++++++++- .../state_v0/mod.rs | 55 +++++++++++-------- .../state_transitions/batch/mod.rs | 1 + 7 files changed, 103 insertions(+), 23 deletions(-) diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/mod.rs index 2f063196a3e..be554931cbc 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/mod.rs @@ -55,6 +55,12 @@ impl TokenConfigurationV0Getters for TokenConfiguration { } } + fn is_allowed_transfer_to_frozen_balance(&self) -> bool { + match self { + TokenConfiguration::V0(v0) => v0.is_allowed_transfer_to_frozen_balance(), + } + } + /// Returns the maximum supply. fn max_supply(&self) -> Option { match self { @@ -159,6 +165,13 @@ impl TokenConfigurationV0Setters for TokenConfiguration { } } + /// Allow or not a transfer and mint tokens to frozen identity token balances + fn allow_transfer_to_frozen_balance(&mut self, allow: bool) { + match self { + TokenConfiguration::V0(v0) => v0.allow_transfer_to_frozen_balance(allow), + } + } + /// Sets the base supply. fn set_base_supply(&mut self, base_supply: u64) { match self { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/v0/mod.rs index 2ab5f7a6259..22f0a13edab 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/v0/mod.rs @@ -22,6 +22,9 @@ pub trait TokenConfigurationV0Getters { fn keeps_history(&self) -> bool; fn start_as_paused(&self) -> bool; + /// Allow to transfer and mint tokens to frozen identity token balances + fn is_allowed_transfer_to_frozen_balance(&self) -> bool; + /// Returns the maximum supply. fn max_supply(&self) -> Option; @@ -68,6 +71,9 @@ pub trait TokenConfigurationV0Setters { /// Sets the conventions change rules. fn set_conventions_change_rules(&mut self, rules: ChangeControlRules); + /// Allow or not a transfer and mint tokens to frozen identity token balances + fn allow_transfer_to_frozen_balance(&mut self, allow: bool); + /// Sets the base supply. fn set_base_supply(&mut self, base_supply: TokenAmount); diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/accessors.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/accessors.rs index 7a289badbde..a4ffc0b9ba3 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/accessors.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/accessors.rs @@ -44,6 +44,11 @@ impl TokenConfigurationV0Getters for TokenConfigurationV0 { self.start_as_paused } + /// Allow to transfer and mint tokens to frozen identity token balances + fn is_allowed_transfer_to_frozen_balance(&self) -> bool { + self.allow_transfer_to_frozen_balance + } + /// Returns the maximum supply. fn max_supply(&self) -> Option { self.max_supply @@ -162,6 +167,11 @@ impl TokenConfigurationV0Setters for TokenConfigurationV0 { self.conventions_change_rules = rules; } + /// Allow or not a transfer and mint tokens to frozen identity token balances + fn allow_transfer_to_frozen_balance(&mut self, allow: bool) { + self.allow_transfer_to_frozen_balance = allow; + } + /// Sets the base supply. fn set_base_supply(&mut self, base_supply: TokenAmount) { self.base_supply = base_supply; diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs index 0c8ccb6dc3e..3554c548dbe 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs @@ -31,6 +31,9 @@ pub struct TokenConfigurationV0 { /// Do we start off as paused, meaning that we can not transfer till we unpause. #[serde(default = "default_starts_as_paused")] pub start_as_paused: bool, + /// Allow to transfer and mint tokens to frozen identity token balances + #[serde(default)] + pub allow_transfer_to_frozen_balance: bool, /// Who can change the max supply /// Even if set no one can ever change this under the base supply #[serde(default = "default_change_control_rules")] @@ -160,6 +163,7 @@ impl TokenConfigurationV0 { max_supply: None, keeps_history: true, start_as_paused: false, + allow_transfer_to_frozen_balance: false, max_supply_change_rules: ChangeControlRulesV0 { authorized_to_make_change: AuthorizedActionTakers::NoOne, admin_action_takers: AuthorizedActionTakers::NoOne, diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_mint_transition_action/state_v0/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_mint_transition_action/state_v0/mod.rs index d30cb0d377d..56ad9bda51e 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_mint_transition_action/state_v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_mint_transition_action/state_v0/mod.rs @@ -2,16 +2,18 @@ use dpp::block::block_info::BlockInfo; use dpp::consensus::ConsensusError; use dpp::consensus::state::identity::RecipientIdentityDoesNotExistError; use dpp::consensus::state::state_error::StateError; -use dpp::consensus::state::token::TokenMintPastMaxSupplyError; +use dpp::consensus::state::token::{IdentityTokenAccountFrozenError, TokenMintPastMaxSupplyError}; use dpp::data_contract::accessors::v0::DataContractV0Getters; use dpp::data_contract::accessors::v1::DataContractV1Getters; use dpp::data_contract::associated_token::token_configuration::accessors::v0::TokenConfigurationV0Getters; use dpp::prelude::Identifier; +use dpp::tokens::info::v0::IdentityTokenInfoV0Accessors; use dpp::validation::SimpleConsensusValidationResult; use drive::state_transition_action::batch::batched_transition::token_transition::token_mint_transition_action::{TokenMintTransitionAction, TokenMintTransitionActionAccessorsV0}; use dpp::version::PlatformVersion; use drive::error::drive::DriveError; use drive::query::TransactionArg; +use drive::state_transition_action::batch::batched_transition::token_transition::token_base_transition_action::TokenBaseTransitionActionAccessorsV0; use crate::error::Error; use crate::execution::types::execution_operation::{RetrieveIdentityInfo, ValidationOperation}; use crate::execution::types::state_transition_execution_context::{StateTransitionExecutionContext, StateTransitionExecutionContextMethodsV0}; @@ -142,6 +144,39 @@ impl TokenMintTransitionActionStateValidationV0 for TokenMintTransitionAction { } } + // We need to verify that account we are transferring to not frozen + if !self + .base() + .token_configuration()? + .is_allowed_transfer_to_frozen_balance() + { + let (info, fee_result) = platform.drive.fetch_identity_token_info_with_costs( + self.token_id().to_buffer(), + recipient.to_buffer(), + block_info, + true, + transaction, + platform_version, + )?; + + execution_context + .add_operation(ValidationOperation::PrecalculatedOperation(fee_result)); + + if let Some(info) = info { + if info.frozen() { + return Ok(SimpleConsensusValidationResult::new_with_error( + ConsensusError::StateError(StateError::IdentityTokenAccountFrozenError( + IdentityTokenAccountFrozenError::new( + self.token_id(), + recipient, + "mint".to_string(), + ), + )), + )); + } + }; + } + Ok(SimpleConsensusValidationResult::new()) } } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs index 07091a488db..5417b526cd8 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs @@ -2,6 +2,8 @@ use dpp::block::block_info::BlockInfo; use dpp::consensus::ConsensusError; use dpp::consensus::state::state_error::StateError; use dpp::consensus::state::token::{IdentityDoesNotHaveEnoughTokenBalanceError, IdentityTokenAccountFrozenError, TokenIsPausedError}; +use dpp::data_contract::accessors::v1::DataContractV1Getters; +use dpp::data_contract::associated_token::token_configuration::accessors::v0::TokenConfigurationV0Getters; use dpp::prelude::Identifier; use dpp::tokens::info::v0::IdentityTokenInfoV0Accessors; use dpp::tokens::status::v0::TokenStatusV0Accessors; @@ -9,6 +11,7 @@ use dpp::validation::SimpleConsensusValidationResult; use drive::state_transition_action::batch::batched_transition::token_transition::token_transfer_transition_action::TokenTransferTransitionAction; use dpp::version::PlatformVersion; use drive::query::TransactionArg; +use drive::state_transition_action::batch::batched_transition::token_transition::token_base_transition_action::TokenBaseTransitionActionAccessorsV0; use drive::state_transition_action::batch::batched_transition::token_transition::token_transfer_transition_action::v0::TokenTransferTransitionActionAccessorsV0; use crate::error::Error; use crate::execution::types::execution_operation::ValidationOperation; @@ -77,6 +80,7 @@ impl TokenTransferTransitionActionStateValidationV0 for TokenTransferTransitionA } // We need to verify that our token account is not frozen + let (info, fee_result) = platform.drive.fetch_identity_token_info_with_costs( self.token_id().to_buffer(), owner_id.to_buffer(), @@ -103,30 +107,37 @@ impl TokenTransferTransitionActionStateValidationV0 for TokenTransferTransitionA }; // We need to verify that account we are transferring to not frozen - let (info, fee_result) = platform.drive.fetch_identity_token_info_with_costs( - self.token_id().to_buffer(), - self.recipient_id().to_buffer(), - block_info, - true, - transaction, - platform_version, - )?; + if !self + .base() + .token_configuration()? + .is_allowed_transfer_to_frozen_balance() + { + let (info, fee_result) = platform.drive.fetch_identity_token_info_with_costs( + self.token_id().to_buffer(), + self.recipient_id().to_buffer(), + block_info, + true, + transaction, + platform_version, + )?; - execution_context.add_operation(ValidationOperation::PrecalculatedOperation(fee_result)); + execution_context + .add_operation(ValidationOperation::PrecalculatedOperation(fee_result)); - if let Some(info) = info { - if info.frozen() { - return Ok(SimpleConsensusValidationResult::new_with_error( - ConsensusError::StateError(StateError::IdentityTokenAccountFrozenError( - IdentityTokenAccountFrozenError::new( - self.token_id(), - self.recipient_id(), - "transfer".to_string(), - ), - )), - )); - } - }; + if let Some(info) = info { + if info.frozen() { + return Ok(SimpleConsensusValidationResult::new_with_error( + ConsensusError::StateError(StateError::IdentityTokenAccountFrozenError( + IdentityTokenAccountFrozenError::new( + self.token_id(), + self.recipient_id(), + "transfer".to_string(), + ), + )), + )); + } + }; + } // We need to verify that the token is not paused let (token_status, fee_result) = platform.drive.fetch_token_status_with_costs( diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/mod.rs index 7b38ca9b32f..f961cdbf501 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/mod.rs @@ -14164,6 +14164,7 @@ mod tests { self_changing_admin_action_takers_allowed: false, }, )); + token_configuration.allow_transfer_to_frozen_balance(true); }), None, platform_version, From 8a7f7b6559915e322f1c694077ae1a6bf4ae6e78 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Fri, 18 Apr 2025 06:45:11 +0700 Subject: [PATCH 4/5] clippy --- .../token/token_transfer_transition_action/state_v0/mod.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs index 85e0ea11a52..15d0f00c8d7 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/action_validation/token/token_transfer_transition_action/state_v0/mod.rs @@ -2,7 +2,6 @@ use dpp::block::block_info::BlockInfo; use dpp::consensus::ConsensusError; use dpp::consensus::state::state_error::StateError; use dpp::consensus::state::token::{IdentityDoesNotHaveEnoughTokenBalanceError, IdentityTokenAccountFrozenError, TokenIsPausedError, TokenTransferRecipientIdentityNotExistError}; -use dpp::data_contract::accessors::v1::DataContractV1Getters; use dpp::data_contract::associated_token::token_configuration::accessors::v0::TokenConfigurationV0Getters; use dpp::prelude::Identifier; use dpp::tokens::info::v0::IdentityTokenInfoV0Accessors; From b9fdf84321edcea55a88a43ebbe51604fecb9ff4 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Fri, 18 Apr 2025 06:58:15 +0700 Subject: [PATCH 5/5] fixes --- .../associated_token/token_configuration/v0/mod.rs | 12 +++++++++--- .../create_genesis_state/test/tokens.rs | 1 + .../state_transitions/batch/tests/token/mod.rs | 2 +- .../tests/strategy_tests/token_tests.rs | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs index eee102bae5e..52bd41a2344 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs @@ -35,7 +35,7 @@ pub struct TokenConfigurationV0 { #[serde(default = "default_starts_as_paused")] pub start_as_paused: bool, /// Allow to transfer and mint tokens to frozen identity token balances - #[serde(default)] + #[serde(default = "default_allow_transfer_to_frozen_balance")] pub allow_transfer_to_frozen_balance: bool, /// Who can change the max supply /// Even if set no one can ever change this under the base supply @@ -74,6 +74,11 @@ fn default_starts_as_paused() -> bool { false } +// Default function for `allow_transfer_to_frozen_balance` +fn default_allow_transfer_to_frozen_balance() -> bool { + true +} + fn default_token_keeps_history_rules() -> TokenKeepsHistoryRules { TokenKeepsHistoryRules::V0(TokenKeepsHistoryRulesV0 { keeps_transfer_history: true, @@ -146,13 +151,14 @@ impl fmt::Display for TokenConfigurationV0 { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!( f, - "TokenConfigurationV0 {{\n conventions: {:?},\n conventions_change_rules: {:?},\n base_supply: {},\n max_supply: {:?},\n keeps_history: {},\n start_as_paused: {},\n max_supply_change_rules: {:?},\n distribution_rules: {},\n manual_minting_rules: {:?},\n manual_burning_rules: {:?},\n freeze_rules: {:?},\n unfreeze_rules: {:?},\n destroy_frozen_funds_rules: {:?},\n emergency_action_rules: {:?},\n main_control_group: {:?},\n main_control_group_can_be_modified: {:?}\n}}", + "TokenConfigurationV0 {{\n conventions: {:?},\n conventions_change_rules: {:?},\n base_supply: {},\n max_supply: {:?},\n keeps_history: {},\n start_as_paused: {},\n allow_transfer_to_frozen_balance: {},\n max_supply_change_rules: {:?},\n distribution_rules: {},\n manual_minting_rules: {:?},\n manual_burning_rules: {:?},\n freeze_rules: {:?},\n unfreeze_rules: {:?},\n destroy_frozen_funds_rules: {:?},\n emergency_action_rules: {:?},\n main_control_group: {:?},\n main_control_group_can_be_modified: {:?}\n}}", self.conventions, self.conventions_change_rules, self.base_supply, self.max_supply, self.keeps_history, self.start_as_paused, + self.allow_transfer_to_frozen_balance, self.max_supply_change_rules, self.distribution_rules, self.manual_minting_rules, @@ -193,7 +199,7 @@ impl TokenConfigurationV0 { keeps_direct_purchase_history: true, }), start_as_paused: false, - allow_transfer_to_frozen_balance: false, + allow_transfer_to_frozen_balance: true, max_supply_change_rules: ChangeControlRulesV0 { authorized_to_make_change: AuthorizedActionTakers::NoOne, admin_action_takers: AuthorizedActionTakers::NoOne, diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/test/tokens.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/test/tokens.rs index c53010b7869..a7ca5d32ffb 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/test/tokens.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/test/tokens.rs @@ -240,6 +240,7 @@ impl Platform { max_supply: None, keeps_history: TokenKeepsHistoryRulesV0::default().into(), start_as_paused: false, + allow_transfer_to_frozen_balance: true, max_supply_change_rules: ChangeControlRulesV0::default().into(), distribution_rules: TokenDistributionRulesV0 { perpetual_distribution: None, diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/mod.rs index 090f3805f55..369c90a684c 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/mod.rs @@ -14,7 +14,6 @@ use dpp::data_contract::associated_token::token_configuration::accessors::v0::To use dpp::data_contract::associated_token::token_configuration::accessors::v0::TokenConfigurationV0Setters; use dpp::data_contract::associated_token::token_configuration::TokenConfiguration; use dpp::data_contract::associated_token::token_configuration_convention::v0::TokenConfigurationConventionV0; -use dpp::data_contract::associated_token::token_configuration_localization::TokenConfigurationLocalization; use dpp::data_contract::associated_token::token_distribution_rules::accessors::v0::TokenDistributionRulesV0Setters; use dpp::data_contract::change_control_rules::authorized_action_takers::AuthorizedActionTakers; use dpp::data_contract::change_control_rules::v0::ChangeControlRulesV0; @@ -4394,6 +4393,7 @@ mod token_tests { )); }), None, + None, platform_version, ); diff --git a/packages/rs-drive-abci/tests/strategy_tests/token_tests.rs b/packages/rs-drive-abci/tests/strategy_tests/token_tests.rs index d2a2607c92d..21ab578db9f 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/token_tests.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/token_tests.rs @@ -152,7 +152,7 @@ mod tests { ) .expect("expected to get balances"); - for (identity_id, token_balance) in balances { + for (_identity_id, token_balance) in balances { assert!(token_balance.is_some()) }