@dashevo/wasm-dpp 0.24.0-dev.29 → 0.25.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.toml +2 -2
- package/dist/wasm/wasm_dpp.d.ts +722 -571
- package/dist/wasm/wasm_dpp.js +169 -106
- package/dist/wasm/wasm_dpp_bg.js +1 -1
- package/lib/wasm/wasm_dpp.d.ts +722 -571
- package/package.json +3 -3
- package/src/data_contract/data_contract.rs +1 -1
- package/src/data_contract/data_contract_facade.rs +2 -2
- package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +2 -12
- package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +5 -3
- package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +6 -2
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +2 -14
- package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +6 -4
- package/src/decode_protocol_entity.rs +19 -19
- package/src/document/extended_document.rs +4 -1
- package/src/document/fetch_and_validate_data_contract.rs +2 -2
- package/src/document/mod.rs +5 -3
- package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +9 -6
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +1 -1
- package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +1 -1
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +1 -2
- package/src/document/state_transition/document_batch_transition/mod.rs +13 -17
- package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +4 -4
- package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +3 -1
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +3 -3
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +4 -4
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -1
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +2 -2
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +1 -1
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -1
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -1
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -1
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -1
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +2 -2
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -1
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -1
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +35 -0
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -1
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -1
- package/src/errors/consensus/basic/identity/mod.rs +2 -0
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +2 -2
- package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -3
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -1
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -1
- package/src/errors/consensus/basic/json_schema_error.rs +1 -3
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
- package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -2
- package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -1
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -1
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -1
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -1
- package/src/errors/consensus/consensus_error.rs +24 -4
- package/src/errors/consensus/deserialize.rs +1 -1
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +1 -1
- package/src/errors/consensus/signature/basic_bls_error.rs +38 -0
- package/src/errors/consensus/signature/basic_ecdsa_error.rs +38 -0
- package/src/errors/consensus/signature/mod.rs +6 -0
- package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +38 -0
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +58 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +66 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +50 -1
- package/src/errors/consensus/state/document/document_already_present_error.rs +1 -1
- package/src/errors/consensus/state/document/document_not_found_error.rs +1 -1
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -1
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +2 -2
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -1
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -1
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +1 -1
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -1
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -1
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -1
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +1 -1
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -1
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -1
- package/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs +26 -0
- package/src/errors/consensus/state/identity/mod.rs +2 -0
- package/src/errors/consensus/value_error.rs +1 -1
- package/src/errors/from.rs +0 -1
- package/src/generate_temporary_ecdsa_private_key.rs +2 -6
- package/src/identity/factory_utils.rs +4 -4
- package/src/identity/identity_public_key/key_type.rs +2 -0
- package/src/identity/identity_public_key/purpose.rs +7 -0
- package/src/identity/mod.rs +1 -1
- package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +6 -2
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +8 -18
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +3 -1
- package/src/identity/state_transition/identity_create_transition/to_object.rs +2 -2
- package/src/identity/state_transition/identity_public_key_transitions.rs +11 -11
- package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +6 -2
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +1 -12
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +3 -1
- package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +3 -1
- package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
- package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +5 -18
- package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +3 -2
- package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
- package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
- package/src/state_repository.rs +3 -2
- package/src/state_transition/fee/calculate_state_transition_fee.rs +8 -5
- package/src/state_transition/state_transition_facade.rs +16 -15
- package/src/state_transition/validation/state_transition_fee_validator.rs +3 -1
- package/src/state_transition/validation/validate_state_transition_identity_signature.rs +3 -1
- package/src/state_transition/validation/validate_state_transition_key_signature.rs +7 -1
- package/src/utils.rs +2 -4
- package/src/validation/validation_result.rs +12 -7
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +0 -17
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +10 -3
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +4 -7
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +20 -7
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -7
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +4 -3
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -3
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +3 -2
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +5 -6
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +20 -18
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +1 -2
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +7 -3
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +1 -2
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -1
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +10 -4
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +3 -1
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +7 -3
package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs
CHANGED
|
@@ -11,8 +11,7 @@ use crate::identifier::IdentifierWrapper;
|
|
|
11
11
|
use crate::{
|
|
12
12
|
buffer::Buffer, errors::RustConversionError,
|
|
13
13
|
identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitnessWasm,
|
|
14
|
-
identity::IdentityPublicKeyWasm,
|
|
15
|
-
with_js_error,
|
|
14
|
+
identity::IdentityPublicKeyWasm, with_js_error,
|
|
16
15
|
};
|
|
17
16
|
|
|
18
17
|
use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
|
|
@@ -20,10 +19,8 @@ use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
|
|
|
20
19
|
use crate::errors::from_dpp_err;
|
|
21
20
|
use crate::utils::{generic_of_js_val, WithJsError};
|
|
22
21
|
|
|
23
|
-
use dpp::consensus::ConsensusError::SignatureError as ConsensusSignatureErrorVariant;
|
|
24
|
-
|
|
25
22
|
use dpp::consensus::ConsensusError;
|
|
26
|
-
use dpp::identity::state_transition::identity_public_key_transitions::
|
|
23
|
+
use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
|
|
27
24
|
use dpp::identity::{KeyID, KeyType, TimestampMillis};
|
|
28
25
|
use dpp::platform_value::string_encoding::Encoding;
|
|
29
26
|
use dpp::platform_value::{string_encoding, BinaryData, Value};
|
|
@@ -47,7 +44,7 @@ struct IdentityUpdateTransitionParams {
|
|
|
47
44
|
protocol_version: u32,
|
|
48
45
|
identity_id: Vec<u8>,
|
|
49
46
|
revision: Revision,
|
|
50
|
-
add_public_keys: Option<Vec<
|
|
47
|
+
add_public_keys: Option<Vec<IdentityPublicKeyInCreationWithWitness>>,
|
|
51
48
|
disable_public_keys: Option<Vec<KeyID>>,
|
|
52
49
|
public_keys_disabled_at: Option<TimestampMillis>,
|
|
53
50
|
}
|
|
@@ -106,7 +103,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
106
103
|
)?;
|
|
107
104
|
Ok(public_key.clone().into())
|
|
108
105
|
})
|
|
109
|
-
.collect::<Result<Vec<
|
|
106
|
+
.collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
|
|
110
107
|
}
|
|
111
108
|
|
|
112
109
|
self.0.set_public_keys_to_add(keys_to_add);
|
|
@@ -298,7 +295,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
298
295
|
|
|
299
296
|
let buffer = self
|
|
300
297
|
.0
|
|
301
|
-
.
|
|
298
|
+
.to_cbor_buffer(opts.skip_signature.unwrap_or(false))
|
|
302
299
|
.map_err(from_dpp_err)?;
|
|
303
300
|
|
|
304
301
|
Ok(Buffer::from_bytes(&buffer).into())
|
|
@@ -420,16 +417,6 @@ impl IdentityUpdateTransitionWasm {
|
|
|
420
417
|
self.0.is_identity_state_transition()
|
|
421
418
|
}
|
|
422
419
|
|
|
423
|
-
#[wasm_bindgen(js_name=setExecutionContext)]
|
|
424
|
-
pub fn set_execution_context(&mut self, context: &StateTransitionExecutionContextWasm) {
|
|
425
|
-
self.0.set_execution_context(context.into())
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
#[wasm_bindgen(js_name=getExecutionContext)]
|
|
429
|
-
pub fn get_execution_context(&mut self) -> StateTransitionExecutionContextWasm {
|
|
430
|
-
self.0.get_execution_context().into()
|
|
431
|
-
}
|
|
432
|
-
|
|
433
420
|
#[wasm_bindgen(js_name=signByPrivateKey)]
|
|
434
421
|
pub fn sign_by_private_key(
|
|
435
422
|
&mut self,
|
|
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
|
|
2
2
|
|
|
3
3
|
use crate::state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper};
|
|
4
4
|
use crate::validation::ValidationResultWasm;
|
|
5
|
-
use crate::{IdentityUpdateTransitionWasm};
|
|
5
|
+
use crate::{IdentityUpdateTransitionWasm, StateTransitionExecutionContextWasm};
|
|
6
6
|
use wasm_bindgen::prelude::*;
|
|
7
7
|
use wasm_bindgen::JsValue;
|
|
8
8
|
use dpp::identity::state_transition::identity_update_transition::identity_update_transition::IdentityUpdateTransition;
|
|
@@ -40,12 +40,13 @@ impl IdentityUpdateTransitionStateValidatorWasm {
|
|
|
40
40
|
pub async fn validate(
|
|
41
41
|
&self,
|
|
42
42
|
state_transition: &IdentityUpdateTransitionWasm,
|
|
43
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
43
44
|
) -> Result<ValidationResultWasm, JsValue> {
|
|
44
45
|
let state_transition: IdentityUpdateTransition = state_transition.to_owned().into();
|
|
45
46
|
|
|
46
47
|
let validation_result = self
|
|
47
48
|
.0
|
|
48
|
-
.validate(&state_transition)
|
|
49
|
+
.validate(&state_transition, &execution_context.to_owned().into())
|
|
49
50
|
.await
|
|
50
51
|
.map_err(|e| from_dpp_err(e.into()))?;
|
|
51
52
|
|
|
@@ -2,7 +2,7 @@ use dpp::identity::KeyID;
|
|
|
2
2
|
use dpp::state_transition::StateTransitionIdentitySigned;
|
|
3
3
|
use dpp::{
|
|
4
4
|
identifier::Identifier,
|
|
5
|
-
identity::state_transition::identity_public_key_transitions::
|
|
5
|
+
identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness,
|
|
6
6
|
identity::state_transition::identity_update_transition::identity_update_transition::IdentityUpdateTransition,
|
|
7
7
|
state_transition::StateTransitionLike,
|
|
8
8
|
};
|
|
@@ -23,7 +23,7 @@ pub struct ToObject {
|
|
|
23
23
|
pub signature: Option<Vec<u8>>,
|
|
24
24
|
pub signature_public_key_id: Option<KeyID>,
|
|
25
25
|
pub public_keys_disabled_at: Option<u64>,
|
|
26
|
-
pub public_keys_to_add: Option<Vec<
|
|
26
|
+
pub public_keys_to_add: Option<Vec<IdentityPublicKeyInCreationWithWitness>>,
|
|
27
27
|
pub public_key_ids_to_disable: Option<Vec<KeyID>>,
|
|
28
28
|
pub identity_id: Identifier,
|
|
29
29
|
}
|
|
@@ -10,7 +10,7 @@ use dpp::identity::state_transition::validate_public_key_signatures::{
|
|
|
10
10
|
PublicKeysSignaturesValidator, TPublicKeysSignaturesValidator,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
use dpp::identity::state_transition::identity_public_key_transitions::
|
|
13
|
+
use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
|
|
14
14
|
|
|
15
15
|
use crate::errors::from_dpp_err;
|
|
16
16
|
use dpp::platform_value::Value;
|
|
@@ -44,7 +44,7 @@ impl PublicKeysSignaturesValidatorWasm {
|
|
|
44
44
|
let public_keys = raw_public_keys
|
|
45
45
|
.into_iter()
|
|
46
46
|
.map(|raw_key| {
|
|
47
|
-
let parsed_key:
|
|
47
|
+
let parsed_key: IdentityPublicKeyInCreationWithWitness =
|
|
48
48
|
IdentityPublicKeyWithWitnessWasm::new(raw_key)?.into();
|
|
49
49
|
parsed_key.to_raw_object(false).with_js_error()
|
|
50
50
|
})
|
package/src/state_repository.rs
CHANGED
|
@@ -12,6 +12,7 @@ use dpp::prelude::{Revision, TimestampMillis};
|
|
|
12
12
|
use dpp::{
|
|
13
13
|
dashcore::InstantLock,
|
|
14
14
|
data_contract::DataContract,
|
|
15
|
+
platform_value,
|
|
15
16
|
prelude::{Identifier, Identity},
|
|
16
17
|
state_repository::{
|
|
17
18
|
FetchTransactionResponse as FetchTransactionResponseDPP, StateRepositoryLike,
|
|
@@ -354,7 +355,7 @@ impl StateRepositoryLike for ExternalStateRepositoryLikeWrapper {
|
|
|
354
355
|
&self,
|
|
355
356
|
contract_id: &Identifier,
|
|
356
357
|
data_contract_type: &str,
|
|
357
|
-
where_query:
|
|
358
|
+
where_query: platform_value::Value,
|
|
358
359
|
execution_context: Option<&'a StateTransitionExecutionContext>,
|
|
359
360
|
) -> anyhow::Result<Vec<Self::FetchDocument>> {
|
|
360
361
|
let js_documents = self
|
|
@@ -385,7 +386,7 @@ impl StateRepositoryLike for ExternalStateRepositoryLikeWrapper {
|
|
|
385
386
|
&self,
|
|
386
387
|
contract_id: &Identifier,
|
|
387
388
|
data_contract_type: &str,
|
|
388
|
-
where_query:
|
|
389
|
+
where_query: platform_value::Value,
|
|
389
390
|
execution_context: Option<&'a StateTransitionExecutionContext>,
|
|
390
391
|
) -> anyhow::Result<Vec<Self::FetchExtendedDocument>> {
|
|
391
392
|
let js_documents = self
|
|
@@ -6,17 +6,20 @@ use wasm_bindgen::prelude::*;
|
|
|
6
6
|
|
|
7
7
|
use crate::{
|
|
8
8
|
conversion::create_state_transition_from_wasm_instance, fee::fee_result::FeeResultWasm,
|
|
9
|
-
utils::WithJsError,
|
|
9
|
+
utils::WithJsError, StateTransitionExecutionContextWasm,
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
#[wasm_bindgen(js_name=calculateStateTransitionFee)]
|
|
13
13
|
pub fn calculate_state_transition_fee_wasm(
|
|
14
14
|
state_transition_js: &JsValue,
|
|
15
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
15
16
|
) -> Result<FeeResultWasm, JsValue> {
|
|
16
17
|
let state_transition = create_state_transition_from_wasm_instance(state_transition_js)?;
|
|
17
18
|
|
|
18
|
-
Ok(
|
|
19
|
-
.
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
Ok(
|
|
20
|
+
calculate_state_transition_fee(&state_transition, &execution_context.to_owned().into())
|
|
21
|
+
.map_err(ProtocolError::from)
|
|
22
|
+
.with_js_error()?
|
|
23
|
+
.into(),
|
|
24
|
+
)
|
|
22
25
|
}
|
|
@@ -5,11 +5,10 @@ use crate::state_repository::{ExternalStateRepositoryLike, ExternalStateReposito
|
|
|
5
5
|
use crate::state_transition_factory::StateTransitionFactoryWasm;
|
|
6
6
|
use crate::utils::{ToSerdeJSONExt, WithJsError};
|
|
7
7
|
use crate::validation::ValidationResultWasm;
|
|
8
|
-
use crate::with_js_error;
|
|
8
|
+
use crate::{with_js_error, StateTransitionExecutionContextWasm};
|
|
9
9
|
use dpp::state_transition::state_transition_execution_context::StateTransitionExecutionContext;
|
|
10
10
|
use dpp::state_transition::{
|
|
11
|
-
StateTransitionConvert, StateTransitionFacade,
|
|
12
|
-
ValidateOptions,
|
|
11
|
+
StateTransitionConvert, StateTransitionFacade, StateTransitionType, ValidateOptions,
|
|
13
12
|
};
|
|
14
13
|
use dpp::version::ProtocolVersionValidator;
|
|
15
14
|
use serde::Deserialize;
|
|
@@ -17,8 +16,7 @@ use serde::Deserialize;
|
|
|
17
16
|
use crate::errors::protocol_error::from_protocol_error;
|
|
18
17
|
use crate::errors::value_error::PlatformValueErrorWasm;
|
|
19
18
|
use dpp::data_contract::state_transition::data_contract_update_transition::DataContractUpdateTransition;
|
|
20
|
-
|
|
21
|
-
use dpp::ProtocolError;
|
|
19
|
+
|
|
22
20
|
use std::sync::Arc;
|
|
23
21
|
use wasm_bindgen::prelude::*;
|
|
24
22
|
use wasm_bindgen::JsValue;
|
|
@@ -65,7 +63,7 @@ impl StateTransitionFacadeWasm {
|
|
|
65
63
|
let mut raw_state_transition = raw_state_transition.with_serde_to_platform_value()?;
|
|
66
64
|
let state_transition_type: StateTransitionType = raw_state_transition
|
|
67
65
|
.get_integer::<u8>("type")
|
|
68
|
-
.map_err(
|
|
66
|
+
.map_err(PlatformValueErrorWasm::from)?
|
|
69
67
|
.try_into()
|
|
70
68
|
.map_err(|_| JsValue::from_str("Invalid state transition type"))?;
|
|
71
69
|
|
|
@@ -73,7 +71,7 @@ impl StateTransitionFacadeWasm {
|
|
|
73
71
|
match state_transition_type {
|
|
74
72
|
StateTransitionType::DataContractUpdate => {
|
|
75
73
|
DataContractUpdateTransition::clean_value(&mut raw_state_transition)
|
|
76
|
-
.map_err(
|
|
74
|
+
.map_err(PlatformValueErrorWasm::from)?;
|
|
77
75
|
}
|
|
78
76
|
_ => {}
|
|
79
77
|
}
|
|
@@ -116,6 +114,7 @@ impl StateTransitionFacadeWasm {
|
|
|
116
114
|
pub async fn validate(
|
|
117
115
|
&self,
|
|
118
116
|
raw_state_transition: JsValue,
|
|
117
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
119
118
|
options: JsValue,
|
|
120
119
|
) -> Result<ValidationResultWasm, JsValue> {
|
|
121
120
|
let options: ValidateOptionsWasm = if options.is_object() {
|
|
@@ -128,7 +127,8 @@ impl StateTransitionFacadeWasm {
|
|
|
128
127
|
super::super::conversion::create_state_transition_from_wasm_instance(
|
|
129
128
|
&raw_state_transition,
|
|
130
129
|
) {
|
|
131
|
-
let execution_context =
|
|
130
|
+
let execution_context: StateTransitionExecutionContext =
|
|
131
|
+
execution_context.to_owned().into();
|
|
132
132
|
(state_transition, execution_context)
|
|
133
133
|
} else {
|
|
134
134
|
let state_transition_json = raw_state_transition.with_serde_to_platform_value()?;
|
|
@@ -154,25 +154,23 @@ impl StateTransitionFacadeWasm {
|
|
|
154
154
|
pub async fn validate_basic(
|
|
155
155
|
&self,
|
|
156
156
|
raw_state_transition: JsValue,
|
|
157
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
157
158
|
) -> Result<ValidationResultWasm, JsValue> {
|
|
158
159
|
let state_transition_json;
|
|
159
|
-
let execution_context;
|
|
160
160
|
|
|
161
161
|
if let Ok(state_transition) =
|
|
162
162
|
super::super::conversion::create_state_transition_from_wasm_instance(
|
|
163
163
|
&raw_state_transition,
|
|
164
164
|
)
|
|
165
165
|
{
|
|
166
|
-
execution_context = state_transition.get_execution_context().to_owned();
|
|
167
166
|
state_transition_json = state_transition.to_cleaned_object(false).with_js_error()?;
|
|
168
167
|
} else {
|
|
169
168
|
state_transition_json = raw_state_transition.with_serde_to_platform_value()?;
|
|
170
|
-
execution_context = StateTransitionExecutionContext::default();
|
|
171
169
|
}
|
|
172
170
|
|
|
173
171
|
let validation_result = self
|
|
174
172
|
.0
|
|
175
|
-
.validate_basic(&state_transition_json, &execution_context)
|
|
173
|
+
.validate_basic(&state_transition_json, &execution_context.to_owned().into())
|
|
176
174
|
.await
|
|
177
175
|
.with_js_error()?;
|
|
178
176
|
|
|
@@ -183,6 +181,7 @@ impl StateTransitionFacadeWasm {
|
|
|
183
181
|
pub async fn validate_signature(
|
|
184
182
|
&self,
|
|
185
183
|
raw_state_transition: JsValue,
|
|
184
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
186
185
|
) -> Result<ValidationResultWasm, JsValue> {
|
|
187
186
|
let state_transition =
|
|
188
187
|
super::super::conversion::create_state_transition_from_wasm_instance(
|
|
@@ -191,7 +190,7 @@ impl StateTransitionFacadeWasm {
|
|
|
191
190
|
|
|
192
191
|
let validation_result = self
|
|
193
192
|
.0
|
|
194
|
-
.validate_signature(state_transition)
|
|
193
|
+
.validate_signature(state_transition, &execution_context.to_owned().into())
|
|
195
194
|
.await
|
|
196
195
|
.with_js_error()?;
|
|
197
196
|
|
|
@@ -202,6 +201,7 @@ impl StateTransitionFacadeWasm {
|
|
|
202
201
|
pub async fn validate_fee(
|
|
203
202
|
&self,
|
|
204
203
|
raw_state_transition: JsValue,
|
|
204
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
205
205
|
) -> Result<ValidationResultWasm, JsValue> {
|
|
206
206
|
let state_transition =
|
|
207
207
|
super::super::conversion::create_state_transition_from_wasm_instance(
|
|
@@ -210,7 +210,7 @@ impl StateTransitionFacadeWasm {
|
|
|
210
210
|
|
|
211
211
|
let validation_result = self
|
|
212
212
|
.0
|
|
213
|
-
.validate_fee(&state_transition)
|
|
213
|
+
.validate_fee(&state_transition, &execution_context.to_owned().into())
|
|
214
214
|
.await
|
|
215
215
|
.with_js_error()?;
|
|
216
216
|
|
|
@@ -221,6 +221,7 @@ impl StateTransitionFacadeWasm {
|
|
|
221
221
|
pub async fn validate_state(
|
|
222
222
|
&self,
|
|
223
223
|
raw_state_transition: JsValue,
|
|
224
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
224
225
|
) -> Result<ValidationResultWasm, JsValue> {
|
|
225
226
|
let state_transition =
|
|
226
227
|
super::super::conversion::create_state_transition_from_wasm_instance(
|
|
@@ -229,7 +230,7 @@ impl StateTransitionFacadeWasm {
|
|
|
229
230
|
|
|
230
231
|
let validation_result = self
|
|
231
232
|
.0
|
|
232
|
-
.validate_state(&state_transition)
|
|
233
|
+
.validate_state(&state_transition, &execution_context.to_owned().into())
|
|
233
234
|
.await
|
|
234
235
|
.with_js_error()?;
|
|
235
236
|
|
|
@@ -7,6 +7,7 @@ use wasm_bindgen::JsValue;
|
|
|
7
7
|
use crate::state_transition::conversion::create_state_transition_from_wasm_instance;
|
|
8
8
|
use crate::utils::WithJsError;
|
|
9
9
|
use crate::validation::ValidationResultWasm;
|
|
10
|
+
use crate::StateTransitionExecutionContextWasm;
|
|
10
11
|
|
|
11
12
|
#[wasm_bindgen(js_name=StateTransitionFeeValidator)]
|
|
12
13
|
pub struct StateTransitionFeeValidatorWasm(
|
|
@@ -26,11 +27,12 @@ impl StateTransitionFeeValidatorWasm {
|
|
|
26
27
|
pub async fn validate(
|
|
27
28
|
&self,
|
|
28
29
|
state_transition: &JsValue,
|
|
30
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
29
31
|
) -> Result<ValidationResultWasm, JsValue> {
|
|
30
32
|
let st = create_state_transition_from_wasm_instance(state_transition)?;
|
|
31
33
|
Ok(self
|
|
32
34
|
.0
|
|
33
|
-
.validate(&st)
|
|
35
|
+
.validate(&st, &execution_context.to_owned().into())
|
|
34
36
|
.await
|
|
35
37
|
.map(|v| v.map(|_| JsValue::undefined()))
|
|
36
38
|
.with_js_error()?
|
|
@@ -7,9 +7,10 @@ use crate::errors::consensus::consensus_error::from_consensus_error;
|
|
|
7
7
|
use dpp::consensus::basic::state_transition::InvalidStateTransitionTypeError;
|
|
8
8
|
use dpp::consensus::basic::BasicError;
|
|
9
9
|
use dpp::consensus::ConsensusError;
|
|
10
|
+
use dpp::state_transition::state_transition_execution_context::StateTransitionExecutionContext;
|
|
10
11
|
use dpp::state_transition::validation::validate_state_transition_identity_signature::validate_state_transition_identity_signature;
|
|
11
12
|
use dpp::state_transition::{StateTransition, StateTransitionIdentitySigned};
|
|
12
|
-
|
|
13
|
+
|
|
13
14
|
use std::sync::Arc;
|
|
14
15
|
use wasm_bindgen::prelude::wasm_bindgen;
|
|
15
16
|
use wasm_bindgen::JsValue;
|
|
@@ -28,6 +29,7 @@ impl StValidator {
|
|
|
28
29
|
self.state_repository.clone(),
|
|
29
30
|
state_transition,
|
|
30
31
|
&self.bls,
|
|
32
|
+
&StateTransitionExecutionContext::default(), // TODO(v0.24-backport): is it fine using default context here?
|
|
31
33
|
)
|
|
32
34
|
.await
|
|
33
35
|
.with_js_error()?;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
use crate::state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper};
|
|
2
2
|
use crate::utils::WithJsError;
|
|
3
3
|
use crate::validation::ValidationResultWasm;
|
|
4
|
+
use crate::StateTransitionExecutionContextWasm;
|
|
4
5
|
use dpp::identity::state_transition::asset_lock_proof::{
|
|
5
6
|
AssetLockPublicKeyHashFetcher, AssetLockTransactionOutputFetcher,
|
|
6
7
|
};
|
|
@@ -48,13 +49,18 @@ impl StateTransitionKeySignatureValidatorWasm {
|
|
|
48
49
|
pub async fn validate(
|
|
49
50
|
&self,
|
|
50
51
|
state_transition: JsValue,
|
|
52
|
+
execution_context: &StateTransitionExecutionContextWasm,
|
|
51
53
|
) -> Result<ValidationResultWasm, JsValue> {
|
|
52
54
|
let state_transition =
|
|
53
55
|
super::super::conversion::create_state_transition_from_wasm_instance(
|
|
54
56
|
&state_transition,
|
|
55
57
|
)?;
|
|
56
58
|
|
|
57
|
-
let validation_result = self
|
|
59
|
+
let validation_result = self
|
|
60
|
+
.0
|
|
61
|
+
.validate(&state_transition, &execution_context.to_owned().into())
|
|
62
|
+
.await
|
|
63
|
+
.with_js_error()?;
|
|
58
64
|
Ok(validation_result.map(|_| JsValue::undefined()).into())
|
|
59
65
|
}
|
|
60
66
|
}
|
package/src/utils.rs
CHANGED
|
@@ -240,7 +240,7 @@ pub fn get_class_name(value: &JsValue) -> String {
|
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
pub fn try_to_u64(value: JsValue) -> Result<u64, anyhow::Error> {
|
|
243
|
-
|
|
243
|
+
if value.is_bigint() {
|
|
244
244
|
js_sys::BigInt::new(&value)
|
|
245
245
|
.map_err(|e| anyhow!("unable to create bigInt: {}", e.to_string()))?
|
|
246
246
|
.try_into()
|
|
@@ -250,9 +250,7 @@ pub fn try_to_u64(value: JsValue) -> Result<u64, anyhow::Error> {
|
|
|
250
250
|
convert_number_to_u64(number)
|
|
251
251
|
} else {
|
|
252
252
|
bail!("supported types are Number or BigInt")
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
result
|
|
253
|
+
}
|
|
256
254
|
}
|
|
257
255
|
|
|
258
256
|
pub fn convert_number_to_u64(js_number: js_sys::Number) -> Result<u64, anyhow::Error> {
|
|
@@ -3,19 +3,19 @@ use crate::{
|
|
|
3
3
|
errors::consensus::consensus_error::from_consensus_error_ref,
|
|
4
4
|
utils::{consensus_errors_from_buffers, WithJsError},
|
|
5
5
|
};
|
|
6
|
-
use dpp::{consensus::ConsensusError, validation::
|
|
6
|
+
use dpp::{consensus::ConsensusError, validation::ConsensusValidationResult};
|
|
7
7
|
use js_sys::{JsString, Uint8Array};
|
|
8
8
|
use wasm_bindgen::prelude::*;
|
|
9
9
|
|
|
10
10
|
#[wasm_bindgen(js_name=ValidationResult)]
|
|
11
11
|
#[derive(Debug)]
|
|
12
|
-
pub struct ValidationResultWasm(
|
|
12
|
+
pub struct ValidationResultWasm(ConsensusValidationResult<JsValue>);
|
|
13
13
|
|
|
14
|
-
impl<T> From<
|
|
14
|
+
impl<T> From<ConsensusValidationResult<T>> for ValidationResultWasm
|
|
15
15
|
where
|
|
16
16
|
T: Into<JsValue> + Clone,
|
|
17
17
|
{
|
|
18
|
-
fn from(validation_result:
|
|
18
|
+
fn from(validation_result: ConsensusValidationResult<T>) -> Self {
|
|
19
19
|
ValidationResultWasm(validation_result.map(Into::into))
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -27,10 +27,12 @@ impl ValidationResultWasm {
|
|
|
27
27
|
if let Some(errors) = errors_option {
|
|
28
28
|
let consensus_errors: Vec<ConsensusError> = consensus_errors_from_buffers(errors)?;
|
|
29
29
|
|
|
30
|
-
return Ok(Self(
|
|
30
|
+
return Ok(Self(ConsensusValidationResult::new_with_errors(
|
|
31
|
+
consensus_errors,
|
|
32
|
+
)));
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
Ok(Self(
|
|
35
|
+
Ok(Self(ConsensusValidationResult::new_with_errors(vec![])))
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
/// This is just a test method - doesn't need to be in the resulted binding. Please
|
|
@@ -57,7 +59,10 @@ impl ValidationResultWasm {
|
|
|
57
59
|
|
|
58
60
|
#[wasm_bindgen(js_name=getData)]
|
|
59
61
|
pub fn get_data(&self) -> JsValue {
|
|
60
|
-
self.0
|
|
62
|
+
self.0
|
|
63
|
+
.data_as_borrowed()
|
|
64
|
+
.unwrap_or(&JsValue::undefined())
|
|
65
|
+
.to_owned()
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
#[wasm_bindgen(js_name=getFirstError)]
|
|
@@ -17,7 +17,6 @@ describe('validateDataContractFactory', () => {
|
|
|
17
17
|
let UniqueIndicesLimitReachedError;
|
|
18
18
|
let SystemPropertyIndexAlreadyPresentError;
|
|
19
19
|
let InvalidIndexPropertyTypeError;
|
|
20
|
-
let InvalidCompoundIndexError;
|
|
21
20
|
let InvalidIndexedPropertyConstraintError;
|
|
22
21
|
let InvalidJsonSchemaRefError;
|
|
23
22
|
|
|
@@ -32,7 +31,6 @@ describe('validateDataContractFactory', () => {
|
|
|
32
31
|
UniqueIndicesLimitReachedError,
|
|
33
32
|
SystemPropertyIndexAlreadyPresentError,
|
|
34
33
|
InvalidIndexPropertyTypeError,
|
|
35
|
-
InvalidCompoundIndexError,
|
|
36
34
|
InvalidIndexedPropertyConstraintError,
|
|
37
35
|
InvalidJsonSchemaRefError,
|
|
38
36
|
} = await loadWasmDpp());
|
|
@@ -1929,21 +1927,6 @@ describe('validateDataContractFactory', () => {
|
|
|
1929
1927
|
expect(error.getDocumentType()).to.deep.equal('indexedDocument');
|
|
1930
1928
|
expect(error.getIndexName()).to.equal('index1');
|
|
1931
1929
|
});
|
|
1932
|
-
|
|
1933
|
-
it('should return invalid result if unique compound index contains both required and optional properties', async () => {
|
|
1934
|
-
const rawDataContract = dataContract.toObject();
|
|
1935
|
-
rawDataContract.documents.optionalUniqueIndexedDocument.required.splice(-1);
|
|
1936
|
-
|
|
1937
|
-
const result = await validateDataContract(rawDataContract);
|
|
1938
|
-
|
|
1939
|
-
expectValidationError(result, InvalidCompoundIndexError);
|
|
1940
|
-
|
|
1941
|
-
const [error] = result.getErrors();
|
|
1942
|
-
|
|
1943
|
-
expect(error.getCode()).to.equal(1010);
|
|
1944
|
-
expect(error.getIndexName()).to.equal('index2');
|
|
1945
|
-
expect(error.getDocumentType()).to.equal('optionalUniqueIndexedDocument');
|
|
1946
|
-
});
|
|
1947
1930
|
});
|
|
1948
1931
|
});
|
|
1949
1932
|
|
|
@@ -78,7 +78,11 @@ describe('DocumentBatchTransition', () => {
|
|
|
78
78
|
|
|
79
79
|
// Nice document has medium security level
|
|
80
80
|
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
81
|
-
.to.
|
|
81
|
+
.to.deep.equal([
|
|
82
|
+
IdentityPublicKey.SECURITY_LEVELS.CRITICAL,
|
|
83
|
+
IdentityPublicKey.SECURITY_LEVELS.HIGH,
|
|
84
|
+
IdentityPublicKey.SECURITY_LEVELS.MEDIUM,
|
|
85
|
+
]);
|
|
82
86
|
|
|
83
87
|
stateTransitionFixture = documentFactory.createStateTransition({
|
|
84
88
|
create: [mediumSecurityDocumentFixture, masterSecurityDocumentFixture],
|
|
@@ -88,7 +92,7 @@ describe('DocumentBatchTransition', () => {
|
|
|
88
92
|
|
|
89
93
|
// Should be the highest security level out of MEDIUM and MASTER
|
|
90
94
|
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
91
|
-
.to.
|
|
95
|
+
.to.deep.equal([IdentityPublicKey.SECURITY_LEVELS.MASTER]);
|
|
92
96
|
});
|
|
93
97
|
|
|
94
98
|
it('should return default security level if no document has a security level defined - Rust', () => {
|
|
@@ -100,7 +104,10 @@ describe('DocumentBatchTransition', () => {
|
|
|
100
104
|
|
|
101
105
|
// Should be the default level, which is HIGH
|
|
102
106
|
expect(stateTransitionFixture.getKeySecurityLevelRequirement())
|
|
103
|
-
.to.
|
|
107
|
+
.to.deep.equal([
|
|
108
|
+
IdentityPublicKey.SECURITY_LEVELS.CRITICAL,
|
|
109
|
+
IdentityPublicKey.SECURITY_LEVELS.HIGH,
|
|
110
|
+
]);
|
|
104
111
|
});
|
|
105
112
|
});
|
|
106
113
|
});
|
|
@@ -63,8 +63,9 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
|
|
|
63
63
|
stateRepositoryMock.fetchLatestPlatformBlockTime = this.sinonSandbox.stub();
|
|
64
64
|
stateRepositoryMock.fetchLatestPlatformBlockTime.resolves(blockTime);
|
|
65
65
|
|
|
66
|
+
executionContext = new StateTransitionExecutionContext();
|
|
66
67
|
const validator = new IdentityUpdateTransitionStateValidator(stateRepositoryMock, blsAdapter);
|
|
67
|
-
validateIdentityUpdateTransitionState = (st) => validator.validate(st);
|
|
68
|
+
validateIdentityUpdateTransitionState = (st) => validator.validate(st, executionContext);
|
|
68
69
|
|
|
69
70
|
stateTransition = await getIdentityUpdateTransitionFixture();
|
|
70
71
|
|
|
@@ -72,10 +73,6 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
|
|
|
72
73
|
stateTransition.setPublicKeyIdsToDisable(undefined);
|
|
73
74
|
stateTransition.setPublicKeysDisabledAt(undefined);
|
|
74
75
|
|
|
75
|
-
executionContext = new StateTransitionExecutionContext();
|
|
76
|
-
|
|
77
|
-
stateTransition.setExecutionContext(executionContext);
|
|
78
|
-
|
|
79
76
|
const privateKey = '9b67f852093bc61cea0eeca38599dbfba0de28574d2ed9b99d10d33dc1bde7b2';
|
|
80
77
|
|
|
81
78
|
await stateTransition.signByPrivateKey(
|
|
@@ -275,10 +272,10 @@ describe('validateIdentityUpdateTransitionStateFactory', () => {
|
|
|
275
272
|
// Make code that executes after dry run check to fail
|
|
276
273
|
stateRepositoryMock.fetchLatestPlatformBlockTime.resolves({});
|
|
277
274
|
|
|
278
|
-
|
|
275
|
+
executionContext.enableDryRun();
|
|
279
276
|
const result = await validateIdentityUpdateTransitionState(stateTransition);
|
|
280
277
|
|
|
281
|
-
|
|
278
|
+
executionContext.disableDryRun();
|
|
282
279
|
|
|
283
280
|
expect(result.isValid()).to.be.true();
|
|
284
281
|
|