@dashevo/wasm-dpp 0.24.0-dev.33 → 0.25.0-dev.10

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.
Files changed (186) hide show
  1. package/Cargo.toml +2 -2
  2. package/dist/wasm/wasm_dpp.d.ts +600 -454
  3. package/dist/wasm/wasm_dpp.js +178 -120
  4. package/dist/wasm/wasm_dpp_bg.js +1 -1
  5. package/lib/test/fixtures/getDocumentsFixture.js +5 -1
  6. package/lib/wasm/wasm_dpp.d.ts +600 -454
  7. package/package.json +4 -4
  8. package/src/dash_platform_protocol.rs +1 -1
  9. package/src/data_contract/data_contract.rs +2 -1
  10. package/src/data_contract/data_contract_facade.rs +2 -2
  11. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
  12. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +7 -16
  13. package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +5 -3
  14. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +6 -2
  15. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +7 -18
  16. package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +6 -4
  17. package/src/decode_protocol_entity.rs +19 -19
  18. package/src/document/extended_document.rs +5 -2
  19. package/src/document/fetch_and_validate_data_contract.rs +2 -2
  20. package/src/document/mod.rs +5 -3
  21. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +9 -6
  22. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +1 -1
  23. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +1 -1
  24. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +1 -2
  25. package/src/document/state_transition/document_batch_transition/mod.rs +18 -25
  26. package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +4 -4
  27. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +3 -1
  28. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +1 -1
  29. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +3 -3
  30. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +1 -1
  31. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -1
  32. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -1
  33. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +3 -3
  34. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +3 -3
  35. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +4 -4
  36. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -1
  37. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -1
  38. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -1
  39. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -1
  40. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -1
  41. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -1
  42. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -1
  43. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -1
  44. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -1
  45. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +2 -2
  46. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +1 -1
  47. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -1
  48. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -1
  49. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
  50. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
  51. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
  52. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -1
  53. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -1
  54. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +2 -2
  55. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -1
  56. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -1
  57. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -1
  58. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -1
  59. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
  60. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
  61. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -1
  62. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -1
  63. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -1
  64. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -1
  65. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -1
  66. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -1
  67. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -1
  68. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -1
  69. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +35 -0
  70. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -1
  71. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -1
  72. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -1
  73. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -1
  74. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -1
  75. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -1
  76. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
  77. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
  78. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -1
  79. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -1
  80. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -1
  81. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -1
  82. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -1
  83. package/src/errors/consensus/basic/identity/mod.rs +2 -0
  84. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +2 -2
  85. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
  86. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -3
  87. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -1
  88. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -1
  89. package/src/errors/consensus/basic/json_schema_error.rs +1 -3
  90. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
  91. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -2
  92. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -1
  93. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -1
  94. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -1
  95. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -1
  96. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -1
  97. package/src/errors/consensus/consensus_error.rs +24 -4
  98. package/src/errors/consensus/deserialize.rs +1 -1
  99. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +1 -1
  100. package/src/errors/consensus/signature/basic_bls_error.rs +38 -0
  101. package/src/errors/consensus/signature/basic_ecdsa_error.rs +38 -0
  102. package/src/errors/consensus/signature/mod.rs +6 -0
  103. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +38 -0
  104. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +2 -2
  105. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +58 -1
  106. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +66 -1
  107. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +50 -1
  108. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -1
  109. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -1
  110. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -1
  111. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +2 -2
  112. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -1
  113. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -1
  114. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +1 -1
  115. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -1
  116. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -1
  117. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -1
  118. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -1
  119. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -1
  120. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -1
  121. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +1 -1
  122. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -1
  123. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -1
  124. package/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs +26 -0
  125. package/src/errors/consensus/state/identity/mod.rs +2 -0
  126. package/src/errors/consensus/value_error.rs +1 -1
  127. package/src/errors/from.rs +0 -1
  128. package/src/generate_temporary_ecdsa_private_key.rs +2 -6
  129. package/src/identity/factory_utils.rs +4 -4
  130. package/src/identity/identity_public_key/key_type.rs +2 -0
  131. package/src/identity/identity_public_key/purpose.rs +7 -0
  132. package/src/identity/mod.rs +4 -2
  133. package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +6 -2
  134. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +14 -32
  135. package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +3 -1
  136. package/src/identity/state_transition/identity_create_transition/to_object.rs +2 -2
  137. package/src/identity/state_transition/identity_public_key_transitions.rs +11 -11
  138. package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +6 -2
  139. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +7 -26
  140. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +3 -1
  141. package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +3 -1
  142. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  143. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +11 -32
  144. package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +3 -2
  145. package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
  146. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  147. package/src/state_repository.rs +3 -2
  148. package/src/state_transition/fee/calculate_state_transition_fee.rs +8 -5
  149. package/src/state_transition/state_transition_facade.rs +18 -21
  150. package/src/state_transition/validation/state_transition_fee_validator.rs +3 -1
  151. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +22 -6
  152. package/src/state_transition/validation/validate_state_transition_key_signature.rs +7 -1
  153. package/src/utils.rs +2 -4
  154. package/src/validation/validation_result.rs +12 -7
  155. package/test/integration/dataContract/DataContractFacade.spec.js +17 -20
  156. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +5 -4
  157. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +0 -17
  158. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +10 -3
  159. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +4 -7
  160. package/test/integration/stateTransition/StateTransitionFacade.spec.js +21 -8
  161. package/test/unit/dataContract/DataContract.spec.js +9 -21
  162. package/test/unit/dataContract/DataContractFactory.spec.js +19 -28
  163. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +2 -4
  164. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -7
  165. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -8
  166. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -5
  167. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -3
  168. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +8 -6
  169. package/test/unit/decodeProtocolEntityFactory.spec.js +4 -1
  170. package/test/unit/document/Document.spec.js +9 -7
  171. package/test/unit/document/DocumentFactory.spec.js +38 -90
  172. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +2 -3
  173. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +5 -6
  174. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +20 -18
  175. package/test/unit/identity/Identity.spec.js +3 -8
  176. package/test/unit/identity/IdentityFactory.spec.js +3 -4
  177. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +1 -2
  178. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +7 -3
  179. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +1 -2
  180. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -1
  181. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
  182. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +12 -6
  183. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +4 -16
  184. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +8 -4
  185. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +3 -1
  186. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +7 -3
@@ -5,13 +5,14 @@ use wasm_bindgen::prelude::*;
5
5
 
6
6
  use crate::{
7
7
  state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
8
- IdentityTopUpTransitionWasm,
8
+ IdentityTopUpTransitionWasm, StateTransitionExecutionContextWasm,
9
9
  };
10
10
 
11
11
  #[wasm_bindgen(js_name=applyIdentityTopUpTransition)]
12
12
  pub async fn apply_identity_topup_transition_wasm(
13
13
  state_repository: ExternalStateRepositoryLike,
14
14
  state_transition: &IdentityTopUpTransitionWasm,
15
+ execution_context: &StateTransitionExecutionContextWasm,
15
16
  ) -> Result<(), JsValue> {
16
17
  let wrapped_state_repository =
17
18
  Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
@@ -23,7 +24,10 @@ pub async fn apply_identity_topup_transition_wasm(
23
24
  ApplyIdentityTopUpTransition::new(wrapped_state_repository, Arc::new(tx_output_fetcher));
24
25
 
25
26
  instance
26
- .apply(&state_transition.to_owned().into())
27
+ .apply(
28
+ &state_transition.to_owned().into(),
29
+ &execution_context.to_owned().into(),
30
+ )
27
31
  .await
28
32
  .map_err(|e| JsValue::from_str(&e.to_string()))?;
29
33
 
@@ -14,17 +14,16 @@ use crate::{
14
14
  identity::state_transition::asset_lock_proof::{
15
15
  ChainAssetLockProofWasm, InstantAssetLockProofWasm,
16
16
  },
17
- state_transition::StateTransitionExecutionContextWasm,
18
17
  with_js_error,
19
18
  };
20
19
 
21
20
  use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
22
21
 
23
- use crate::errors::from_dpp_err;
24
22
  use dpp::identity::KeyType;
25
23
  use dpp::platform_value::string_encoding::Encoding;
26
24
  use dpp::platform_value::{string_encoding, BinaryData};
27
- use dpp::state_transition::StateTransitionConvert;
25
+ use dpp::serialization_traits::PlatformSerializable;
26
+ use dpp::state_transition::StateTransition;
28
27
  use dpp::{
29
28
  identifier::Identifier,
30
29
  identity::state_transition::{
@@ -170,19 +169,11 @@ impl IdentityTopUpTransitionWasm {
170
169
  }
171
170
 
172
171
  #[wasm_bindgen(js_name=toBuffer)]
173
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
174
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
175
- with_js_error!(serde_wasm_bindgen::from_value(options))?
176
- } else {
177
- Default::default()
178
- };
179
-
180
- let buffer = self
181
- .0
182
- .to_buffer(opts.skip_signature.unwrap_or(false))
183
- .map_err(from_dpp_err)?;
184
-
185
- Ok(Buffer::from_bytes(&buffer).into())
172
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
173
+ let bytes =
174
+ PlatformSerializable::serialize(&StateTransition::IdentityTopUp(self.0.clone()))
175
+ .with_js_error()?;
176
+ Ok(Buffer::from_bytes(&bytes))
186
177
  }
187
178
 
188
179
  #[wasm_bindgen(js_name=toJSON)]
@@ -262,16 +253,6 @@ impl IdentityTopUpTransitionWasm {
262
253
  self.0.is_identity_state_transition()
263
254
  }
264
255
 
265
- #[wasm_bindgen(js_name=setExecutionContext)]
266
- pub fn set_execution_context(&mut self, context: &StateTransitionExecutionContextWasm) {
267
- self.0.set_execution_context(context.into())
268
- }
269
-
270
- #[wasm_bindgen(js_name=getExecutionContext)]
271
- pub fn get_execution_context(&mut self) -> StateTransitionExecutionContextWasm {
272
- self.0.get_execution_context().into()
273
- }
274
-
275
256
  #[wasm_bindgen(js_name=signByPrivateKey)]
276
257
  pub fn sign_by_private_key(
277
258
  &mut self,
@@ -1,7 +1,7 @@
1
1
  use crate::errors::from_dpp_err;
2
2
  use crate::state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper};
3
3
  use crate::validation::ValidationResultWasm;
4
- use crate::IdentityTopUpTransitionWasm;
4
+ use crate::{IdentityTopUpTransitionWasm, StateTransitionExecutionContextWasm};
5
5
  use dpp::identity::state_transition::identity_topup_transition::validation::state::validate_identity_topup_transition_state;
6
6
  use wasm_bindgen::prelude::*;
7
7
  use wasm_bindgen::JsValue;
@@ -24,10 +24,12 @@ impl IdentityTopUpTransitionStateValidator {
24
24
  pub async fn validate(
25
25
  &self,
26
26
  state_transition: &IdentityTopUpTransitionWasm,
27
+ execution_context: &StateTransitionExecutionContextWasm,
27
28
  ) -> Result<ValidationResultWasm, JsValue> {
28
29
  let validation_result = validate_identity_topup_transition_state(
29
30
  &self.state_repository,
30
31
  &state_transition.to_owned().into(),
32
+ &execution_context.to_owned().into(),
31
33
  )
32
34
  .await
33
35
  .map_err(|e| from_dpp_err(e.into()))?;
@@ -3,19 +3,21 @@ use wasm_bindgen::prelude::*;
3
3
 
4
4
  use crate::{
5
5
  state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
6
- IdentityUpdateTransitionWasm,
6
+ IdentityUpdateTransitionWasm, StateTransitionExecutionContextWasm,
7
7
  };
8
8
 
9
9
  #[wasm_bindgen(js_name=applyIdentityUpdateTransition)]
10
10
  pub async fn apply_identity_update_transition_wasm(
11
11
  state_repository: ExternalStateRepositoryLike,
12
12
  state_transition: &IdentityUpdateTransitionWasm,
13
+ execution_context: &StateTransitionExecutionContextWasm,
13
14
  ) -> Result<(), JsValue> {
14
15
  let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
15
16
 
16
17
  apply_identity_update_transition(
17
18
  &wrapped_state_repository,
18
19
  &state_transition.to_owned().into(),
20
+ &execution_context.to_owned().into(),
19
21
  )
20
22
  .await
21
23
  .map_err(|e| JsValue::from_str(&e.to_string()))?;
@@ -2,7 +2,7 @@ use crate::errors::from_dpp_err;
2
2
  use crate::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitnessWasm;
3
3
  use crate::utils::WithJsError;
4
4
  use crate::validation::ValidationResultWasm;
5
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitness;
5
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
6
6
  use dpp::identity::state_transition::identity_update_transition::validate_public_keys::IdentityUpdatePublicKeysValidator;
7
7
  use dpp::identity::validation::TPublicKeysValidator;
8
8
  use dpp::platform_value::Value;
@@ -31,7 +31,7 @@ impl IdentityUpdatePublicKeysValidatorWasm {
31
31
  let public_keys = raw_public_keys
32
32
  .into_iter()
33
33
  .map(|raw_key| {
34
- let parsed_key: IdentityPublicKeyWithWitness =
34
+ let parsed_key: IdentityPublicKeyInCreation =
35
35
  IdentityPublicKeyWithWitnessWasm::new(raw_key)?.into();
36
36
 
37
37
  parsed_key.to_raw_object(false).with_js_error()
@@ -11,24 +11,21 @@ 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, state_transition::StateTransitionExecutionContextWasm,
15
- with_js_error,
14
+ identity::IdentityPublicKeyWasm, with_js_error,
16
15
  };
17
16
 
18
17
  use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
19
18
 
20
- use crate::errors::from_dpp_err;
21
19
  use crate::utils::{generic_of_js_val, WithJsError};
22
20
 
23
- use dpp::consensus::ConsensusError::SignatureError as ConsensusSignatureErrorVariant;
24
-
25
21
  use dpp::consensus::ConsensusError;
26
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitness;
22
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
27
23
  use dpp::identity::{KeyID, KeyType, TimestampMillis};
28
24
  use dpp::platform_value::string_encoding::Encoding;
29
25
  use dpp::platform_value::{string_encoding, BinaryData, Value};
30
26
  use dpp::prelude::Revision;
31
- use dpp::state_transition::{StateTransitionConvert, StateTransitionIdentitySigned};
27
+ use dpp::serialization_traits::PlatformSerializable;
28
+ use dpp::state_transition::{StateTransition, StateTransitionIdentitySigned};
32
29
  use dpp::{
33
30
  identifier::Identifier,
34
31
  identity::state_transition::identity_update_transition::identity_update_transition::IdentityUpdateTransition,
@@ -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<IdentityPublicKeyWithWitness>>,
47
+ add_public_keys: Option<Vec<IdentityPublicKeyInCreation>>,
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<IdentityPublicKeyWithWitness>, JsValue>>()?;
106
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
110
107
  }
111
108
 
112
109
  self.0.set_public_keys_to_add(keys_to_add);
@@ -289,19 +286,11 @@ impl IdentityUpdateTransitionWasm {
289
286
  }
290
287
 
291
288
  #[wasm_bindgen(js_name=toBuffer)]
292
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
293
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
294
- with_js_error!(serde_wasm_bindgen::from_value(options))?
295
- } else {
296
- Default::default()
297
- };
298
-
299
- let buffer = self
300
- .0
301
- .to_buffer(opts.skip_signature.unwrap_or(false))
302
- .map_err(from_dpp_err)?;
303
-
304
- Ok(Buffer::from_bytes(&buffer).into())
289
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
290
+ let bytes =
291
+ PlatformSerializable::serialize(&StateTransition::IdentityUpdate(self.0.clone()))
292
+ .with_js_error()?;
293
+ Ok(Buffer::from_bytes(&bytes))
305
294
  }
306
295
 
307
296
  #[wasm_bindgen(js_name=toJSON)]
@@ -420,16 +409,6 @@ impl IdentityUpdateTransitionWasm {
420
409
  self.0.is_identity_state_transition()
421
410
  }
422
411
 
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
412
  #[wasm_bindgen(js_name=signByPrivateKey)]
434
413
  pub fn sign_by_private_key(
435
414
  &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::IdentityPublicKeyWithWitness,
5
+ identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation,
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<IdentityPublicKeyWithWitness>>,
26
+ pub public_keys_to_add: Option<Vec<IdentityPublicKeyInCreation>>,
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::IdentityPublicKeyWithWitness;
13
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
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: IdentityPublicKeyWithWitness =
47
+ let parsed_key: IdentityPublicKeyInCreation =
48
48
  IdentityPublicKeyWithWitnessWasm::new(raw_key)?.into();
49
49
  parsed_key.to_raw_object(false).with_js_error()
50
50
  })
@@ -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: serde_json::Value,
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: serde_json::Value,
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(calculate_state_transition_fee(&state_transition)
19
- .map_err(ProtocolError::from)
20
- .with_js_error()?
21
- .into())
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, StateTransitionLike, StateTransitionType,
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
- use dpp::document::DocumentsBatchTransition;
21
- use dpp::ProtocolError;
19
+
22
20
  use std::sync::Arc;
23
21
  use wasm_bindgen::prelude::*;
24
22
  use wasm_bindgen::JsValue;
@@ -65,17 +63,13 @@ 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(|e| PlatformValueErrorWasm::from(e))?
66
+ .map_err(PlatformValueErrorWasm::from)?
69
67
  .try_into()
70
68
  .map_err(|_| JsValue::from_str("Invalid state transition type"))?;
71
69
 
72
- // TODO: clean values of other transitions as well?
73
- match state_transition_type {
74
- StateTransitionType::DataContractUpdate => {
75
- DataContractUpdateTransition::clean_value(&mut raw_state_transition)
76
- .map_err(|e| PlatformValueErrorWasm::from(e))?;
77
- }
78
- _ => {}
70
+ if state_transition_type == StateTransitionType::DataContractUpdate {
71
+ DataContractUpdateTransition::clean_value(&mut raw_state_transition)
72
+ .map_err(PlatformValueErrorWasm::from)?;
79
73
  }
80
74
 
81
75
  let result = self
@@ -116,6 +110,7 @@ impl StateTransitionFacadeWasm {
116
110
  pub async fn validate(
117
111
  &self,
118
112
  raw_state_transition: JsValue,
113
+ execution_context: &StateTransitionExecutionContextWasm,
119
114
  options: JsValue,
120
115
  ) -> Result<ValidationResultWasm, JsValue> {
121
116
  let options: ValidateOptionsWasm = if options.is_object() {
@@ -128,7 +123,8 @@ impl StateTransitionFacadeWasm {
128
123
  super::super::conversion::create_state_transition_from_wasm_instance(
129
124
  &raw_state_transition,
130
125
  ) {
131
- let execution_context = state_transition.get_execution_context().to_owned();
126
+ let execution_context: StateTransitionExecutionContext =
127
+ execution_context.to_owned().into();
132
128
  (state_transition, execution_context)
133
129
  } else {
134
130
  let state_transition_json = raw_state_transition.with_serde_to_platform_value()?;
@@ -154,25 +150,23 @@ impl StateTransitionFacadeWasm {
154
150
  pub async fn validate_basic(
155
151
  &self,
156
152
  raw_state_transition: JsValue,
153
+ execution_context: &StateTransitionExecutionContextWasm,
157
154
  ) -> Result<ValidationResultWasm, JsValue> {
158
155
  let state_transition_json;
159
- let execution_context;
160
156
 
161
157
  if let Ok(state_transition) =
162
158
  super::super::conversion::create_state_transition_from_wasm_instance(
163
159
  &raw_state_transition,
164
160
  )
165
161
  {
166
- execution_context = state_transition.get_execution_context().to_owned();
167
162
  state_transition_json = state_transition.to_cleaned_object(false).with_js_error()?;
168
163
  } else {
169
164
  state_transition_json = raw_state_transition.with_serde_to_platform_value()?;
170
- execution_context = StateTransitionExecutionContext::default();
171
165
  }
172
166
 
173
167
  let validation_result = self
174
168
  .0
175
- .validate_basic(&state_transition_json, &execution_context)
169
+ .validate_basic(&state_transition_json, &execution_context.to_owned().into())
176
170
  .await
177
171
  .with_js_error()?;
178
172
 
@@ -183,6 +177,7 @@ impl StateTransitionFacadeWasm {
183
177
  pub async fn validate_signature(
184
178
  &self,
185
179
  raw_state_transition: JsValue,
180
+ execution_context: &StateTransitionExecutionContextWasm,
186
181
  ) -> Result<ValidationResultWasm, JsValue> {
187
182
  let state_transition =
188
183
  super::super::conversion::create_state_transition_from_wasm_instance(
@@ -191,7 +186,7 @@ impl StateTransitionFacadeWasm {
191
186
 
192
187
  let validation_result = self
193
188
  .0
194
- .validate_signature(state_transition)
189
+ .validate_signature(state_transition, &execution_context.to_owned().into())
195
190
  .await
196
191
  .with_js_error()?;
197
192
 
@@ -202,6 +197,7 @@ impl StateTransitionFacadeWasm {
202
197
  pub async fn validate_fee(
203
198
  &self,
204
199
  raw_state_transition: JsValue,
200
+ execution_context: &StateTransitionExecutionContextWasm,
205
201
  ) -> Result<ValidationResultWasm, JsValue> {
206
202
  let state_transition =
207
203
  super::super::conversion::create_state_transition_from_wasm_instance(
@@ -210,7 +206,7 @@ impl StateTransitionFacadeWasm {
210
206
 
211
207
  let validation_result = self
212
208
  .0
213
- .validate_fee(&state_transition)
209
+ .validate_fee(&state_transition, &execution_context.to_owned().into())
214
210
  .await
215
211
  .with_js_error()?;
216
212
 
@@ -221,6 +217,7 @@ impl StateTransitionFacadeWasm {
221
217
  pub async fn validate_state(
222
218
  &self,
223
219
  raw_state_transition: JsValue,
220
+ execution_context: &StateTransitionExecutionContextWasm,
224
221
  ) -> Result<ValidationResultWasm, JsValue> {
225
222
  let state_transition =
226
223
  super::super::conversion::create_state_transition_from_wasm_instance(
@@ -229,7 +226,7 @@ impl StateTransitionFacadeWasm {
229
226
 
230
227
  let validation_result = self
231
228
  .0
232
- .validate_state(&state_transition)
229
+ .validate_state(&state_transition, &execution_context.to_owned().into())
233
230
  .await
234
231
  .with_js_error()?;
235
232
 
@@ -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,11 @@ 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
- use dpp::ProtocolError;
13
+
14
+ use crate::StateTransitionExecutionContextWasm;
13
15
  use std::sync::Arc;
14
16
  use wasm_bindgen::prelude::wasm_bindgen;
15
17
  use wasm_bindgen::JsValue;
@@ -23,11 +25,13 @@ impl StValidator {
23
25
  pub async fn validate(
24
26
  &self,
25
27
  state_transition: &mut impl StateTransitionIdentitySigned,
28
+ execution_context: &StateTransitionExecutionContext,
26
29
  ) -> Result<ValidationResultWasm, JsValue> {
27
30
  let result = validate_state_transition_identity_signature(
28
31
  self.state_repository.clone(),
29
32
  state_transition,
30
33
  &self.bls,
34
+ execution_context,
31
35
  )
32
36
  .await
33
37
  .with_js_error()?;
@@ -41,12 +45,14 @@ impl StValidator {
41
45
  pub async fn validate_state_transition_identity_signature_wasm(
42
46
  external_state_repository: ExternalStateRepositoryLike,
43
47
  js_state_transition: &JsValue,
48
+ execution_context: &StateTransitionExecutionContextWasm,
44
49
  bls_adapter: JsBlsAdapter,
45
50
  ) -> Result<ValidationResultWasm, JsValue> {
46
51
  let bls = BlsAdapter(bls_adapter);
47
52
  let state_repository = Arc::new(ExternalStateRepositoryLikeWrapper::new(
48
53
  external_state_repository,
49
54
  ));
55
+ let execution_context: StateTransitionExecutionContext = execution_context.to_owned().into();
50
56
 
51
57
  let validator = StValidator {
52
58
  bls,
@@ -58,13 +64,19 @@ pub async fn validate_state_transition_identity_signature_wasm(
58
64
 
59
65
  match state_transition {
60
66
  StateTransition::DataContractCreate(mut state_transition) => {
61
- validator.validate(&mut state_transition).await
67
+ validator
68
+ .validate(&mut state_transition, &execution_context)
69
+ .await
62
70
  }
63
71
  StateTransition::DataContractUpdate(mut state_transition) => {
64
- validator.validate(&mut state_transition).await
72
+ validator
73
+ .validate(&mut state_transition, &execution_context)
74
+ .await
65
75
  }
66
76
  StateTransition::DocumentsBatch(mut state_transition) => {
67
- validator.validate(&mut state_transition).await
77
+ validator
78
+ .validate(&mut state_transition, &execution_context)
79
+ .await
68
80
  }
69
81
  // TODO: We should use protocol error here, not consensus
70
82
  StateTransition::IdentityCreate(state_transition) => Err(from_consensus_error(
@@ -79,10 +91,14 @@ pub async fn validate_state_transition_identity_signature_wasm(
79
91
  )),
80
92
  )),
81
93
  StateTransition::IdentityCreditWithdrawal(mut state_transition) => {
82
- validator.validate(&mut state_transition).await
94
+ validator
95
+ .validate(&mut state_transition, &execution_context)
96
+ .await
83
97
  }
84
98
  StateTransition::IdentityUpdate(mut state_transition) => {
85
- validator.validate(&mut state_transition).await
99
+ validator
100
+ .validate(&mut state_transition, &execution_context)
101
+ .await
86
102
  }
87
103
  }
88
104
  }
@@ -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.0.validate(&state_transition).await.with_js_error()?;
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
- let result = if value.is_bigint() {
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> {