@dashevo/wasm-dpp 0.25.0-dev.9 → 0.25.0

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 (295) hide show
  1. package/Cargo.toml +33 -7
  2. package/README.md +11 -6
  3. package/dist/errors/patchConsensusErrors.js +94 -115
  4. package/dist/wasm/wasm_dpp.d.ts +2213 -4113
  5. package/dist/wasm/wasm_dpp.js +17748 -2639
  6. package/dist/wasm/wasm_dpp_bg.js +1 -1
  7. package/lib/dpp.ts +1 -1
  8. package/lib/errors/patchConsensusErrors.ts +94 -93
  9. package/lib/test/bootstrap.js +5 -0
  10. package/lib/test/fixtures/getDataContractFixture.js +11 -5
  11. package/lib/test/fixtures/getDocumentsFixture.js +9 -5
  12. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
  13. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
  14. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  15. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  16. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  17. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  18. package/lib/test/fixtures/js/generateRandomIdentifier.js +1 -0
  19. package/lib/test/fixtures/js/getChainAssetLockProofFixture.js +1 -0
  20. package/lib/test/fixtures/js/getDataContractFixture.js +1 -0
  21. package/lib/test/fixtures/js/getDocumentTransitionsFixture.js +1 -0
  22. package/lib/test/fixtures/js/getDocumentsFixture.js +1 -0
  23. package/lib/test/fixtures/js/getInstantAssetLockProofFixture.js +1 -0
  24. package/lib/test/mocks/createStateRepositoryMock.js +1 -0
  25. package/lib/wasm/wasm_dpp.d.ts +2213 -4113
  26. package/package.json +6 -6
  27. package/scripts/build-wasm.sh +30 -29
  28. package/src/bls_adapter.rs +1 -1
  29. package/src/dash_platform_protocol.rs +173 -196
  30. package/src/data_contract/data_contract.rs +309 -199
  31. package/src/data_contract/data_contract_facade.rs +28 -47
  32. package/src/data_contract/errors/mod.rs +1 -0
  33. package/src/data_contract/mod.rs +2 -2
  34. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +92 -79
  35. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
  36. package/src/data_contract_factory/data_contract_factory.rs +43 -83
  37. package/src/document/document_facade.rs +81 -76
  38. package/src/document/errors/document_already_exists_error.rs +6 -6
  39. package/src/document/errors/document_no_revision_error.rs +1 -0
  40. package/src/document/errors/document_not_provided_error.rs +6 -6
  41. package/src/document/errors/invalid_document_action_error.rs +11 -7
  42. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  43. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  44. package/src/document/errors/mod.rs +5 -0
  45. package/src/document/errors/revision_absent_error.rs +6 -6
  46. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  47. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  48. package/src/document/extended_document.rs +76 -76
  49. package/src/document/factory.rs +140 -119
  50. package/src/document/generate_document_id.rs +2 -2
  51. package/src/document/mod.rs +164 -150
  52. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
  53. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  54. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  55. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
  56. package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
  57. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
  58. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
  59. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
  60. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
  61. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
  62. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
  63. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
  64. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
  65. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
  66. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
  67. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
  68. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
  69. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
  70. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
  71. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
  72. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
  73. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
  74. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
  75. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
  76. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
  77. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
  78. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
  79. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
  80. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
  81. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
  82. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
  83. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
  84. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
  85. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
  86. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
  87. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
  88. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
  89. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
  90. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
  91. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
  92. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
  93. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
  94. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -9
  95. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
  96. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
  97. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
  98. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
  99. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
  100. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
  101. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
  102. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
  103. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
  104. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
  105. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
  106. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
  107. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
  108. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
  109. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
  110. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
  111. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
  112. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
  113. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
  114. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
  115. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
  116. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
  117. package/src/errors/consensus/basic/json_schema_error.rs +1 -9
  118. package/src/errors/consensus/basic/mod.rs +2 -0
  119. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
  120. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  121. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -9
  122. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
  123. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
  124. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
  125. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  126. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
  127. package/src/errors/consensus/consensus_error.rs +44 -21
  128. package/src/errors/consensus/deserialize.rs +2 -1
  129. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
  130. package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
  131. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
  132. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
  133. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
  134. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
  135. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
  136. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
  137. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
  138. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
  139. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
  140. package/src/errors/consensus/state/data_contract/mod.rs +7 -1
  141. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
  142. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
  143. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
  144. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
  145. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
  146. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
  147. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
  148. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
  149. package/src/errors/consensus/state/document/mod.rs +2 -0
  150. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
  151. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
  152. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
  153. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
  154. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
  155. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
  156. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
  157. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
  158. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
  159. package/src/errors/consensus/value_error.rs +1 -9
  160. package/src/errors/from.rs +12 -8
  161. package/src/errors/mod.rs +7 -7
  162. package/src/errors/value_error.rs +5 -0
  163. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
  164. package/src/identity/factory_utils.rs +13 -13
  165. package/src/identity/identity.rs +275 -0
  166. package/src/identity/identity_facade.rs +87 -70
  167. package/src/identity/identity_factory.rs +74 -54
  168. package/src/identity/identity_public_key/mod.rs +87 -64
  169. package/src/identity/mod.rs +25 -247
  170. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  171. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  172. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +2 -2
  173. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  174. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  175. package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
  176. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +71 -65
  177. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  178. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  179. package/src/identity/state_transition/identity_create_transition/to_object.rs +10 -12
  180. package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
  181. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
  182. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
  183. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
  184. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
  185. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
  186. package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
  187. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +67 -62
  188. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  189. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  190. package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
  191. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  192. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
  193. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  194. package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
  195. package/src/identity/state_transition/mod.rs +5 -2
  196. package/src/identity/state_transition/transition_types.rs +34 -0
  197. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  198. package/src/lib.rs +10 -11
  199. package/src/metadata.rs +3 -3
  200. package/src/protocol_version.rs +7 -0
  201. package/src/state_transition/conversion.rs +11 -1
  202. package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
  203. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  204. package/src/state_transition/mod.rs +137 -139
  205. package/src/state_transition/state_transition_facade.rs +11 -11
  206. package/src/state_transition/state_transition_factory.rs +142 -153
  207. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  208. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
  209. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  210. package/src/utils.rs +7 -8
  211. package/src/validation/validation_result.rs +1 -0
  212. package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
  213. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
  214. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
  215. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
  216. package/test/integration/document/Document.spec.js +3 -3
  217. package/test/integration/document/DocumentFacade.spec.js +39 -38
  218. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +6 -7
  219. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
  220. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +2 -2
  221. package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
  222. package/test/integration/identity/IdentityFacade.spec.js +33 -62
  223. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
  224. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
  225. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  226. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
  227. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  228. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
  229. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
  230. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +4 -5
  231. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
  232. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +3 -7
  233. package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
  234. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
  235. package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
  236. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  237. package/test/unit/DashPlatformProtocol.spec.js +10 -25
  238. package/test/unit/dataContract/DataContract.spec.js +119 -148
  239. package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
  240. package/test/unit/dataContract/createDataContract.spec.js +6 -6
  241. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  242. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
  243. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +7 -9
  244. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
  245. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +28 -19
  246. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +7 -7
  247. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
  248. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
  249. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
  250. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +1 -1
  251. package/test/unit/document/Document.spec.js +31 -20
  252. package/test/unit/document/DocumentFactory.spec.js +45 -110
  253. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  254. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +6 -7
  255. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +11 -12
  256. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  257. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
  258. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
  259. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
  260. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
  261. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +9 -9
  262. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
  263. package/test/unit/identity/Identity.spec.js +46 -81
  264. package/test/unit/identity/IdentityFactory.spec.js +61 -75
  265. package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
  266. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
  267. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +9 -15
  268. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
  269. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
  270. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +9 -13
  271. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
  272. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
  273. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +4 -4
  274. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
  275. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
  276. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  277. package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
  278. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
  279. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
  280. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
  281. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
  282. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
  283. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  284. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  285. package/test-d/index.test-d.ts +2 -2
  286. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  287. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  288. package/src/decode_protocol_entity.rs +0 -25
  289. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
  290. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
  291. package/test/integration/util/generateEntropy.spec.js +0 -17
  292. package/test/integration/util/serializer.spec.js +0 -24
  293. package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
  294. package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
  295. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
@@ -1,42 +1,32 @@
1
- use std::{ops::Deref, sync::Arc};
2
-
3
- use dpp::{state_transition::{
4
- validation::{
5
- validate_state_transition_basic::StateTransitionBasicValidator,
6
- validate_state_transition_by_type::StateTransitionByTypeValidator,
7
- },
8
- StateTransitionFactory, StateTransitionFactoryOptions, StateTransition, errors::StateTransitionError,
9
- }, version::ProtocolVersionValidator, data_contract::state_transition::{data_contract_create_transition::validation::state::validate_data_contract_create_transition_basic::DataContractCreateTransitionBasicValidator, data_contract_update_transition::validation::basic::DataContractUpdateTransitionBasicValidator}, identity::{state_transition::{identity_create_transition::validation::basic::IdentityCreateTransitionBasicValidator, validate_public_key_signatures::{PublicKeysSignaturesValidator}, asset_lock_proof::{AssetLockProofValidator, ChainAssetLockProofStructureValidator, InstantAssetLockProofStructureValidator, AssetLockTransactionValidator}, identity_topup_transition::validation::basic::IdentityTopUpTransitionBasicValidator, identity_credit_withdrawal_transition::validation::basic::validate_identity_credit_withdrawal_transition_basic::IdentityCreditWithdrawalTransitionBasicValidator, identity_update_transition::validate_identity_update_transition_basic::ValidateIdentityUpdateTransitionBasic}, validation::PublicKeysValidator}, document::validation::basic::validate_documents_batch_transition_basic::DocumentBatchTransitionBasicValidator, ProtocolError};
10
- use wasm_bindgen::{prelude::wasm_bindgen, JsValue};
11
- use dpp::platform_value::Value;
12
-
13
- use crate::utils::{ToSerdeJSONExt, WithJsError};
14
- use crate::{
15
- bls_adapter::{BlsAdapter, JsBlsAdapter},
16
- errors::{from_dpp_err, from_dpp_init_error},
17
- identity_facade::FromObjectOptions,
18
- state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
19
- state_transition::errors::invalid_state_transition_error::InvalidStateTransitionErrorWasm,
20
- with_js_error, DataContractCreateTransitionWasm, DataContractUpdateTransitionWasm,
21
- DocumentsBatchTransitionWasm, IdentityCreateTransitionWasm, IdentityTopUpTransitionWasm,
22
- IdentityUpdateTransitionWasm,
1
+ use crate::data_contract::{DataContractCreateTransitionWasm, DataContractUpdateTransitionWasm};
2
+ use crate::document_batch_transition::DocumentsBatchTransitionWasm;
3
+ use crate::errors::from_dpp_err;
4
+ use crate::identity::state_transition::{
5
+ IdentityCreateTransitionWasm, IdentityCreditTransferTransitionWasm,
6
+ IdentityTopUpTransitionWasm, IdentityUpdateTransitionWasm,
23
7
  };
8
+ use crate::state_transition::errors::invalid_state_transition_error::InvalidStateTransitionErrorWasm;
9
+ use dpp::state_transition::errors::StateTransitionError;
10
+ use dpp::state_transition::state_transition_factory::StateTransitionFactory;
11
+ use dpp::state_transition::StateTransition;
12
+ use dpp::ProtocolError;
13
+ use wasm_bindgen::{prelude::wasm_bindgen, JsValue};
24
14
 
25
15
  #[wasm_bindgen(js_name = StateTransitionFactory)]
26
- pub struct StateTransitionFactoryWasm(
27
- StateTransitionFactory<ExternalStateRepositoryLikeWrapper, BlsAdapter>,
28
- );
16
+ pub struct StateTransitionFactoryWasm(StateTransitionFactory);
29
17
 
30
- impl From<StateTransitionFactory<ExternalStateRepositoryLikeWrapper, BlsAdapter>>
31
- for StateTransitionFactoryWasm
32
- {
33
- fn from(
34
- factory: StateTransitionFactory<ExternalStateRepositoryLikeWrapper, BlsAdapter>,
35
- ) -> Self {
18
+ impl From<StateTransitionFactory> for StateTransitionFactoryWasm {
19
+ fn from(factory: StateTransitionFactory) -> Self {
36
20
  Self(factory)
37
21
  }
38
22
  }
39
23
 
24
+ impl From<&StateTransitionFactory> for StateTransitionFactoryWasm {
25
+ fn from(factory: &StateTransitionFactory) -> Self {
26
+ Self(factory.to_owned())
27
+ }
28
+ }
29
+
40
30
  impl StateTransitionFactoryWasm {
41
31
  pub fn state_transition_wasm_from_factory_result(
42
32
  result: Result<StateTransition, ProtocolError>,
@@ -58,6 +48,9 @@ impl StateTransitionFactoryWasm {
58
48
  StateTransition::IdentityTopUp(st) => {
59
49
  Ok(IdentityTopUpTransitionWasm::from(st).into())
60
50
  }
51
+ StateTransition::IdentityCreditTransfer(st) => {
52
+ Ok(IdentityCreditTransferTransitionWasm::from(st).into())
53
+ }
61
54
  StateTransition::DocumentsBatch(st) => {
62
55
  Ok(DocumentsBatchTransitionWasm::from(st).into())
63
56
  }
@@ -80,135 +73,131 @@ impl StateTransitionFactoryWasm {
80
73
 
81
74
  #[wasm_bindgen(js_class = StateTransitionFactory)]
82
75
  impl StateTransitionFactoryWasm {
83
- #[wasm_bindgen(constructor)]
84
- pub fn new(
85
- state_repository: ExternalStateRepositoryLike,
86
- bls_adapter: JsBlsAdapter,
87
- ) -> Result<StateTransitionFactoryWasm, JsValue> {
88
- let state_repository_wrapper =
89
- Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
90
- let protocol_version_validator = Arc::new(ProtocolVersionValidator::default());
91
-
92
- let adapter = BlsAdapter(bls_adapter);
93
-
94
- let pk_validator =
95
- Arc::new(PublicKeysValidator::new(adapter.clone()).map_err(from_dpp_init_error)?);
96
- let pk_sig_validator = Arc::new(PublicKeysSignaturesValidator::new(adapter.clone()));
97
-
98
- let asset_lock_tx_validator = Arc::new(AssetLockTransactionValidator::new(
99
- state_repository_wrapper.clone(),
100
- ));
101
-
102
- let asset_lock_validator = Arc::new(AssetLockProofValidator::new(
103
- InstantAssetLockProofStructureValidator::new(
104
- state_repository_wrapper.clone(),
105
- asset_lock_tx_validator.clone(),
106
- )
107
- .map_err(from_dpp_init_error)?,
108
- ChainAssetLockProofStructureValidator::new(
109
- state_repository_wrapper.clone(),
110
- asset_lock_tx_validator,
111
- )
112
- .map_err(from_dpp_init_error)?,
113
- ));
114
-
115
- let state_transition_basic_validator = StateTransitionBasicValidator::new(
116
- state_repository_wrapper.clone(),
117
- StateTransitionByTypeValidator::new(
118
- DataContractCreateTransitionBasicValidator::new(protocol_version_validator.clone())
119
- .with_js_error()?,
120
- DataContractUpdateTransitionBasicValidator::new(
121
- state_repository_wrapper.clone(),
122
- protocol_version_validator.clone(),
123
- )
124
- .map_err(from_dpp_init_error)?,
125
- IdentityCreateTransitionBasicValidator::new(
126
- protocol_version_validator.deref().clone(),
127
- pk_validator.clone(),
128
- pk_validator.clone(),
129
- asset_lock_validator.clone(),
130
- adapter,
131
- pk_sig_validator.clone(),
132
- )
133
- .map_err(from_dpp_init_error)?,
134
- ValidateIdentityUpdateTransitionBasic::new(
135
- ProtocolVersionValidator::default(),
136
- pk_validator,
137
- pk_sig_validator,
138
- )
139
- .with_js_error()?,
140
- IdentityTopUpTransitionBasicValidator::new(
141
- ProtocolVersionValidator::default(),
142
- asset_lock_validator,
143
- )
144
- .map_err(from_dpp_init_error)?,
145
- IdentityCreditWithdrawalTransitionBasicValidator::new(
146
- protocol_version_validator.clone(),
147
- )
148
- .map_err(from_dpp_init_error)?,
149
- DocumentBatchTransitionBasicValidator::new(
150
- state_repository_wrapper.clone(),
151
- protocol_version_validator.clone(),
152
- ),
153
- ),
154
- );
155
-
156
- let factory = StateTransitionFactory::new(
157
- state_repository_wrapper,
158
- Arc::new(state_transition_basic_validator),
159
- );
160
-
161
- Ok(factory.into())
162
- }
163
-
164
- #[wasm_bindgen(js_name=createFromObject)]
165
- pub async fn create_from_object(
166
- &self,
167
- state_transition_object: JsValue,
168
- options: JsValue,
169
- ) -> Result<JsValue, JsValue> {
170
- let options: FromObjectOptions = if options.is_object() {
171
- with_js_error!(serde_wasm_bindgen::from_value(options))?
172
- } else {
173
- Default::default()
174
- };
175
-
176
- let raw_state_transition: Value = state_transition_object.with_serde_to_platform_value()?;
177
-
178
- let result = self
179
- .0
180
- .create_from_object(
181
- raw_state_transition,
182
- Some(StateTransitionFactoryOptions {
183
- skip_validation: options.skip_validation.unwrap_or(false),
184
- }),
185
- )
186
- .await;
187
-
188
- Self::state_transition_wasm_from_factory_result(result)
189
- }
76
+ // #[wasm_bindgen(constructor)]
77
+ // pub fn new(
78
+ // state_repository: ExternalStateRepositoryLike,
79
+ // bls_adapter: JsBlsAdapter,
80
+ // ) -> Result<StateTransitionFactoryWasm, JsValue> {
81
+ // let state_repository_wrapper =
82
+ // Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
83
+ // let protocol_version_validator = Arc::new(ProtocolVersionValidator::default());
84
+ //
85
+ // let adapter = BlsAdapter(bls_adapter);
86
+ //
87
+ // let pk_validator =
88
+ // Arc::new(PublicKeysValidator::new(adapter.clone()).map_err(from_dpp_init_error)?);
89
+ // let pk_sig_validator = Arc::new(PublicKeysSignaturesValidator::new(adapter.clone()));
90
+ //
91
+ // let asset_lock_tx_validator = Arc::new(AssetLockTransactionValidator::new(
92
+ // state_repository_wrapper.clone(),
93
+ // ));
94
+ //
95
+ // let asset_lock_validator = Arc::new(AssetLockProofValidator::new(
96
+ // InstantAssetLockProofStructureValidator::new(
97
+ // state_repository_wrapper.clone(),
98
+ // asset_lock_tx_validator.clone(),
99
+ // )
100
+ // .map_err(from_dpp_init_error)?,
101
+ // ChainAssetLockProofStructureValidator::new(
102
+ // state_repository_wrapper.clone(),
103
+ // asset_lock_tx_validator,
104
+ // )
105
+ // .map_err(from_dpp_init_error)?,
106
+ // ));
107
+ //
108
+ // let state_transition_basic_validator = StateTransitionBasicValidator::new(
109
+ // state_repository_wrapper.clone(),
110
+ // StateTransitionByTypeValidator::new(
111
+ // DataContractCreateTransitionBasicValidator::new(protocol_version_validator.clone())
112
+ // .with_js_error()?,
113
+ // DataContractUpdateTransitionBasicValidator::new(
114
+ // state_repository_wrapper.clone(),
115
+ // protocol_version_validator.clone(),
116
+ // )
117
+ // .map_err(from_dpp_init_error)?,
118
+ // IdentityCreateTransitionBasicValidator::new(
119
+ // protocol_version_validator.deref().clone(),
120
+ // pk_validator.clone(),
121
+ // pk_validator.clone(),
122
+ // asset_lock_validator.clone(),
123
+ // adapter,
124
+ // pk_sig_validator.clone(),
125
+ // )
126
+ // .map_err(from_dpp_init_error)?,
127
+ // ValidateIdentityUpdateTransitionBasic::new(
128
+ // ProtocolVersionValidator::default(),
129
+ // pk_validator,
130
+ // pk_sig_validator,
131
+ // )
132
+ // .with_js_error()?,
133
+ // IdentityTopUpTransitionBasicValidator::new(
134
+ // ProtocolVersionValidator::default(),
135
+ // asset_lock_validator,
136
+ // )
137
+ // .map_err(from_dpp_init_error)?,
138
+ // IdentityCreditWithdrawalTransitionBasicValidator::new(
139
+ // protocol_version_validator.clone(),
140
+ // )
141
+ // .map_err(from_dpp_init_error)?,
142
+ // DocumentBatchTransitionBasicValidator::new(
143
+ // state_repository_wrapper.clone(),
144
+ // protocol_version_validator.clone(),
145
+ // ),
146
+ // IdentityCreditTransferTransitionBasicValidator::new(
147
+ // ProtocolVersionValidator::default(),
148
+ // )
149
+ // .map_err(from_dpp_init_error)?,
150
+ // ),
151
+ // );
152
+ //
153
+ // let factory = StateTransitionFactory::new(
154
+ // state_repository_wrapper,
155
+ // Arc::new(state_transition_basic_validator),
156
+ // );
157
+ //
158
+ // Ok(factory.into())
159
+ // }
160
+ //
161
+ // #[wasm_bindgen(js_name=createFromObject)]
162
+ // pub async fn create_from_object(
163
+ // &self,
164
+ // state_transition_object: JsValue,
165
+ // options: JsValue,
166
+ // ) -> Result<JsValue, JsValue> {
167
+ // let options: FromObjectOptions = if options.is_object() {
168
+ // with_js_error!(serde_wasm_bindgen::from_value(options))?
169
+ // } else {
170
+ // Default::default()
171
+ // };
172
+ //
173
+ // let raw_state_transition: Value = state_transition_object.with_serde_to_platform_value()?;
174
+ //
175
+ // let result = self
176
+ // .0
177
+ // .create_from_object(
178
+ // raw_state_transition,
179
+ // Some(StateTransitionFactoryOptions {
180
+ // skip_validation: options.skip_validation.unwrap_or(false),
181
+ // }),
182
+ // )
183
+ // .await;
184
+ //
185
+ // Self::state_transition_wasm_from_factory_result(result)
186
+ // }
190
187
 
191
188
  #[wasm_bindgen(js_name=createFromBuffer)]
192
189
  pub async fn create_from_buffer(
193
190
  &self,
194
191
  buffer: Vec<u8>,
195
- options: JsValue,
192
+ _options: JsValue,
196
193
  ) -> Result<JsValue, JsValue> {
197
- let options: FromObjectOptions = if options.is_object() {
198
- with_js_error!(serde_wasm_bindgen::from_value(options))?
199
- } else {
200
- Default::default()
201
- };
194
+ // let options: FromObjectOptions = if options.is_object() {
195
+ // with_js_error!(serde_wasm_bindgen::from_value(options))?
196
+ // } else {
197
+ // Default::default()
198
+ // };
202
199
 
203
- let result = self
204
- .0
205
- .create_from_buffer(
206
- &buffer,
207
- Some(StateTransitionFactoryOptions {
208
- skip_validation: options.skip_validation.unwrap_or(false),
209
- }),
210
- )
211
- .await;
200
+ let result = self.0.create_from_buffer(&buffer);
212
201
 
213
202
  Self::state_transition_wasm_from_factory_result(result)
214
203
  }
@@ -1,5 +1,5 @@
1
1
  use crate::state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper};
2
- use dpp::state_transition::validation::validate_state_transition_fee::StateTransitionFeeValidator;
2
+ use dpp::state_transition::state_transition_validation::validate_state_transition_fee::StateTransitionFeeValidator;
3
3
  use std::sync::Arc;
4
4
  use wasm_bindgen::prelude::wasm_bindgen;
5
5
  use wasm_bindgen::JsValue;
@@ -7,10 +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;
11
- use dpp::state_transition::validation::validate_state_transition_identity_signature::validate_state_transition_identity_signature;
12
- use dpp::state_transition::{StateTransition, StateTransitionIdentitySigned};
10
+ use dpp::state_transition::state_transition_validation::validate_state_transition_identity_signature::validate_state_transition_identity_signature;
11
+ use dpp::state_transition::{StateTransition, StateTransitionIdentitySignedV0};
13
12
 
13
+ use crate::StateTransitionExecutionContextWasm;
14
14
  use std::sync::Arc;
15
15
  use wasm_bindgen::prelude::wasm_bindgen;
16
16
  use wasm_bindgen::JsValue;
@@ -23,13 +23,14 @@ struct StValidator {
23
23
  impl StValidator {
24
24
  pub async fn validate(
25
25
  &self,
26
- state_transition: &mut impl StateTransitionIdentitySigned,
26
+ state_transition: &mut impl StateTransitionIdentitySignedV0,
27
+ execution_context: &StateTransitionExecutionContext,
27
28
  ) -> Result<ValidationResultWasm, JsValue> {
28
29
  let result = validate_state_transition_identity_signature(
29
30
  self.state_repository.clone(),
30
31
  state_transition,
31
32
  &self.bls,
32
- &StateTransitionExecutionContext::default(), // TODO(v0.24-backport): is it fine using default context here?
33
+ execution_context,
33
34
  )
34
35
  .await
35
36
  .with_js_error()?;
@@ -43,12 +44,14 @@ impl StValidator {
43
44
  pub async fn validate_state_transition_identity_signature_wasm(
44
45
  external_state_repository: ExternalStateRepositoryLike,
45
46
  js_state_transition: &JsValue,
47
+ execution_context: &StateTransitionExecutionContextWasm,
46
48
  bls_adapter: JsBlsAdapter,
47
49
  ) -> Result<ValidationResultWasm, JsValue> {
48
50
  let bls = BlsAdapter(bls_adapter);
49
51
  let state_repository = Arc::new(ExternalStateRepositoryLikeWrapper::new(
50
52
  external_state_repository,
51
53
  ));
54
+ let execution_context: StateTransitionExecutionContext = execution_context.to_owned().into();
52
55
 
53
56
  let validator = StValidator {
54
57
  bls,
@@ -60,13 +63,19 @@ pub async fn validate_state_transition_identity_signature_wasm(
60
63
 
61
64
  match state_transition {
62
65
  StateTransition::DataContractCreate(mut state_transition) => {
63
- validator.validate(&mut state_transition).await
66
+ validator
67
+ .validate(&mut state_transition, &execution_context)
68
+ .await
64
69
  }
65
70
  StateTransition::DataContractUpdate(mut state_transition) => {
66
- validator.validate(&mut state_transition).await
71
+ validator
72
+ .validate(&mut state_transition, &execution_context)
73
+ .await
67
74
  }
68
75
  StateTransition::DocumentsBatch(mut state_transition) => {
69
- validator.validate(&mut state_transition).await
76
+ validator
77
+ .validate(&mut state_transition, &execution_context)
78
+ .await
70
79
  }
71
80
  // TODO: We should use protocol error here, not consensus
72
81
  StateTransition::IdentityCreate(state_transition) => Err(from_consensus_error(
@@ -81,10 +90,19 @@ pub async fn validate_state_transition_identity_signature_wasm(
81
90
  )),
82
91
  )),
83
92
  StateTransition::IdentityCreditWithdrawal(mut state_transition) => {
84
- validator.validate(&mut state_transition).await
93
+ validator
94
+ .validate(&mut state_transition, &execution_context)
95
+ .await
85
96
  }
86
97
  StateTransition::IdentityUpdate(mut state_transition) => {
87
- validator.validate(&mut state_transition).await
98
+ validator
99
+ .validate(&mut state_transition, &execution_context)
100
+ .await
101
+ }
102
+ StateTransition::IdentityCreditTransfer(mut state_transition) => {
103
+ validator
104
+ .validate(&mut state_transition, &execution_context)
105
+ .await
88
106
  }
89
107
  }
90
108
  }
@@ -5,7 +5,7 @@ use crate::StateTransitionExecutionContextWasm;
5
5
  use dpp::identity::state_transition::asset_lock_proof::{
6
6
  AssetLockPublicKeyHashFetcher, AssetLockTransactionOutputFetcher,
7
7
  };
8
- use dpp::state_transition::validation::validate_state_transition_key_signature::StateTransitionKeySignatureValidator;
8
+ use dpp::state_transition::state_transition_validation::validate_state_transition_key_signature::StateTransitionKeySignatureValidator;
9
9
  use dpp::validation::AsyncDataValidator;
10
10
  use std::sync::Arc;
11
11
  use wasm_bindgen::prelude::wasm_bindgen;
package/src/utils.rs CHANGED
@@ -1,14 +1,11 @@
1
1
  use std::collections::BTreeMap;
2
2
  use std::convert::TryInto;
3
3
 
4
- use anyhow::{anyhow, bail};
5
- use dpp::{
6
- consensus::ConsensusError,
7
- dashcore::{anyhow, anyhow::Context},
8
- ProtocolError,
9
- };
4
+ use anyhow::{anyhow, bail, Context};
5
+ use dpp::{consensus::ConsensusError, ProtocolError};
10
6
 
11
7
  use dpp::platform_value::Value;
8
+ use dpp::serialization::PlatformDeserializable;
12
9
  use js_sys::{Function, Uint8Array};
13
10
  use serde::de::DeserializeOwned;
14
11
  use serde_json::Value as JsonValue;
@@ -193,7 +190,7 @@ pub fn generic_of_js_val<T: RefFromWasmAbi<Abi = u32>>(
193
190
  .name();
194
191
 
195
192
  if ctor_name == class_name {
196
- let ptr = js_sys::Reflect::get(js_value, &JsValue::from_str("ptr"))?;
193
+ let ptr = js_sys::Reflect::get(js_value, &JsValue::from_str("__wbg_ptr"))?;
197
194
  let ptr_u32: u32 = ptr
198
195
  .as_f64()
199
196
  .ok_or_else(|| JsValue::from(JsError::new("Invalid JS object pointer")))?
@@ -296,6 +293,8 @@ pub(crate) fn consensus_errors_from_buffers(
296
293
  )
297
294
  .to_vec()
298
295
  })
299
- .map(|error_bytes| ConsensusError::deserialize(&error_bytes.to_vec()).with_js_error())
296
+ .map(|error_bytes| {
297
+ ConsensusError::deserialize_from_bytes(&error_bytes.to_vec()).with_js_error()
298
+ })
300
299
  .collect::<Result<Vec<ConsensusError>, JsValue>>()
301
300
  }
@@ -3,6 +3,7 @@ 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::serialization::PlatformDeserializable;
6
7
  use dpp::{consensus::ConsensusError, validation::ConsensusValidationResult};
7
8
  use js_sys::{JsString, Uint8Array};
8
9
  use wasm_bindgen::prelude::*;
@@ -1,62 +1,55 @@
1
- const getDataContractJSFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
2
1
  const crypto = require('crypto');
2
+ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
3
3
  const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
4
4
  const createStateRepositoryMock = require('../../../lib/test/mocks/createStateRepositoryMock');
5
- const getPrivateAndPublicKey = require('../../../lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture');
5
+ const getPrivateAndPublicKeyForSigningFixture = require('../../../lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture');
6
6
 
7
7
  const { default: loadWasmDpp } = require('../../..');
8
8
  let {
9
- DashPlatformProtocol, DataContract, ValidationResult, DataContractValidator,
9
+ DashPlatformProtocol, DataContract, ValidationResult,
10
10
  DataContractFactory, DataContractCreateTransition, DataContractUpdateTransition,
11
11
  } = require('../../..');
12
12
 
13
13
  describe('DataContractFacade', () => {
14
14
  let dpp;
15
- let dataContractJs;
15
+ let dataContract;
16
16
  let dataContractFactory;
17
- let blsAdapter;
18
17
  let rawDataContract;
19
- let dataContractWasm;
20
18
  let stateTransitionMock;
21
19
 
22
20
  before(async () => {
23
21
  ({
24
- DashPlatformProtocol, DataContract, ValidationResult,
25
- DataContractValidator, DataContractFactory, DataContractCreateTransition,
26
- DataContractUpdateTransition,
22
+ DashPlatformProtocol, DataContract, ValidationResult, DataContractFactory,
23
+ DataContractCreateTransition, DataContractUpdateTransition,
27
24
  } = await loadWasmDpp());
28
25
  });
29
26
 
30
27
  beforeEach(async function beforeEach() {
31
- blsAdapter = await getBlsAdapterMock();
32
28
  stateTransitionMock = createStateRepositoryMock(this.sinonSandbox);
33
29
  dpp = new DashPlatformProtocol(
34
- blsAdapter, stateTransitionMock, { generate: () => crypto.randomBytes(32) }, 1,
30
+ { generate: () => crypto.randomBytes(32) }, 1,
35
31
  );
36
32
 
37
- dataContractJs = await getDataContractJSFixture();
38
- rawDataContract = dataContractJs.toObject();
33
+ dataContract = await getDataContractFixture();
34
+ rawDataContract = dataContract.toObject();
39
35
 
40
- const dataContractValidator = new DataContractValidator();
41
36
  dataContractFactory = new DataContractFactory(
42
37
  1,
43
- dataContractValidator,
38
+ { generate: () => crypto.randomBytes(32) },
44
39
  );
45
-
46
- dataContractWasm = await dataContractFactory.createFromObject(rawDataContract);
47
40
  });
48
41
 
49
42
  describe('create', () => {
50
43
  it('should create DataContract', () => {
51
44
  const result = dpp.dataContract.create(
52
- dataContractJs.getOwnerId(),
53
- dataContractJs.getDocuments(),
45
+ dataContract.getOwnerId(),
46
+ dataContract.getDocumentSchemas(),
54
47
  );
55
48
 
56
49
  expect(result).to.be.an.instanceOf(DataContract);
57
50
 
58
- expect(result.getOwnerId().toBuffer()).to.deep.equal(dataContractJs.getOwnerId().toBuffer());
59
- expect(result.getDocuments()).to.deep.equal(dataContractJs.getDocuments());
51
+ expect(result.getOwnerId().toBuffer()).to.deep.equal(dataContract.getOwnerId().toBuffer());
52
+ expect(result.getDocumentSchemas()).to.deep.equal(dataContract.getDocumentSchemas());
60
53
  });
61
54
  });
62
55
 
@@ -66,15 +59,15 @@ describe('DataContractFacade', () => {
66
59
 
67
60
  expect(result).to.be.an.instanceOf(DataContract);
68
61
 
69
- expect(result.toObject()).to.deep.equal(dataContractJs.toObject());
62
+ expect(result.toObject()).to.deep.equal(dataContract.toObject());
70
63
  });
71
64
  });
72
65
 
73
66
  describe('createFromBuffer', () => {
74
67
  it('should create DataContract from string', async () => {
75
68
  const contract = dpp.dataContract.create(
76
- dataContractJs.getOwnerId(),
77
- dataContractJs.getDocuments(),
69
+ dataContract.getOwnerId(),
70
+ dataContract.getDocumentSchemas(),
78
71
  );
79
72
 
80
73
  const result = await dpp.dataContract.createFromBuffer(contract.toBuffer());
@@ -87,9 +80,9 @@ describe('DataContractFacade', () => {
87
80
  describe('createDataContractCreateTransition', () => {
88
81
  it('should create DataContractCreateTransition from DataContract', async () => {
89
82
  const stateTransition = await dataContractFactory
90
- .createDataContractCreateTransition(dataContractWasm);
83
+ .createDataContractCreateTransition(dataContract);
91
84
 
92
- const result = dpp.dataContract.createDataContractCreateTransition(dataContractWasm);
85
+ const result = dpp.dataContract.createDataContractCreateTransition(dataContract);
93
86
 
94
87
  expect(result).to.be.an.instanceOf(DataContractCreateTransition);
95
88
 
@@ -99,12 +92,12 @@ describe('DataContractFacade', () => {
99
92
 
100
93
  describe('createDataContractUpdateTransition', () => {
101
94
  it('should create DataContractUpdateTransition from buffer', async () => {
102
- const dataContractBuffer = Buffer.from('01a56324696458205a3c9565f215156cfb330ef3a4a4400a1dad7415f4f1480e072d3419bb29c12c6724736368656d61783468747470733a2f2f736368656d612e646173682e6f72672f6470702d302d342d302f6d6574612f646174612d636f6e7472616374676f776e657249645820d5199a5b19334554d5dd483af53877251584ab9a66ca777bd1b2e8d2ec4808346776657273696f6e0169646f63756d656e7473a36c6e696365446f63756d656e74a46474797065666f626a656374687265717569726564816a246372656174656441746a70726f70657274696573a1646e616d65a1647479706566737472696e67746164646974696f6e616c50726f70657274696573f46e7769746842797465417272617973a56474797065666f626a65637467696e646963657381a2646e616d6566696e646578316a70726f7065727469657381a16e6279746541727261794669656c6463617363687265717569726564816e6279746541727261794669656c646a70726f70657274696573a26e6279746541727261794669656c64a36474797065656172726179686d61784974656d731069627974654172726179f56f6964656e7469666965724669656c64a56474797065656172726179686d61784974656d731820686d696e4974656d73182069627974654172726179f570636f6e74656e744d656469615479706578216170706c69636174696f6e2f782e646173682e6470702e6964656e746966696572746164646974696f6e616c50726f70657274696573f46f696e6465786564446f63756d656e74a56474797065666f626a65637467696e646963657386a3646e616d6566696e646578316a70726f7065727469657382a168246f776e6572496463617363a16966697273744e616d656361736366756e69717565f5a3646e616d6566696e646578326a70726f7065727469657382a168246f776e6572496463617363a1686c6173744e616d656361736366756e69717565f5a2646e616d6566696e646578336a70726f7065727469657381a1686c6173744e616d6563617363a2646e616d6566696e646578346a70726f7065727469657382a16a2463726561746564417463617363a16a2475706461746564417463617363a2646e616d6566696e646578356a70726f7065727469657381a16a2475706461746564417463617363a2646e616d6566696e646578366a70726f7065727469657381a16a2463726561746564417463617363687265717569726564846966697273744e616d656a246372656174656441746a24757064617465644174686c6173744e616d656a70726f70657274696573a2686c6173744e616d65a2647479706566737472696e67696d61784c656e677468183f6966697273744e616d65a2647479706566737472696e67696d61784c656e677468183f746164646974696f6e616c50726f70657274696573f4', 'hex');
95
+ const dataContractBuffer = dataContract.toBuffer();
103
96
 
104
- const dataContract = await dpp.dataContract.createFromBuffer(dataContractBuffer);
97
+ const dataContractNew = await dpp.dataContract.createFromBuffer(dataContractBuffer);
105
98
 
106
99
  const updatedDataContract = await dpp.dataContract.createFromObject(
107
- dataContract.toObject(),
100
+ dataContractNew.toObject(),
108
101
  );
109
102
 
110
103
  updatedDataContract.incrementVersion();
@@ -112,7 +105,7 @@ describe('DataContractFacade', () => {
112
105
  const dataContractUpdateTransition = dpp.dataContract
113
106
  .createDataContractUpdateTransition(updatedDataContract);
114
107
 
115
- const { identityPublicKey, privateKey } = await getPrivateAndPublicKey();
108
+ const { identityPublicKey, privateKey } = await getPrivateAndPublicKeyForSigningFixture();
116
109
 
117
110
  dataContractUpdateTransition.sign(
118
111
  identityPublicKey,
@@ -129,7 +122,7 @@ describe('DataContractFacade', () => {
129
122
  });
130
123
  });
131
124
 
132
- describe('validate', () => {
125
+ describe.skip('validate', () => {
133
126
  it('should validate raw data contract', async () => {
134
127
  const result = await dpp.dataContract.validate(rawDataContract);
135
128
 
@@ -138,7 +131,7 @@ describe('DataContractFacade', () => {
138
131
  });
139
132
 
140
133
  it('should validate DataContract instance', async () => {
141
- const result = await dpp.dataContract.validate(dataContractWasm);
134
+ const result = await dpp.dataContract.validate(dataContract);
142
135
 
143
136
  expect(result).to.be.an.instanceOf(ValidationResult);
144
137
  expect(result.getErrors().length).to.be.equal(0);