diff --git a/packages/rs-dpp/src/state_transition/mod.rs b/packages/rs-dpp/src/state_transition/mod.rs index 3820da8e675..3a13f3154d5 100644 --- a/packages/rs-dpp/src/state_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/mod.rs @@ -210,32 +210,32 @@ macro_rules! call_method_identity_signed { #[cfg(feature = "state-transition-signing")] macro_rules! call_errorable_method_identity_signed { - ($state_transition:expr, $method:ident, $args:tt ) => { + ($state_transition:expr, $method:ident, $( $arg:expr ),* ) => { match $state_transition { - StateTransition::DataContractCreate(st) => st.$method($args), - StateTransition::DataContractUpdate(st) => st.$method($args), - StateTransition::Batch(st) => st.$method($args), - StateTransition::IdentityCreate(_st) => Err(ProtocolError::CorruptedCodeExecution( + StateTransition::DataContractCreate(st) => st.$method($( $arg ),*), + StateTransition::DataContractUpdate(st) => st.$method($( $arg ),*), + StateTransition::Batch(st) => st.$method($( $arg ),*), + StateTransition::IdentityCreate(_) => Err(ProtocolError::CorruptedCodeExecution( "identity create can not be called for identity signing".to_string(), )), - StateTransition::IdentityTopUp(_st) => Err(ProtocolError::CorruptedCodeExecution( + StateTransition::IdentityTopUp(_) => Err(ProtocolError::CorruptedCodeExecution( "identity top up can not be called for identity signing".to_string(), )), - StateTransition::IdentityCreditWithdrawal(st) => st.$method($args), - StateTransition::IdentityUpdate(st) => st.$method($args), - StateTransition::IdentityCreditTransfer(st) => st.$method($args), - StateTransition::MasternodeVote(st) => st.$method($args), + StateTransition::IdentityCreditWithdrawal(st) => st.$method($( $arg ),*), + StateTransition::IdentityUpdate(st) => st.$method($( $arg ),*), + StateTransition::IdentityCreditTransfer(st) => st.$method($( $arg ),*), + StateTransition::MasternodeVote(st) => st.$method($( $arg ),*), } }; - ($state_transition:expr, $method:ident ) => { + ($state_transition:expr, $method:ident) => { match $state_transition { StateTransition::DataContractCreate(st) => st.$method(), StateTransition::DataContractUpdate(st) => st.$method(), StateTransition::Batch(st) => st.$method(), - StateTransition::IdentityCreate(st) => Err(ProtocolError::CorruptedCodeExecution( + StateTransition::IdentityCreate(_) => Err(ProtocolError::CorruptedCodeExecution( "identity create can not be called for identity signing".to_string(), )), - StateTransition::IdentityTopUp(st) => Err(ProtocolError::CorruptedCodeExecution( + StateTransition::IdentityTopUp(_) => Err(ProtocolError::CorruptedCodeExecution( "identity top up can not be called for identity signing".to_string(), )), StateTransition::IdentityCreditWithdrawal(st) => st.$method(), @@ -282,6 +282,15 @@ impl OptionallyAssetLockProved for StateTransition { } } +/// The state transition signing options +#[derive(Debug, Clone, Copy, Default, Eq, PartialEq)] +pub struct StateTransitionSigningOptions { + /// This will allow signing with any security level for debugging purposes + pub allow_signing_with_any_security_level: bool, + /// This will allow signing with any purpose for debugging purposes + pub allow_signing_with_any_purpose: bool, +} + impl StateTransition { pub fn deserialize_from_bytes_in_version( bytes: &[u8], @@ -508,18 +517,38 @@ impl StateTransition { get_data_contract_security_level_requirement: Option< impl Fn(Identifier, String) -> Result, >, + ) -> Result<(), ProtocolError> { + self.sign_external_with_options( + identity_public_key, + signer, + get_data_contract_security_level_requirement, + StateTransitionSigningOptions::default(), + ) + } + + #[cfg(feature = "state-transition-signing")] + pub fn sign_external_with_options( + &mut self, + identity_public_key: &IdentityPublicKey, + signer: &S, + get_data_contract_security_level_requirement: Option< + impl Fn(Identifier, String) -> Result, + >, + options: StateTransitionSigningOptions, ) -> Result<(), ProtocolError> { match self { StateTransition::DataContractCreate(st) => { - st.verify_public_key_level_and_purpose(identity_public_key)?; + st.verify_public_key_level_and_purpose(identity_public_key, options)?; st.verify_public_key_is_enabled(identity_public_key)?; } StateTransition::DataContractUpdate(st) => { - st.verify_public_key_level_and_purpose(identity_public_key)?; + st.verify_public_key_level_and_purpose(identity_public_key, options)?; st.verify_public_key_is_enabled(identity_public_key)?; } StateTransition::Batch(st) => { - if identity_public_key.purpose() != Purpose::AUTHENTICATION { + if !options.allow_signing_with_any_purpose + && identity_public_key.purpose() != Purpose::AUTHENTICATION + { return Err(ProtocolError::WrongPublicKeyPurposeError( WrongPublicKeyPurposeError::new( identity_public_key.purpose(), @@ -527,35 +556,31 @@ impl StateTransition { ), )); } - let get_data_contract_security_level_requirement = - get_data_contract_security_level_requirement - .ok_or(ProtocolError::CorruptedCodeExecution( - "must supply get_data_contract when signing a documents batch transition" - .to_string(), - ))?; - let security_level_requirement = st.contract_based_security_level_requirement( - get_data_contract_security_level_requirement, - )?; - if !security_level_requirement.contains(&identity_public_key.security_level()) { - return Err(ProtocolError::InvalidSignaturePublicKeySecurityLevelError( - InvalidSignaturePublicKeySecurityLevelError::new( - identity_public_key.security_level(), - security_level_requirement, - ), - )); + if !options.allow_signing_with_any_security_level { + let security_level_requirement = st.combined_security_level_requirement( + get_data_contract_security_level_requirement, + )?; + if !security_level_requirement.contains(&identity_public_key.security_level()) { + return Err(ProtocolError::InvalidSignaturePublicKeySecurityLevelError( + InvalidSignaturePublicKeySecurityLevelError::new( + identity_public_key.security_level(), + security_level_requirement, + ), + )); + } } st.verify_public_key_is_enabled(identity_public_key)?; } StateTransition::IdentityCreditWithdrawal(st) => { - st.verify_public_key_level_and_purpose(identity_public_key)?; + st.verify_public_key_level_and_purpose(identity_public_key, options)?; st.verify_public_key_is_enabled(identity_public_key)?; } StateTransition::IdentityUpdate(st) => { - st.verify_public_key_level_and_purpose(identity_public_key)?; + st.verify_public_key_level_and_purpose(identity_public_key, options)?; st.verify_public_key_is_enabled(identity_public_key)?; } StateTransition::IdentityCreditTransfer(st) => { - st.verify_public_key_level_and_purpose(identity_public_key)?; + st.verify_public_key_level_and_purpose(identity_public_key, options)?; st.verify_public_key_is_enabled(identity_public_key)?; } StateTransition::IdentityCreate(_) => { @@ -569,7 +594,7 @@ impl StateTransition { )) } StateTransition::MasternodeVote(st) => { - st.verify_public_key_level_and_purpose(identity_public_key)?; + st.verify_public_key_level_and_purpose(identity_public_key, options)?; st.verify_public_key_is_enabled(identity_public_key)?; } } @@ -585,11 +610,28 @@ impl StateTransition { identity_public_key: &IdentityPublicKey, private_key: &[u8], bls: &impl BlsModule, + ) -> Result<(), ProtocolError> { + self.sign_with_options( + identity_public_key, + private_key, + bls, + StateTransitionSigningOptions::default(), + ) + } + + #[cfg(feature = "state-transition-signing")] + pub fn sign_with_options( + &mut self, + identity_public_key: &IdentityPublicKey, + private_key: &[u8], + bls: &impl BlsModule, + options: StateTransitionSigningOptions, ) -> Result<(), ProtocolError> { call_errorable_method_identity_signed!( self, verify_public_key_level_and_purpose, - identity_public_key + identity_public_key, + options )?; call_errorable_method_identity_signed!( self, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/mod.rs index b67c079ab9f..ff12afae394 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/mod.rs @@ -28,6 +28,7 @@ use crate::state_transition::batch_transition::BatchTransition; use crate::state_transition::batch_transition::{BatchTransitionV0, BatchTransitionV1}; #[cfg(feature = "state-transition-signing")] use crate::state_transition::StateTransition; +use crate::state_transition::StateTransitionSigningOptions; #[cfg(feature = "state-transition-signing")] use crate::tokens::emergency_action::TokenEmergencyAction; #[cfg(feature = "state-transition-signing")] @@ -39,12 +40,22 @@ use crate::tokens::{PrivateEncryptedNote, SharedEncryptedNote}; use crate::ProtocolError; #[cfg(feature = "state-transition-signing")] use platform_value::Identifier; +use platform_version::version::FeatureVersion; #[cfg(feature = "state-transition-signing")] -use platform_version::version::{FeatureVersion, PlatformVersion}; +use platform_version::version::PlatformVersion; pub mod v0; pub mod v1; +#[derive(Debug, Clone, Copy, Default, Eq, PartialEq)] +pub struct StateTransitionCreationOptions { + /// The signing options + pub signing_options: StateTransitionSigningOptions, + pub batch_feature_version: Option, + pub method_feature_version: Option, + pub base_feature_version: Option, +} + impl DocumentsBatchTransitionMethodsV0 for BatchTransition { fn all_document_purchases_amount(&self) -> Result, ProtocolError> { match self { @@ -87,11 +98,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - create_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -109,9 +119,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - create_feature_version, - base_feature_version, + options, )?, ), 1 => Ok( @@ -125,9 +133,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - create_feature_version, - base_feature_version, + options, )?, ), version => Err(ProtocolError::UnknownVersionMismatch { @@ -148,11 +154,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - replace_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -169,9 +174,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - replace_feature_version, - base_feature_version, + options, )?, ), 1 => Ok( @@ -184,9 +187,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - replace_feature_version, - base_feature_version, + options, )?, ), version => Err(ProtocolError::UnknownVersionMismatch { @@ -210,11 +211,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - transfer_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -232,9 +232,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - transfer_feature_version, - base_feature_version, + options, )?, ), 1 => Ok( @@ -248,9 +246,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - transfer_feature_version, - base_feature_version, + options, )?, ), version => Err(ProtocolError::UnknownVersionMismatch { @@ -273,11 +269,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -294,9 +289,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, )?, ), 1 => Ok( @@ -309,9 +302,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, )?, ), version => Err(ProtocolError::UnknownVersionMismatch { @@ -334,11 +325,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - update_price_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -356,9 +346,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - update_price_feature_version, - base_feature_version, + options, )?, ), 1 => Ok( @@ -372,9 +360,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - update_price_feature_version, - base_feature_version, + options, )?, ), version => Err(ProtocolError::UnknownVersionMismatch { @@ -399,11 +385,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - purchase_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -422,9 +407,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - purchase_feature_version, - base_feature_version, + options, )?, ), 1 => Ok( @@ -439,9 +422,7 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransition { token_payment_info, signer, platform_version, - batch_feature_version, - purchase_feature_version, - base_feature_version, + options, )?, ), version => Err(ProtocolError::UnknownVersionMismatch { @@ -470,11 +451,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -503,9 +483,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -530,11 +508,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -562,9 +539,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -591,11 +566,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -626,9 +600,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -653,11 +625,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -686,9 +657,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -713,11 +682,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -746,9 +714,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -773,11 +739,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -806,9 +771,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -834,11 +797,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -867,9 +829,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - delete_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -895,11 +855,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - config_update_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -928,9 +887,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - config_update_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -954,11 +911,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - config_update_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -986,9 +942,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - config_update_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -1014,11 +968,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - config_update_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -1047,9 +1000,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - config_update_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { @@ -1075,11 +1026,10 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - config_update_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { - match batch_feature_version.unwrap_or( + let resolved_options = options.unwrap_or_default(); + match resolved_options.batch_feature_version.unwrap_or( platform_version .dpp .state_transition_serialization_versions @@ -1107,9 +1057,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransition { user_fee_increase, signer, platform_version, - batch_feature_version, - config_update_feature_version, - base_feature_version, + options, ) } version => Err(ProtocolError::UnknownVersionMismatch { diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/v0/mod.rs index acb26f272ac..222df3d810a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/v0/mod.rs @@ -18,9 +18,11 @@ use crate::state_transition::StateTransition; use crate::ProtocolError; use platform_value::Identifier; #[cfg(feature = "state-transition-signing")] -use platform_version::version::{FeatureVersion, PlatformVersion}; +use platform_version::version::PlatformVersion; use std::convert::TryFrom; use crate::state_transition::batch_transition::batched_transition::{BatchedTransition, BatchedTransitionRef}; +#[cfg(feature = "state-transition-signing")] +use crate::state_transition::batch_transition::methods::StateTransitionCreationOptions; use crate::state_transition::state_transitions::document::batch_transition::batched_transition::document_transition::DocumentTransitionV0Methods; #[cfg(feature = "state-transition-signing")] use crate::tokens::token_payment_info::TokenPaymentInfo; @@ -38,9 +40,7 @@ pub trait DocumentsBatchTransitionMethodsV0: DocumentsBatchTransitionAccessorsV0 token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - create_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; #[cfg(feature = "state-transition-signing")] @@ -54,9 +54,7 @@ pub trait DocumentsBatchTransitionMethodsV0: DocumentsBatchTransitionAccessorsV0 token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - replace_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; #[cfg(feature = "state-transition-signing")] @@ -70,9 +68,7 @@ pub trait DocumentsBatchTransitionMethodsV0: DocumentsBatchTransitionAccessorsV0 token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; #[cfg(feature = "state-transition-signing")] @@ -87,9 +83,7 @@ pub trait DocumentsBatchTransitionMethodsV0: DocumentsBatchTransitionAccessorsV0 token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - transfer_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; #[cfg(feature = "state-transition-signing")] @@ -104,9 +98,7 @@ pub trait DocumentsBatchTransitionMethodsV0: DocumentsBatchTransitionAccessorsV0 token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - update_price_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; #[cfg(feature = "state-transition-signing")] @@ -122,18 +114,14 @@ pub trait DocumentsBatchTransitionMethodsV0: DocumentsBatchTransitionAccessorsV0 token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - purchase_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; - fn contract_based_security_level_requirement( + fn combined_security_level_requirement( &self, - get_data_contract_security_level_requirement: impl Fn( - Identifier, - String, - ) - -> Result, + get_data_contract_security_level_requirement: Option< + impl Fn(Identifier, String) -> Result, + >, ) -> Result, ProtocolError> { // Step 1: Get all document types for the ST // Step 2: Get document schema for every type @@ -142,21 +130,41 @@ pub trait DocumentsBatchTransitionMethodsV0: DocumentsBatchTransitionAccessorsV0 // requirement is the highest level across all documents affected by the ST./ let mut highest_security_level = SecurityLevel::lowest_level(); - for transition in self.transitions_iter() { - if let BatchedTransitionRef::Document(document_transition) = transition { - let document_type_name = document_transition.base().document_type_name(); - let data_contract_id = document_transition.base().data_contract_id(); - let document_security_level = get_data_contract_security_level_requirement( - data_contract_id, - document_type_name.to_owned(), + if self + .transitions_iter() + .any(|transition| matches!(transition, BatchedTransitionRef::Token(_))) + { + // If we ever have a token transition it will be security level critical and so will the whole state transition + highest_security_level = SecurityLevel::CRITICAL; + } else if self + .transitions_iter() + .any(|transition| matches!(transition, BatchedTransitionRef::Document(_))) + { + // We know we don't have token transitions at this point + let get_data_contract_security_level_requirement = + get_data_contract_security_level_requirement.ok_or( + ProtocolError::CorruptedCodeExecution( + "must supply get_data_contract when signing a documents batch transition" + .to_string(), + ), )?; + for transition in self.transitions_iter() { + if let BatchedTransitionRef::Document(document_transition) = transition { + let document_type_name = document_transition.base().document_type_name(); + let data_contract_id = document_transition.base().data_contract_id(); + let document_security_level = get_data_contract_security_level_requirement( + data_contract_id, + document_type_name.to_owned(), + )?; - // lower enum representation means higher in security - if document_security_level < highest_security_level { - highest_security_level = document_security_level + // lower enum representation means higher in security + if document_security_level < highest_security_level { + highest_security_level = document_security_level; + } } } - } + }; + Ok(if highest_security_level == SecurityLevel::MASTER { vec![SecurityLevel::MASTER] } else { diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/v1/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/v1/mod.rs index 809f398642f..2cdc90c1e86 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/v1/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/methods/v1/mod.rs @@ -16,6 +16,8 @@ use crate::identity::IdentityPublicKey; use crate::prelude::{IdentityNonce, UserFeeIncrease}; use crate::state_transition::batch_transition::accessors::DocumentsBatchTransitionAccessorsV0; #[cfg(feature = "state-transition-signing")] +use crate::state_transition::batch_transition::methods::StateTransitionCreationOptions; +#[cfg(feature = "state-transition-signing")] use crate::state_transition::StateTransition; #[cfg(feature = "state-transition-signing")] use crate::tokens::emergency_action::TokenEmergencyAction; @@ -24,8 +26,6 @@ use crate::tokens::token_pricing_schedule::TokenPricingSchedule; #[cfg(feature = "state-transition-signing")] use crate::tokens::{PrivateEncryptedNote, SharedEncryptedNote}; #[cfg(feature = "state-transition-signing")] -use crate::version::FeatureVersion; -#[cfg(feature = "state-transition-signing")] use crate::ProtocolError; #[cfg(feature = "state-transition-signing")] use platform_value::Identifier; @@ -75,9 +75,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to burn tokens, permanently removing them from circulation. @@ -109,9 +107,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to transfer tokens from one identity to another. @@ -147,9 +143,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to freeze tokens belonging to a specific identity. @@ -183,9 +177,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to unfreeze tokens previously frozen for a specific identity. @@ -217,9 +209,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to destroy previously frozen tokens, removing them permanently from supply. @@ -251,9 +241,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to execute an emergency action for a token. @@ -288,9 +276,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to update the configuration of a token. @@ -325,9 +311,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - config_update_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to claim tokens from a distribution source. @@ -360,9 +344,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - config_update_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to set or update the price of a token for direct purchase. @@ -397,9 +379,7 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - config_update_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; /// Creates a `StateTransition` to perform a direct purchase of tokens by a user. @@ -433,8 +413,6 @@ pub trait DocumentsBatchTransitionMethodsV1: DocumentsBatchTransitionAccessorsV0 user_fee_increase: UserFeeIncrease, signer: &S, platform_version: &PlatformVersion, - batch_feature_version: Option, - config_update_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result; } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/v0_methods.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/v0_methods.rs index cbdd6fa1cd9..767ec7b059d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/v0_methods.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/v0_methods.rs @@ -6,8 +6,6 @@ use crate::document::{Document, DocumentV0Getters}; use crate::fee::Credits; #[cfg(feature = "state-transition-signing")] use crate::identity::signer::Signer; -#[cfg(feature = "state-transition-signing")] -use crate::identity::SecurityLevel; use crate::prelude::IdentityNonce; #[cfg(feature = "state-transition-signing")] use crate::prelude::IdentityPublicKey; @@ -33,10 +31,14 @@ use crate::ProtocolError; #[cfg(feature = "state-transition-signing")] use platform_value::Identifier; #[cfg(feature = "state-transition-signing")] -use platform_version::version::{FeatureVersion, PlatformVersion}; +use platform_version::version::PlatformVersion; +#[cfg(feature = "state-transition-signing")] +use crate::data_contract::document_type::accessors::DocumentTypeV0Getters; use crate::state_transition::batch_transition::document_create_transition::v0::v0_methods::DocumentCreateTransitionV0Methods; use crate::state_transition::batch_transition::batched_transition::document_purchase_transition::v0::v0_methods::DocumentPurchaseTransitionV0Methods; use crate::state_transition::batch_transition::batched_transition::document_transition::DocumentTransition; +#[cfg(feature = "state-transition-signing")] +use crate::state_transition::batch_transition::methods::StateTransitionCreationOptions; use crate::state_transition::batch_transition::resolvers::v0::BatchTransitionResolversV0; use crate::state_transition::state_transitions::document::batch_transition::batched_transition::document_transition::DocumentTransitionV0Methods; #[cfg(feature = "state-transition-signing")] @@ -90,10 +92,9 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - create_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { + let resolved_options = options.unwrap_or_default(); let owner_id = document.owner_id(); let create_transition = DocumentCreateTransition::from_document( document, @@ -102,8 +103,8 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info, identity_contract_nonce, platform_version, - create_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV0 { owner_id, @@ -114,10 +115,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -132,19 +135,18 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - replace_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let replace_transition = DocumentReplaceTransition::from_document( document, document_type, token_payment_info, identity_contract_nonce, platform_version, - replace_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV0 { owner_id, @@ -155,10 +157,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -174,11 +178,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - transfer_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let transfer_transition = DocumentTransferTransition::from_document( document, document_type, @@ -186,8 +189,8 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { identity_contract_nonce, recipient_owner_id, platform_version, - transfer_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV0 { owner_id, @@ -198,10 +201,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -216,19 +221,18 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let delete_transition = DocumentDeleteTransition::from_document( document, document_type, token_payment_info, identity_contract_nonce, platform_version, - delete_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV0 { owner_id, @@ -239,10 +243,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -258,11 +264,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - update_price_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let transfer_transition = DocumentUpdatePriceTransition::from_document( document, document_type, @@ -270,8 +275,8 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info, identity_contract_nonce, platform_version, - update_price_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV0 { owner_id, @@ -282,10 +287,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -302,10 +309,9 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - purchase_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { + let resolved_options = options.unwrap_or_default(); let purchase_transition = DocumentPurchaseTransition::from_document( document, document_type, @@ -313,8 +319,8 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { token_payment_info, identity_contract_nonce, platform_version, - purchase_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV0 { owner_id: new_owner_id, @@ -325,10 +331,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV0 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/v0_methods.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/v0_methods.rs index a81910c3fe4..ae085122f55 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/v0_methods.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/v0_methods.rs @@ -5,8 +5,6 @@ use crate::document::{Document, DocumentV0Getters}; use crate::fee::Credits; #[cfg(feature = "state-transition-signing")] use crate::identity::signer::Signer; -#[cfg(feature = "state-transition-signing")] -use crate::identity::SecurityLevel; use crate::prelude::IdentityNonce; #[cfg(feature = "state-transition-signing")] use crate::prelude::IdentityPublicKey; @@ -38,9 +36,13 @@ use crate::ProtocolError; #[cfg(feature = "state-transition-signing")] use platform_value::Identifier; #[cfg(feature = "state-transition-signing")] -use platform_version::version::{FeatureVersion, PlatformVersion}; +use platform_version::version::PlatformVersion; +#[cfg(feature = "state-transition-signing")] +use crate::data_contract::document_type::accessors::DocumentTypeV0Getters; use crate::state_transition::batch_transition::document_create_transition::v0::v0_methods::DocumentCreateTransitionV0Methods; use crate::state_transition::batch_transition::batched_transition::document_purchase_transition::v0::v0_methods::DocumentPurchaseTransitionV0Methods; +#[cfg(feature = "state-transition-signing")] +use crate::state_transition::batch_transition::methods::StateTransitionCreationOptions; use crate::state_transition::batch_transition::resolvers::v0::BatchTransitionResolversV0; #[cfg(feature = "state-transition-signing")] use crate::tokens::token_payment_info::TokenPaymentInfo; @@ -95,11 +97,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - create_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let create_transition = DocumentCreateTransition::from_document( document, document_type, @@ -107,8 +108,8 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info, identity_contract_nonce, platform_version, - create_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV1 { owner_id, @@ -119,10 +120,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -137,19 +140,18 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - replace_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let replace_transition = DocumentReplaceTransition::from_document( document, document_type, token_payment_info, identity_contract_nonce, platform_version, - replace_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV1 { owner_id, @@ -160,10 +162,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -178,19 +182,18 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - delete_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let delete_transition = DocumentDeleteTransition::from_document( document, document_type, token_payment_info, identity_contract_nonce, platform_version, - delete_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV1 { owner_id, @@ -201,10 +204,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -220,11 +225,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - transfer_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let transfer_transition = DocumentTransferTransition::from_document( document, document_type, @@ -232,8 +236,8 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { identity_contract_nonce, recipient_owner_id, platform_version, - transfer_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV1 { owner_id, @@ -244,10 +248,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -263,11 +269,10 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - update_price_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { let owner_id = document.owner_id(); + let resolved_options = options.unwrap_or_default(); let transfer_transition = DocumentUpdatePriceTransition::from_document( document, document_type, @@ -275,8 +280,8 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info, identity_contract_nonce, platform_version, - update_price_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV1 { owner_id, @@ -287,10 +292,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } @@ -307,10 +314,9 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info: Option, signer: &S, platform_version: &PlatformVersion, - _batch_feature_version: Option, - purchase_feature_version: Option, - base_feature_version: Option, + options: Option, ) -> Result { + let resolved_options = options.unwrap_or_default(); let purchase_transition = DocumentPurchaseTransition::from_document( document, document_type, @@ -318,8 +324,8 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { token_payment_info, identity_contract_nonce, platform_version, - purchase_feature_version, - base_feature_version, + resolved_options.method_feature_version, + resolved_options.base_feature_version, )?; let documents_batch_transition: BatchTransition = BatchTransitionV1 { owner_id: new_owner_id, @@ -330,10 +336,12 @@ impl DocumentsBatchTransitionMethodsV0 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( + let required_security_level = document_type.security_level_requirement(); + state_transition.sign_external_with_options( identity_public_key, signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), + Some(|_, _| Ok(required_security_level)), + resolved_options.signing_options, )?; Ok(state_transition) } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/v1_methods.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/v1_methods.rs index 1130c0e17cb..8c0f1d4a996 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/v1_methods.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/v1_methods.rs @@ -3,8 +3,6 @@ use crate::fee::Credits; #[cfg(feature = "state-transition-signing")] use crate::identity::signer::Signer; #[cfg(feature = "state-transition-signing")] -use crate::identity::SecurityLevel; -#[cfg(feature = "state-transition-signing")] use crate::prelude::IdentityNonce; #[cfg(feature = "state-transition-signing")] use crate::prelude::IdentityPublicKey; @@ -26,7 +24,7 @@ use crate::ProtocolError; #[cfg(feature = "state-transition-signing")] use platform_value::Identifier; #[cfg(feature = "state-transition-signing")] -use platform_version::version::{FeatureVersion, PlatformVersion}; +use platform_version::version::PlatformVersion; #[cfg(feature = "state-transition-signing")] use crate::balances::credits::TokenAmount; #[cfg(feature = "state-transition-signing")] @@ -37,6 +35,8 @@ use crate::data_contract::associated_token::token_distribution_key::TokenDistrib use crate::group::{GroupStateTransitionInfo, GroupStateTransitionInfoStatus}; #[cfg(feature = "state-transition-signing")] use crate::state_transition::batch_transition::batched_transition::multi_party_action::AllowedAsMultiPartyAction; +#[cfg(feature = "state-transition-signing")] +use crate::state_transition::batch_transition::methods::StateTransitionCreationOptions; use crate::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; #[cfg(feature = "state-transition-signing")] use crate::state_transition::batch_transition::token_base_transition::token_base_transition_accessors::TokenBaseTransitionAccessors; @@ -69,6 +69,8 @@ use crate::state_transition::batch_transition::token_transfer_transition::TokenT #[cfg(feature = "state-transition-signing")] use crate::state_transition::batch_transition::token_unfreeze_transition::TokenUnfreezeTransitionV0; #[cfg(feature = "state-transition-signing")] +use crate::state_transition::GetDataContractSecurityLevelRequirementFn; +#[cfg(feature = "state-transition-signing")] use crate::tokens::emergency_action::TokenEmergencyAction; #[cfg(feature = "state-transition-signing")] use crate::tokens::{PrivateEncryptedNote, SharedEncryptedNote}; @@ -91,9 +93,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _delete_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let mut mint_transition = TokenMintTransition::V0(TokenMintTransitionV0 { base: TokenBaseTransition::V0(TokenBaseTransitionV0 { @@ -137,11 +137,21 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } + Ok(state_transition) } @@ -159,9 +169,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _delete_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let mut burn_transition = TokenBurnTransition::V0(TokenBurnTransitionV0 { base: TokenBaseTransition::V0(TokenBaseTransitionV0 { @@ -207,11 +215,20 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { // Create the state transition let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -231,9 +248,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _delete_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { // Create the transfer transition for batch version 1 let transfer_transition = TokenTransferTransition::V0(TokenTransferTransitionV0 { @@ -263,11 +278,20 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { // Create the state transition let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -286,9 +310,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _delete_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let mut freeze_transition = TokenFreezeTransition::V0(TokenFreezeTransitionV0 { base: TokenBaseTransition::V0(TokenBaseTransitionV0 { @@ -332,12 +354,22 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { signature: Default::default(), } .into(); + let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -355,9 +387,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _delete_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let mut unfreeze_transition = TokenUnfreezeTransition::V0(TokenUnfreezeTransitionV0 { base: TokenBaseTransition::V0(TokenBaseTransitionV0 { @@ -401,12 +431,22 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { signature: Default::default(), } .into(); + let mut state_transition: StateTransition = documents_batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -424,9 +464,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _delete_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let mut destroy_frozen_funds_transition = TokenDestroyFrozenFundsTransition::V0(TokenDestroyFrozenFundsTransitionV0 { @@ -474,11 +512,20 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -496,9 +543,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _delete_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let mut emergency_action_transition = TokenEmergencyActionTransition::V0(TokenEmergencyActionTransitionV0 { @@ -544,11 +589,20 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -566,9 +620,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _config_update_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let mut config_update_transition = TokenConfigUpdateTransition::V0(TokenConfigUpdateTransitionV0 { @@ -614,11 +666,20 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::CRITICAL)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -635,9 +696,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _config_update_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let claim_transition = TokenClaimTransition::V0(TokenClaimTransitionV0 { base: TokenBaseTransition::V0(TokenBaseTransitionV0 { @@ -660,11 +719,20 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::CRITICAL)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -682,9 +750,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _config_update_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let mut change_direct_purchase_price_transition = TokenSetPriceForDirectPurchaseTransition::V0( @@ -735,11 +801,20 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } @@ -756,9 +831,7 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { user_fee_increase: UserFeeIncrease, signer: &S, _platform_version: &PlatformVersion, - _batch_feature_version: Option, - _config_update_feature_version: Option, - _base_feature_version: Option, + options: Option, ) -> Result { let direct_purchase_transition = TokenDirectPurchaseTransition::V0(TokenDirectPurchaseTransitionV0 { @@ -782,11 +855,20 @@ impl DocumentsBatchTransitionMethodsV1 for BatchTransitionV1 { } .into(); let mut state_transition: StateTransition = batch_transition.into(); - state_transition.sign_external( - identity_public_key, - signer, - Some(|_, _| Ok(SecurityLevel::HIGH)), - )?; + if let Some(options) = options { + state_transition.sign_external_with_options( + identity_public_key, + signer, + None::, + options.signing_options, + )?; + } else { + state_transition.sign_external( + identity_public_key, + signer, + None::, + )?; + } Ok(state_transition) } } diff --git a/packages/rs-dpp/src/state_transition/traits/state_transition_identity_signed.rs b/packages/rs-dpp/src/state_transition/traits/state_transition_identity_signed.rs index 4da43f68c8b..a06d5bd69c7 100644 --- a/packages/rs-dpp/src/state_transition/traits/state_transition_identity_signed.rs +++ b/packages/rs-dpp/src/state_transition/traits/state_transition_identity_signed.rs @@ -17,6 +17,11 @@ use crate::state_transition::errors::WrongPublicKeyPurposeError; ))] use crate::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; use crate::state_transition::StateTransitionLike; +#[cfg(any( + feature = "state-transition-signing", + feature = "state-transition-validation" +))] +use crate::state_transition::StateTransitionSigningOptions; #[cfg(any( feature = "state-transition-signing", @@ -44,17 +49,21 @@ pub trait StateTransitionIdentitySigned: StateTransitionLike { fn verify_public_key_level_and_purpose( &self, public_key: &IdentityPublicKey, + options: StateTransitionSigningOptions, ) -> Result<(), ProtocolError> { - if !self.purpose_requirement().contains(&public_key.purpose()) { + if !options.allow_signing_with_any_purpose + && !self.purpose_requirement().contains(&public_key.purpose()) + { return Err(ProtocolError::WrongPublicKeyPurposeError( WrongPublicKeyPurposeError::new(public_key.purpose(), self.purpose_requirement()), )); } // Otherwise, key security level should be less than MASTER but more or equal than required - if !self - .security_level_requirement(public_key.purpose()) - .contains(&public_key.security_level()) + if !options.allow_signing_with_any_security_level + && !self + .security_level_requirement(public_key.purpose()) + .contains(&public_key.security_level()) { return Err(ProtocolError::InvalidSignaturePublicKeySecurityLevelError( InvalidSignaturePublicKeySecurityLevelError::new( diff --git a/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs b/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs index 94caa353ba5..db5f500ab8b 100644 --- a/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs @@ -2372,8 +2372,6 @@ mod tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2392,8 +2390,6 @@ mod tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/platform_events/block_processing_end_events/tests.rs b/packages/rs-drive-abci/src/execution/platform_events/block_processing_end_events/tests.rs index 6b2c2cd7a8a..b0d3522b515 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/block_processing_end_events/tests.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/block_processing_end_events/tests.rs @@ -83,8 +83,6 @@ mod refund_tests { signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -192,8 +190,6 @@ mod refund_tests { signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -320,8 +316,6 @@ mod refund_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -427,8 +421,6 @@ mod refund_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -537,8 +529,6 @@ mod refund_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -643,8 +633,6 @@ mod refund_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -749,8 +737,6 @@ mod refund_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -856,8 +842,6 @@ mod refund_tests { &signer, &platform_version_with_higher_fees, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/advanced_structure/v0/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/advanced_structure/v0/mod.rs index 0032ff57537..122bd5e9f09 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/advanced_structure/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/advanced_structure/v0/mod.rs @@ -62,7 +62,7 @@ impl DocumentsBatchStateTransitionStructureValidationV0 for BatchTransition { execution_context: &mut StateTransitionExecutionContext, platform_version: &PlatformVersion, ) -> Result, Error> { - let security_levels = action.contract_based_security_level_requirement()?; + let security_levels = action.combined_security_level_requirement()?; let signing_key = identity.loaded_public_keys.get(&self.signature_public_key_id()).ok_or(Error::Execution(ExecutionError::CorruptedCodeExecution("the key must exist for advanced structure validation as we already fetched it during signature validation")))?; diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/creation.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/creation.rs index 0ba6788a588..768f52d33c6 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/creation.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/creation.rs @@ -99,8 +99,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -186,8 +184,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -249,8 +245,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -358,8 +352,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -539,8 +531,6 @@ mod creation_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -561,8 +551,6 @@ mod creation_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -583,8 +571,6 @@ mod creation_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -604,8 +590,6 @@ mod creation_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -963,8 +947,6 @@ mod creation_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1237,8 +1219,6 @@ mod creation_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1585,8 +1565,6 @@ mod creation_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1607,8 +1585,6 @@ mod creation_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1629,8 +1605,6 @@ mod creation_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1651,8 +1625,6 @@ mod creation_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1672,8 +1644,6 @@ mod creation_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1693,8 +1663,6 @@ mod creation_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2132,8 +2100,6 @@ mod creation_tests { &contender_1_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2364,8 +2330,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2427,8 +2391,6 @@ mod creation_tests { &another_identity_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2550,8 +2512,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2688,8 +2648,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2831,8 +2789,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2973,8 +2929,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3107,8 +3061,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3241,8 +3193,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3364,8 +3314,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3497,8 +3445,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3658,8 +3604,6 @@ mod creation_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs index d5d511abb30..347a355336c 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs @@ -64,8 +64,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -108,8 +106,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -247,8 +243,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -291,8 +285,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -413,8 +405,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -457,8 +447,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -579,8 +567,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -623,8 +609,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -716,8 +700,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -821,8 +803,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -887,8 +867,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1002,8 +980,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1068,8 +1044,6 @@ mod deletion_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs index 427d39348fd..cab9899981f 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs @@ -218,8 +218,6 @@ mod dpns_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -240,8 +238,6 @@ mod dpns_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -262,8 +258,6 @@ mod dpns_tests { &signer_3, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -284,8 +278,6 @@ mod dpns_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -305,8 +297,6 @@ mod dpns_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -326,8 +316,6 @@ mod dpns_tests { &signer_3, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -679,8 +667,6 @@ mod dpns_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -701,8 +687,6 @@ mod dpns_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -723,8 +707,6 @@ mod dpns_tests { &signer_3, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -745,8 +727,6 @@ mod dpns_tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -766,8 +746,6 @@ mod dpns_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -787,8 +765,6 @@ mod dpns_tests { &signer_3, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs index d90c717889a..6ba43deb0dc 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs @@ -53,8 +53,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -124,8 +122,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -214,8 +210,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -308,8 +302,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -436,8 +428,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -556,8 +546,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -673,8 +661,6 @@ mod nft_tests { &recipient_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); @@ -834,8 +820,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -958,8 +942,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1054,8 +1036,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -1183,8 +1163,6 @@ mod nft_tests { &recipient_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); @@ -1343,8 +1321,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1467,8 +1443,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -1586,8 +1560,6 @@ mod nft_tests { &recipient_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); @@ -1731,8 +1703,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1778,8 +1748,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -1829,8 +1797,6 @@ mod nft_tests { &recipient_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); @@ -1926,8 +1892,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1973,8 +1937,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -2024,8 +1986,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); @@ -2126,8 +2086,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2173,8 +2131,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -2224,8 +2180,6 @@ mod nft_tests { &recipient_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); @@ -2336,8 +2290,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); @@ -2432,8 +2384,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2526,8 +2476,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -2621,8 +2569,6 @@ mod nft_tests { &recipient_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); @@ -2714,8 +2660,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2763,8 +2707,6 @@ mod nft_tests { &other_identity_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -2915,8 +2857,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3018,8 +2958,6 @@ mod nft_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the update price"); @@ -3116,8 +3054,6 @@ mod nft_tests { &recipient_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for the purchase"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs index ed72f0c583b..e1eb420207a 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs @@ -67,8 +67,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -111,8 +109,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -221,8 +217,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -278,8 +272,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -569,8 +561,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -613,8 +603,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -701,8 +689,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -797,8 +783,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for transfer"); @@ -905,8 +889,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1009,8 +991,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1074,8 +1054,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1094,8 +1072,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1228,8 +1204,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1297,8 +1271,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1317,8 +1289,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1488,8 +1458,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1557,8 +1525,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1577,8 +1543,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1752,8 +1716,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1821,8 +1783,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1841,8 +1801,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2030,8 +1988,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2083,8 +2039,6 @@ mod replacement_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs index 8a0e7ea99fd..02743269f77 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs @@ -75,8 +75,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -122,8 +120,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for transfer"); @@ -231,8 +227,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -325,8 +319,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for transfer"); @@ -457,8 +449,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -551,8 +541,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for transfer"); @@ -703,8 +691,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for transfer"); @@ -809,8 +795,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -903,8 +887,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for transfer"); @@ -972,8 +954,6 @@ mod transfer_tests { &recipient_signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1110,8 +1090,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1210,8 +1188,6 @@ mod transfer_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition for transfer"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/direct_selling/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/direct_selling/mod.rs index cadee083539..150b5ffc103 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/direct_selling/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/direct_selling/mod.rs @@ -57,8 +57,6 @@ mod token_selling_tests { &seller_signer, platform_version, None, - None, - None, ) .unwrap(); @@ -123,8 +121,6 @@ mod token_selling_tests { &buyer_signer, platform_version, None, - None, - None, ) .unwrap(); @@ -211,8 +207,6 @@ mod token_selling_tests { &seller_signer, platform_version, None, - None, - None, ) .unwrap(); @@ -242,8 +236,6 @@ mod token_selling_tests { &buyer_signer, platform_version, None, - None, - None, ) .unwrap(); @@ -333,8 +325,6 @@ mod token_selling_tests { &seller_signer, platform_version, None, - None, - None, ) .unwrap(); @@ -363,8 +353,6 @@ mod token_selling_tests { &buyer_signer, platform_version, None, - None, - None, ) .unwrap(); @@ -570,8 +558,6 @@ mod token_selling_tests { seller_signer, platform_version, None, - None, - None, ) .unwrap(); *identity_contract_nonce += 1; diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/block_based.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/block_based.rs index 120933bcc22..40a059cc3a1 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/block_based.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/block_based.rs @@ -74,8 +74,6 @@ mod perpetual_distribution_block { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -142,8 +140,6 @@ mod perpetual_distribution_block { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -212,8 +208,6 @@ mod perpetual_distribution_block { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -323,8 +317,6 @@ mod perpetual_distribution_block { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -445,8 +437,6 @@ mod perpetual_distribution_block { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2770,8 +2760,6 @@ mod test_suite { &self.signer, self.platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/time_based.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/time_based.rs index f5433c5fb0f..5c51237bc3f 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/time_based.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/time_based.rs @@ -71,8 +71,6 @@ mod perpetual_distribution_time { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -139,8 +137,6 @@ mod perpetual_distribution_time { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -209,8 +205,6 @@ mod perpetual_distribution_time { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -321,8 +315,6 @@ mod perpetual_distribution_time { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -445,8 +437,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -564,8 +554,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -634,8 +622,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -754,8 +740,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -826,8 +810,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -947,8 +929,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1017,8 +997,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1138,8 +1116,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1204,8 +1180,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1324,8 +1298,6 @@ mod perpetual_distribution_time { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/pre_programmed.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/pre_programmed.rs index 70df806caf2..ab3ee2b5c2b 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/pre_programmed.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/pre_programmed.rs @@ -65,8 +65,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -132,8 +130,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -235,8 +231,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -302,8 +296,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -408,8 +400,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -518,8 +508,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -585,8 +573,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -691,8 +677,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -812,8 +796,6 @@ mod pre_programmed_distribution { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); 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 2b2e84fe086..4aa5901896b 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 @@ -76,8 +76,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -164,8 +162,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -254,8 +250,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -348,8 +342,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -438,8 +430,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -531,8 +521,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -621,8 +609,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -721,8 +707,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -818,8 +802,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -911,8 +893,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1014,8 +994,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1114,8 +1092,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1223,8 +1199,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1336,8 +1310,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1451,8 +1423,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1562,8 +1532,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1639,8 +1607,6 @@ mod token_tests { &signer2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1760,8 +1726,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1838,8 +1802,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1972,8 +1934,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2049,8 +2009,6 @@ mod token_tests { &signer2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2131,8 +2089,6 @@ mod token_tests { &signer2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2266,8 +2222,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2343,8 +2297,6 @@ mod token_tests { &signer2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2425,8 +2377,6 @@ mod token_tests { &signer3, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2552,8 +2502,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2668,8 +2616,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2745,8 +2691,6 @@ mod token_tests { &signer2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2884,8 +2828,6 @@ mod token_tests { &signer2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2989,8 +2931,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3076,8 +3016,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3170,8 +3108,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3241,10 +3177,9 @@ mod token_tests { use dpp::state_transition::batch_transition::TokenMintTransition; use dpp::data_contract::group::v0::GroupV0; use dpp::group::{GroupStateTransitionInfo, GroupStateTransitionInfoStatus}; - use dpp::identity::SecurityLevel; use dpp::state_transition::batch_transition::accessors::DocumentsBatchTransitionAccessorsV0; use dpp::state_transition::batch_transition::batched_transition::token_transition::TokenTransition; - use dpp::state_transition::StateTransition; + use dpp::state_transition::{GetDataContractSecurityLevelRequirementFn, StateTransition}; use dpp::state_transition::batch_transition::batched_transition::BatchedTransitionMutRef; use dpp::state_transition::batch_transition::token_base_transition::token_base_transition_accessors::TokenBaseTransitionAccessors; use dpp::state_transition::batch_transition::token_base_transition::v0::v0_methods::TokenBaseTransitionV0Methods; @@ -3295,8 +3230,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3409,8 +3342,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3495,8 +3426,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3558,8 +3487,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3670,8 +3597,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3731,8 +3656,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3808,8 +3731,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3871,8 +3792,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -3972,8 +3891,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4064,8 +3981,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4191,8 +4106,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4250,8 +4163,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4274,7 +4185,11 @@ mod token_tests { } token_transfer_transition - .sign_external(&key, &signer, Some(|_, _| Ok(SecurityLevel::HIGH))) + .sign_external( + &key, + &signer, + None::, + ) .expect("expected to resign transaction"); let token_transfer_serialized_transition = token_transfer_transition @@ -4391,8 +4306,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4500,8 +4413,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4562,8 +4473,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4671,8 +4580,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4735,8 +4642,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4813,8 +4718,6 @@ mod token_tests { &signer2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4892,8 +4795,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -4956,8 +4857,6 @@ mod token_tests { &signer2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5078,8 +4977,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5142,8 +5039,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5265,8 +5160,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5370,8 +5263,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5518,8 +5409,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5631,8 +5520,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5681,8 +5568,6 @@ mod token_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5788,8 +5673,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5880,8 +5763,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -5972,8 +5853,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6080,8 +5959,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6205,8 +6082,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6281,8 +6156,6 @@ mod token_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6431,8 +6304,6 @@ mod token_tests { &signer_3, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6514,8 +6385,6 @@ mod token_tests { &signer_4, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6599,8 +6468,6 @@ mod token_tests { &signer_5, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6656,8 +6523,6 @@ mod token_tests { &signer_5, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6724,8 +6589,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6784,8 +6647,6 @@ mod token_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6872,8 +6733,6 @@ mod token_tests { &signer, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -6932,8 +6791,6 @@ mod token_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -7022,8 +6879,6 @@ mod token_tests { &signer_3, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -7091,8 +6946,6 @@ mod token_tests { &signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs index 030f6e22b04..6de07feec4e 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs @@ -1111,8 +1111,6 @@ pub(in crate::execution) mod tests { signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1133,8 +1131,6 @@ pub(in crate::execution) mod tests { signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1155,8 +1151,6 @@ pub(in crate::execution) mod tests { signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1176,8 +1170,6 @@ pub(in crate::execution) mod tests { signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1429,8 +1421,6 @@ pub(in crate::execution) mod tests { signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1451,8 +1441,6 @@ pub(in crate::execution) mod tests { signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1473,8 +1461,6 @@ pub(in crate::execution) mod tests { signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1494,8 +1480,6 @@ pub(in crate::execution) mod tests { signer_2, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1655,8 +1639,6 @@ pub(in crate::execution) mod tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -1677,8 +1659,6 @@ pub(in crate::execution) mod tests { &signer_1, platform_version, None, - None, - None, ) .expect("expect to create documents batch transition"); @@ -2596,8 +2576,6 @@ pub(in crate::execution) mod tests { &signer, platform_version, None, - None, - None, ) .expect("batch transition"); @@ -2661,8 +2639,6 @@ pub(in crate::execution) mod tests { &signer, platform_version, None, - None, - None, ) .expect("batch transition"); @@ -2726,8 +2702,6 @@ pub(in crate::execution) mod tests { &signer, platform_version, None, - None, - None, ) .expect("batch transition"); @@ -2873,8 +2847,6 @@ pub(in crate::execution) mod tests { &signer, platform_version, None, - None, - None, ) .expect("replace"); @@ -2941,8 +2913,6 @@ pub(in crate::execution) mod tests { &signer, platform_version, None, - None, - None, ) .expect("delete"); 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 21ab578db9f..c4ce1f3bad6 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/token_tests.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/token_tests.rs @@ -44,12 +44,12 @@ mod tests { let (mut identity1, keys1) = Identity::random_identity_with_main_keys_with_private_key::< Vec<_>, - >(2, &mut rng, platform_version) + >(3, &mut rng, platform_version) .unwrap(); let (mut identity2, keys2) = Identity::random_identity_with_main_keys_with_private_key::< Vec<_>, - >(2, &mut rng, platform_version) + >(3, &mut rng, platform_version) .unwrap(); simple_signer.add_keys(keys1); @@ -194,12 +194,12 @@ mod tests { let (mut identity1, keys1) = Identity::random_identity_with_main_keys_with_private_key::< Vec<_>, - >(2, &mut rng, platform_version) + >(3, &mut rng, platform_version) .unwrap(); let (mut identity2, keys2) = Identity::random_identity_with_main_keys_with_private_key::< Vec<_>, - >(2, &mut rng, platform_version) + >(3, &mut rng, platform_version) .unwrap(); simple_signer.add_keys(keys1); diff --git a/packages/rs-drive/src/state_transition_action/batch/mod.rs b/packages/rs-drive/src/state_transition_action/batch/mod.rs index 5aad18441e0..a01f5b14c2e 100644 --- a/packages/rs-drive/src/state_transition_action/batch/mod.rs +++ b/packages/rs-drive/src/state_transition_action/batch/mod.rs @@ -123,9 +123,7 @@ impl BatchTransitionAction { /// let required_levels = batch_transition_action.contract_based_security_level_requirement()?; /// ``` /// - pub fn contract_based_security_level_requirement( - &self, - ) -> Result, ProtocolError> { + pub fn combined_security_level_requirement(&self) -> Result, ProtocolError> { // Step 1: Get all document types for the ST // Step 2: Get document schema for every type // If schema has security level, use that, if not, use the default security level @@ -134,20 +132,29 @@ impl BatchTransitionAction { let mut highest_security_level = SecurityLevel::lowest_level(); for transition in self.transitions().iter() { - if let BatchedTransitionAction::DocumentAction(document_transition) = transition { - let document_type_name = document_transition.base().document_type_name(); - let data_contract_info = document_transition.base().data_contract_fetch_info(); + match transition { + BatchedTransitionAction::DocumentAction(document_transition) => { + let document_type_name = document_transition.base().document_type_name(); + let data_contract_info = document_transition.base().data_contract_fetch_info(); - let document_type = data_contract_info - .contract - .document_type_for_name(document_type_name)?; + let document_type = data_contract_info + .contract + .document_type_for_name(document_type_name)?; - let document_security_level = document_type.security_level_requirement(); + let document_security_level = document_type.security_level_requirement(); - // lower enum enum representation means higher in security - if document_security_level < highest_security_level { - highest_security_level = document_security_level + // lower enum representation means higher in security + if document_security_level < highest_security_level { + highest_security_level = document_security_level + } + } + BatchedTransitionAction::TokenAction(_) => { + // lower enum representation means higher in security + if highest_security_level != SecurityLevel::MASTER { + highest_security_level = SecurityLevel::CRITICAL + } } + BatchedTransitionAction::BumpIdentityDataContractNonce(_) => {} } } Ok(if highest_security_level == SecurityLevel::MASTER { diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/burn.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/burn.rs index 5e77eae5e65..7b06623b6d1 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/burn.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/burn.rs @@ -9,6 +9,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::calculate_token_id; @@ -127,6 +128,7 @@ impl<'a> TokenBurnTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -155,9 +157,7 @@ impl<'a> TokenBurnTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/claim.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/claim.rs index 880acad6278..fee09ec1364 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/claim.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/claim.rs @@ -8,6 +8,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::calculate_token_id; @@ -116,6 +117,7 @@ impl<'a> TokenClaimTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -143,9 +145,7 @@ impl<'a> TokenClaimTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/config_update.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/config_update.rs index a455511ce32..25f0f6f4a9c 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/config_update.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/config_update.rs @@ -9,6 +9,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::calculate_token_id; @@ -121,6 +122,7 @@ impl<'a> TokenConfigUpdateTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -149,9 +151,7 @@ impl<'a> TokenConfigUpdateTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/destroy.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/destroy.rs index 336283a7527..3eb22186586 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/destroy.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/destroy.rs @@ -8,6 +8,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::calculate_token_id; @@ -135,6 +136,7 @@ impl<'a> TokenDestroyFrozenFundsTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -163,9 +165,7 @@ impl<'a> TokenDestroyFrozenFundsTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/emergency_action.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/emergency_action.rs index 710a1f53f40..14640c1826c 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/emergency_action.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/emergency_action.rs @@ -8,6 +8,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::calculate_token_id; @@ -164,6 +165,7 @@ impl<'a> TokenEmergencyActionTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -192,9 +194,7 @@ impl<'a> TokenEmergencyActionTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/freeze.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/freeze.rs index 23c5487d857..de1d862e47a 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/freeze.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/freeze.rs @@ -8,6 +8,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::calculate_token_id; @@ -135,6 +136,7 @@ impl<'a> TokenFreezeTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -163,9 +165,7 @@ impl<'a> TokenFreezeTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/mint.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/mint.rs index 473d2fd7ac3..5b66cd5e9eb 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/mint.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/mint.rs @@ -9,6 +9,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::calculate_token_id; @@ -155,6 +156,7 @@ impl<'a> TokenMintTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -184,9 +186,7 @@ impl<'a> TokenMintTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/transfer.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/transfer.rs index e4744e5f675..372eda2af43 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/transfer.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/transfer.rs @@ -8,6 +8,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::{calculate_token_id, PrivateEncryptedNote, SharedEncryptedNote}; @@ -159,6 +160,7 @@ impl<'a> TokenTransferTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -189,9 +191,7 @@ impl<'a> TokenTransferTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/fungible_tokens/unfreeze.rs b/packages/rs-sdk/src/platform/transition/fungible_tokens/unfreeze.rs index e3d59ad0e91..7f87891110b 100644 --- a/packages/rs-sdk/src/platform/transition/fungible_tokens/unfreeze.rs +++ b/packages/rs-sdk/src/platform/transition/fungible_tokens/unfreeze.rs @@ -8,6 +8,7 @@ use dpp::identity::signer::Signer; use dpp::identity::IdentityPublicKey; use dpp::prelude::UserFeeIncrease; use dpp::state_transition::batch_transition::methods::v1::DocumentsBatchTransitionMethodsV1; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use dpp::state_transition::batch_transition::BatchTransition; use dpp::state_transition::StateTransition; use dpp::tokens::calculate_token_id; @@ -135,6 +136,7 @@ impl<'a> TokenUnfreezeTransitionBuilder<'a> { identity_public_key: &IdentityPublicKey, signer: &impl Signer, platform_version: &PlatformVersion, + options: Option, ) -> Result { let token_id = Identifier::from(calculate_token_id( self.data_contract.id().as_bytes(), @@ -163,9 +165,7 @@ impl<'a> TokenUnfreezeTransitionBuilder<'a> { self.user_fee_increase.unwrap_or_default(), signer, platform_version, - None, - None, - None, + options, )?; Ok(state_transition) diff --git a/packages/rs-sdk/src/platform/transition/purchase_document.rs b/packages/rs-sdk/src/platform/transition/purchase_document.rs index 11ea6488426..e6251d984e5 100644 --- a/packages/rs-sdk/src/platform/transition/purchase_document.rs +++ b/packages/rs-sdk/src/platform/transition/purchase_document.rs @@ -82,9 +82,7 @@ impl PurchaseDocument for Document { token_payment_info, signer, sdk.version(), - None, - None, - None, + settings.state_transition_creation_options, )?; transition.broadcast(sdk, Some(settings)).await?; diff --git a/packages/rs-sdk/src/platform/transition/put_document.rs b/packages/rs-sdk/src/platform/transition/put_document.rs index a61d978d2f6..7db38e38476 100644 --- a/packages/rs-sdk/src/platform/transition/put_document.rs +++ b/packages/rs-sdk/src/platform/transition/put_document.rs @@ -70,9 +70,7 @@ impl PutDocument for Document { None, signer, sdk.version(), - None, - None, - None, + settings.state_transition_creation_options, )?; // response is empty for a broadcast, result comes from the stream wait for state transition result diff --git a/packages/rs-sdk/src/platform/transition/put_settings.rs b/packages/rs-sdk/src/platform/transition/put_settings.rs index 02d60100b3e..2d1d58c273a 100644 --- a/packages/rs-sdk/src/platform/transition/put_settings.rs +++ b/packages/rs-sdk/src/platform/transition/put_settings.rs @@ -1,6 +1,7 @@ use std::time::Duration; use dpp::prelude::UserFeeIncrease; +use dpp::state_transition::batch_transition::methods::StateTransitionCreationOptions; use rs_dapi_client::RequestSettings; /// The options when putting something to platform @@ -9,6 +10,7 @@ pub struct PutSettings { pub request_settings: RequestSettings, pub identity_nonce_stale_time_s: Option, pub user_fee_increase: Option, + pub state_transition_creation_options: Option, /// Soft limit of total time to wait for state transition to be executed (included in a block). /// /// This is an upper limit, and other settings may affect the actual wait time diff --git a/packages/rs-sdk/src/platform/transition/transfer_document.rs b/packages/rs-sdk/src/platform/transition/transfer_document.rs index 0dae7f03fd9..08c2da69aa9 100644 --- a/packages/rs-sdk/src/platform/transition/transfer_document.rs +++ b/packages/rs-sdk/src/platform/transition/transfer_document.rs @@ -78,9 +78,7 @@ impl TransferDocument for Document { token_payment_info, signer, sdk.version(), - None, - None, - None, + settings.state_transition_creation_options, )?; let request = transition.broadcast_request_for_state_transition()?; diff --git a/packages/rs-sdk/src/platform/transition/update_price_of_document.rs b/packages/rs-sdk/src/platform/transition/update_price_of_document.rs index c3c362bfc86..eae4a599b41 100644 --- a/packages/rs-sdk/src/platform/transition/update_price_of_document.rs +++ b/packages/rs-sdk/src/platform/transition/update_price_of_document.rs @@ -78,9 +78,7 @@ impl UpdatePriceOfDocument for Document { token_payment_info, signer, sdk.version(), - None, - None, - None, + settings.state_transition_creation_options, )?; // response is empty for a broadcast, result comes from the stream wait for state transition result