@dashevo/wasm-dpp 0.25.0-dev.8 → 0.25.0-pr.1545.2

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 (329) hide show
  1. package/Cargo.toml +34 -7
  2. package/README.md +12 -7
  3. package/dist/errors/patchConsensusErrors.js +94 -115
  4. package/dist/wasm/wasm_dpp.d.ts +2302 -4106
  5. package/dist/wasm/wasm_dpp.js +18149 -2639
  6. package/dist/wasm/wasm_dpp_bg.js +1 -1
  7. package/lib/bls/bls.js +48 -0
  8. package/lib/dpp.ts +1 -1
  9. package/lib/errors/patchConsensusErrors.ts +94 -93
  10. package/lib/test/bootstrap.js +5 -0
  11. package/lib/test/fixtures/getChainAssetLockProofFixture.js +20 -1
  12. package/lib/test/fixtures/getDataContractFixture.js +13 -9
  13. package/lib/test/fixtures/getDocumentTransitionsFixture.js +31 -1
  14. package/lib/test/fixtures/getDocumentsFixture.js +9 -5
  15. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
  16. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
  17. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  18. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  19. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  20. package/lib/test/fixtures/getInstantAssetLockProofFixture.js +32 -12
  21. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  22. package/lib/test/mocks/createStateRepositoryMock.js +1 -0
  23. package/lib/test/mocks/getBlsAdapterMock.js +1 -1
  24. package/lib/utils/creditsConverter.js +14 -0
  25. package/lib/utils/hash.js +18 -0
  26. package/lib/wasm/wasm_dpp.d.ts +2302 -4106
  27. package/package.json +4 -6
  28. package/scripts/build-wasm.sh +30 -29
  29. package/src/bls_adapter.rs +1 -1
  30. package/src/dash_platform_protocol.rs +169 -192
  31. package/src/data_contract/data_contract.rs +309 -199
  32. package/src/data_contract/data_contract_facade.rs +28 -47
  33. package/src/data_contract/errors/mod.rs +1 -0
  34. package/src/data_contract/mod.rs +2 -2
  35. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +92 -79
  36. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
  37. package/src/data_contract_factory/data_contract_factory.rs +43 -83
  38. package/src/document/document_facade.rs +81 -76
  39. package/src/document/errors/document_already_exists_error.rs +6 -6
  40. package/src/document/errors/document_no_revision_error.rs +1 -0
  41. package/src/document/errors/document_not_provided_error.rs +6 -6
  42. package/src/document/errors/invalid_document_action_error.rs +11 -7
  43. package/src/document/errors/invalid_document_error.rs +5 -0
  44. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  45. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  46. package/src/document/errors/mod.rs +5 -0
  47. package/src/document/errors/revision_absent_error.rs +6 -6
  48. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  49. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  50. package/src/document/extended_document.rs +91 -76
  51. package/src/document/factory.rs +140 -119
  52. package/src/document/generate_document_id.rs +2 -2
  53. package/src/document/mod.rs +164 -150
  54. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +236 -229
  55. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  56. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  57. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +164 -152
  58. package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
  59. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
  60. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
  61. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
  62. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
  63. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
  64. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
  65. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
  66. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
  67. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
  68. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
  69. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
  70. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
  71. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
  72. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
  73. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
  74. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
  75. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
  76. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
  77. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
  78. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
  79. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
  80. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
  81. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
  82. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
  83. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
  84. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
  85. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
  86. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
  87. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
  88. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
  89. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
  90. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
  91. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
  92. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
  93. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
  94. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
  95. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
  96. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +5 -11
  97. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
  98. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
  99. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
  100. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
  101. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
  102. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
  103. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
  104. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
  105. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
  106. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
  107. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
  108. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
  109. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
  110. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
  111. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
  112. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
  113. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
  114. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
  115. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
  116. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
  117. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
  118. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
  119. package/src/errors/consensus/basic/json_schema_error.rs +33 -11
  120. package/src/errors/consensus/basic/mod.rs +2 -0
  121. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
  122. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  123. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -9
  124. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
  125. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
  126. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
  127. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  128. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
  129. package/src/errors/consensus/consensus_error.rs +44 -21
  130. package/src/errors/consensus/deserialize.rs +2 -1
  131. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
  132. package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
  133. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
  134. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
  135. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
  136. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
  137. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
  138. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
  139. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
  140. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
  141. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
  142. package/src/errors/consensus/state/data_contract/mod.rs +7 -1
  143. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
  144. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
  145. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
  146. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
  147. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
  148. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
  149. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
  150. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
  151. package/src/errors/consensus/state/document/mod.rs +2 -0
  152. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
  153. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
  154. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
  155. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
  156. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
  157. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
  158. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
  159. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
  160. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
  161. package/src/errors/consensus/value_error.rs +1 -9
  162. package/src/errors/from.rs +12 -8
  163. package/src/errors/mod.rs +7 -7
  164. package/src/errors/value_error.rs +5 -0
  165. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
  166. package/src/identity/factory_utils.rs +13 -13
  167. package/src/identity/identity.rs +275 -0
  168. package/src/identity/identity_facade.rs +94 -75
  169. package/src/identity/identity_factory.rs +74 -54
  170. package/src/identity/identity_public_key/mod.rs +87 -64
  171. package/src/identity/mod.rs +25 -247
  172. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +32 -17
  173. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  174. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  175. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +24 -15
  176. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  177. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  178. package/src/identity/state_transition/asset_lock_proof/mod.rs +124 -127
  179. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +72 -65
  180. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  181. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  182. package/src/identity/state_transition/identity_create_transition/to_object.rs +11 -12
  183. package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
  184. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
  185. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
  186. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
  187. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
  188. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
  189. package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
  190. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +68 -62
  191. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  192. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  193. package/src/identity/state_transition/identity_topup_transition/to_object.rs +9 -12
  194. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  195. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
  196. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  197. package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
  198. package/src/identity/state_transition/mod.rs +5 -2
  199. package/src/identity/state_transition/transition_types.rs +34 -0
  200. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  201. package/src/lib.rs +9 -10
  202. package/src/metadata.rs +3 -3
  203. package/src/protocol_version.rs +7 -0
  204. package/src/state_transition/conversion.rs +11 -1
  205. package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
  206. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  207. package/src/state_transition/mod.rs +137 -139
  208. package/src/state_transition/state_transition_facade.rs +11 -11
  209. package/src/state_transition/state_transition_factory.rs +142 -153
  210. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  211. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
  212. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  213. package/src/utils.rs +7 -8
  214. package/src/validation/mod.rs +2 -2
  215. package/src/validation/validation_result.rs +17 -15
  216. package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
  217. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
  218. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
  219. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
  220. package/test/integration/document/Document.spec.js +3 -3
  221. package/test/integration/document/DocumentFacade.spec.js +33 -48
  222. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +13 -24
  223. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
  224. package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
  225. package/test/integration/identity/IdentityFacade.spec.js +33 -63
  226. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
  227. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
  228. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  229. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
  230. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  231. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
  232. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
  233. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +5 -6
  234. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
  235. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +5 -9
  236. package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
  237. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
  238. package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
  239. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  240. package/test/unit/DashPlatformProtocol.spec.js +10 -25
  241. package/test/unit/dataContract/DataContract.spec.js +119 -148
  242. package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
  243. package/test/unit/dataContract/createDataContract.spec.js +6 -6
  244. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  245. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
  246. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
  247. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +34 -27
  248. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
  249. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
  250. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
  251. package/test/unit/document/Document.spec.js +59 -70
  252. package/test/unit/document/DocumentFactory.spec.js +46 -111
  253. package/test/unit/document/errors/InvalidDocumentError.spec.js +9 -9
  254. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  255. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +160 -158
  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 +134 -136
  259. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +4 -4
  260. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +572 -595
  261. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +6 -14
  262. package/test/unit/identity/Identity.spec.js +48 -83
  263. package/test/unit/identity/IdentityFactory.spec.js +61 -75
  264. package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
  265. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
  266. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
  267. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
  268. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
  269. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
  270. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +9 -28
  271. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +19 -27
  272. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
  273. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  274. package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
  275. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
  276. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
  277. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
  278. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
  279. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
  280. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  281. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  282. package/test-d/index.test-d.ts +2 -2
  283. package/lib/test/fixtures/getDashPayContractFixture.js +0 -1
  284. package/lib/test/fixtures/getDashPayDocumentFixture.js +0 -1
  285. package/lib/test/fixtures/getDpnsContractFixture.js +0 -1
  286. package/lib/test/fixtures/getDpnsDocumentFixture.js +0 -1
  287. package/lib/test/fixtures/getFeatureFlagsContractFixture.js +0 -1
  288. package/lib/test/fixtures/getFeatureFlagsDocumentsFixture.js +0 -1
  289. package/lib/test/fixtures/getIdentityTopUpTransitionFixtureJs.js +0 -1
  290. package/lib/test/fixtures/getMasternodeRewardShareDocumentsFixture.js +0 -1
  291. package/lib/test/fixtures/getMasternodeRewardSharesContractFixture.js +0 -1
  292. package/lib/test/fixtures/getPreorderDocumentFixture.js +0 -1
  293. package/lib/test/fixtures/getRawTransactionFixture.js +0 -1
  294. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  295. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  296. package/src/decode_protocol_entity.rs +0 -25
  297. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
  298. package/test/integration/DashPlatformProtocol.spec.js +0 -53
  299. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
  300. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +0 -195
  301. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +0 -500
  302. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +0 -53
  303. package/test/integration/util/generateEntropy.spec.js +0 -17
  304. package/test/integration/util/serializer.spec.js +0 -24
  305. package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +0 -103
  306. package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +0 -84
  307. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +0 -47
  308. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +0 -49
  309. package/test/unit/dataTrigger/DataTrigger.spec.js +0 -132
  310. package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +0 -29
  311. package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +0 -107
  312. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +0 -382
  313. package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +0 -99
  314. package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +0 -113
  315. package/test/unit/dataTrigger/rejectDataTrigger.spec.js +0 -51
  316. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +0 -202
  317. package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
  318. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +0 -257
  319. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +0 -94
  320. package/test/unit/errors/consensus/codes.spec.js +0 -102
  321. package/test/unit/identity/creditsConverter.spec.js +0 -34
  322. package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
  323. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +0 -89
  324. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +0 -142
  325. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +0 -100
  326. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +0 -36
  327. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +0 -63
  328. package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +0 -47
  329. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
@@ -2,254 +2,32 @@ mod factory_utils;
2
2
  pub mod identity_facade;
3
3
  mod identity_factory;
4
4
  mod identity_public_key;
5
- mod validation;
6
-
7
- use js_sys::Array;
8
- use serde_json::Value;
9
- use wasm_bindgen::prelude::*;
10
-
11
- use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
12
- use dpp::identity::IdentityPublicKey;
13
- use dpp::identity::{Identity, KeyID};
14
- use dpp::metadata::Metadata;
15
- use dpp::{Convertible, ProtocolError};
16
-
17
- use crate::identifier::IdentifierWrapper;
18
- use crate::utils::{to_vec_of_serde_values, IntoWasm, WithJsError};
19
- use crate::MetadataWasm;
20
- use crate::{utils, with_js_error};
5
+ // mod validation;
6
+ //
7
+ // use js_sys::Array;
8
+ // use serde_json::Value;
9
+ // use wasm_bindgen::prelude::*;
10
+ //
11
+ // use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
12
+ // use dpp::identity::IdentityPublicKey;
13
+ // use dpp::identity::{Identity, KeyID};
14
+ // use dpp::metadata::Metadata;
15
+ // use dpp::serialization::serialization_traits::{PlatformDeserializable, PlatformSerializable};
16
+ // use dpp::{ ProtocolError};
17
+ //
18
+ // use crate::identifier::IdentifierWrapper;
19
+ // use crate::utils::{to_vec_of_serde_values, IntoWasm, WithJsError};
20
+ // use crate::MetadataWasm;
21
+ // use crate::{utils, with_js_error};
21
22
  pub use identity_public_key::*;
22
-
23
- use crate::buffer::Buffer;
24
- use crate::errors::from_dpp_err;
25
- pub use state_transition::*;
26
-
27
- pub mod credits_converter;
23
+ //
24
+ // use crate::buffer::Buffer;
25
+ // use crate::errors::from_dpp_err;
26
+ // pub use state_transition::*;
27
+ //
28
+ // pub mod credits_converter;
28
29
  pub mod errors;
30
+ mod identity;
29
31
  pub mod state_transition;
30
32
 
31
- #[wasm_bindgen(js_name=Identity)]
32
- #[derive(Clone)]
33
- pub struct IdentityWasm(Identity);
34
-
35
- impl From<IdentityWasm> for Identity {
36
- fn from(identity: IdentityWasm) -> Self {
37
- identity.0
38
- }
39
- }
40
-
41
- impl From<Identity> for IdentityWasm {
42
- fn from(identity: Identity) -> Self {
43
- Self(identity)
44
- }
45
- }
46
-
47
- #[wasm_bindgen(js_class=Identity)]
48
- impl IdentityWasm {
49
- #[wasm_bindgen(constructor)]
50
- pub fn new(raw_identity: JsValue) -> Result<IdentityWasm, JsValue> {
51
- let identity_json = utils::stringify(&raw_identity)?;
52
- let raw_identity: Value =
53
- serde_json::from_str(&identity_json).map_err(|e| e.to_string())?;
54
-
55
- let identity = Identity::from_json(raw_identity).map_err(from_dpp_err)?;
56
- Ok(IdentityWasm(identity))
57
- }
58
-
59
- #[wasm_bindgen(js_name=getProtocolVersion)]
60
- pub fn get_protocol_version(&self) -> u32 {
61
- self.0.get_protocol_version()
62
- }
63
-
64
- #[wasm_bindgen(js_name=getId)]
65
- pub fn get_id(&self) -> IdentifierWrapper {
66
- (*self.0.get_id()).into()
67
- }
68
-
69
- #[wasm_bindgen(js_name=setPublicKeys)]
70
- pub fn set_public_keys(&mut self, public_keys: js_sys::Array) -> Result<usize, JsValue> {
71
- let raw_public_keys = to_vec_of_serde_values(public_keys.iter())?;
72
- if raw_public_keys.is_empty() {
73
- return Err(format!("Setting public keys failed. The input ('{}') is invalid. You must use array of PublicKeys", public_keys.to_string()).into());
74
- }
75
-
76
- let public_keys = raw_public_keys
77
- .into_iter()
78
- .map(|v| IdentityPublicKey::from_json_object(v).map(|key| (key.id, key)))
79
- .collect::<Result<_, _>>()
80
- .map_err(|e| format!("converting to collection of IdentityPublicKeys failed: {e:#}"))?;
81
-
82
- self.0.set_public_keys(public_keys);
83
-
84
- Ok(self.0.get_public_keys().len())
85
- }
86
-
87
- #[wasm_bindgen(js_name=getPublicKeys)]
88
- pub fn get_public_keys(&self) -> Vec<JsValue> {
89
- self.0
90
- .get_public_keys()
91
- .iter()
92
- .map(|(_, k)| k.to_owned())
93
- .map(IdentityPublicKeyWasm::from)
94
- .map(JsValue::from)
95
- .collect()
96
- }
97
-
98
- #[wasm_bindgen(js_name=getPublicKeyById)]
99
- pub fn get_public_key_by_id(&self, key_id: u32) -> Option<IdentityPublicKeyWasm> {
100
- let key_id = key_id as KeyID;
101
- self.0
102
- .get_public_key_by_id(key_id)
103
- .map(IdentityPublicKey::to_owned)
104
- .map(Into::into)
105
- }
106
-
107
- #[wasm_bindgen(getter)]
108
- pub fn balance(&self) -> f64 {
109
- self.0.get_balance() as f64
110
- }
111
-
112
- #[wasm_bindgen(js_name=getBalance)]
113
- pub fn get_balance(&self) -> f64 {
114
- self.0.get_balance() as f64
115
- }
116
-
117
- #[wasm_bindgen(js_name=setBalance)]
118
- pub fn set_balance(&mut self, balance: f64) {
119
- self.0.set_balance(balance as u64);
120
- }
121
-
122
- #[wasm_bindgen(js_name=increaseBalance)]
123
- pub fn increase_balance(&mut self, amount: f64) -> f64 {
124
- self.0.increase_balance(amount as u64) as f64
125
- }
126
-
127
- #[wasm_bindgen(js_name=reduceBalance)]
128
- pub fn reduce_balance(&mut self, amount: f64) -> f64 {
129
- self.0.reduce_balance(amount as u64) as f64
130
- }
131
-
132
- #[wasm_bindgen(js_name=setAssetLockProof)]
133
- pub fn set_asset_lock_proof(&mut self, lock: JsValue) -> Result<(), JsValue> {
134
- let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(&lock)?;
135
- self.0.set_asset_lock_proof(asset_lock_proof);
136
- Ok(())
137
- }
138
-
139
- #[wasm_bindgen(js_name=getAssetLockProof)]
140
- pub fn get_asset_lock_proof(&self) -> Option<AssetLockProofWasm> {
141
- self.0
142
- .get_asset_lock_proof()
143
- .map(AssetLockProof::to_owned)
144
- .map(Into::into)
145
- }
146
-
147
- #[wasm_bindgen(js_name=setRevision)]
148
- pub fn set_revision(&mut self, revision: f64) {
149
- self.0.set_revision(revision as u64);
150
- }
151
-
152
- #[wasm_bindgen(js_name=getRevision)]
153
- pub fn get_revision(&self) -> f64 {
154
- self.0.get_revision() as f64
155
- }
156
-
157
- #[wasm_bindgen(js_name=setMetadata)]
158
- pub fn set_metadata(&mut self, metadata: JsValue) -> Result<(), JsValue> {
159
- if !metadata.is_falsy() {
160
- let metadata = metadata.to_wasm::<MetadataWasm>("Metadata")?;
161
- self.0.set_metadata(metadata.to_owned().into())
162
- }
163
-
164
- Ok(())
165
- }
166
-
167
- #[wasm_bindgen(js_name=getMetadata)]
168
- pub fn get_metadata(&self) -> Option<MetadataWasm> {
169
- self.0
170
- .get_metadata()
171
- .map(Metadata::to_owned)
172
- .map(Into::into)
173
- }
174
-
175
- #[wasm_bindgen(js_name=from)]
176
- pub fn from(object: JsValue) -> Self {
177
- let i: Identity = serde_json::from_str(&object.as_string().unwrap()).unwrap();
178
- IdentityWasm(i)
179
- }
180
-
181
- #[wasm_bindgen(js_name=toJSON)]
182
- pub fn to_json(&self) -> Result<JsValue, JsValue> {
183
- let json = self.0.to_json().with_js_error()?;
184
- let serializer = serde_wasm_bindgen::Serializer::json_compatible();
185
- with_js_error!(json.serialize(&serializer))
186
- }
187
-
188
- #[wasm_bindgen(js_name=toObject)]
189
- pub fn to_object(&self) -> Result<JsValue, JsValue> {
190
- let js_public_keys = js_sys::Array::new();
191
- for pk in self.0.public_keys.values() {
192
- let pk_wasm = IdentityPublicKeyWasm::from(pk.to_owned());
193
- js_public_keys.push(&pk_wasm.to_object()?);
194
- }
195
-
196
- let value = self.0.to_cleaned_object().with_js_error()?;
197
-
198
- let serializer = serde_wasm_bindgen::Serializer::json_compatible();
199
- let js_object = with_js_error!(value.serialize(&serializer))?;
200
-
201
- let id = Buffer::from_bytes(self.0.id.as_slice());
202
-
203
- js_sys::Reflect::set(&js_object, &"id".to_owned().into(), &id)?;
204
-
205
- js_sys::Reflect::set(
206
- &js_object,
207
- &"publicKeys".to_owned().into(),
208
- &JsValue::from(&js_public_keys),
209
- )?;
210
-
211
- Ok(js_object)
212
- }
213
-
214
- #[wasm_bindgen(js_name=toBuffer)]
215
- pub fn to_buffer(&self) -> Vec<u8> {
216
- self.0.to_cbor_buffer().unwrap()
217
- }
218
-
219
- #[wasm_bindgen]
220
- pub fn hash(&self) -> Result<Vec<u8>, JsValue> {
221
- self.0.hash().with_js_error()
222
- }
223
-
224
- #[wasm_bindgen(js_name=addPublicKey)]
225
- pub fn add_public_key(&mut self, public_key: IdentityPublicKeyWasm) {
226
- self.0
227
- .public_keys
228
- .insert(public_key.get_id(), public_key.into());
229
- }
230
-
231
- // The method `addPublicKeys()` takes an variadic array of `IdentityPublicKeyWasm` as an input. But elements of the array
232
- // are available ONLY as `JsValue`. WASM-bindgen uses output from `toJSON()` to store WASM-object as `JsValue`.
233
- // `toJSON()` converts binary data to `base64` or `base58`. Therefore we need to use `from_json_object()` constructor to
234
- // to convert strings back into bytes and get `IdentityPublicKeyWasm`
235
- #[wasm_bindgen(js_name=addPublicKeys, variadic)]
236
- pub fn add_public_keys(&mut self, js_public_keys: JsValue) -> Result<(), JsValue> {
237
- let js_public_keys_array = Array::from(&js_public_keys);
238
- let json_objects = to_vec_of_serde_values(js_public_keys_array.iter())?;
239
-
240
- let public_keys: Vec<IdentityPublicKey> = json_objects
241
- .into_iter()
242
- .map(IdentityPublicKey::from_json_object)
243
- .collect::<Result<Vec<IdentityPublicKey>, ProtocolError>>()
244
- .with_js_error()?;
245
-
246
- self.0
247
- .add_public_keys(public_keys.into_iter().map(Into::into));
248
- Ok(())
249
- }
250
-
251
- #[wasm_bindgen(js_name=getPublicKeyMaxId)]
252
- pub fn get_public_ke_max_id(&self) -> f64 {
253
- self.0.get_public_key_max_id() as f64
254
- }
255
- }
33
+ pub use identity::*;
@@ -1,3 +1,6 @@
1
+ use dpp::dashcore::consensus::Encodable;
2
+ use dpp::dashcore::OutPoint;
3
+ use dpp::identity::state_transition::asset_lock_proof::AssetLockProofType;
1
4
  use serde::{Deserialize, Serialize};
2
5
  use std::convert::TryInto;
3
6
  use wasm_bindgen::prelude::*;
@@ -10,8 +13,8 @@ use crate::{
10
13
  with_js_error,
11
14
  };
12
15
  use dpp::identity::state_transition::asset_lock_proof::chain::ChainAssetLockProof;
16
+ use dpp::platform_value::string_encoding;
13
17
  use dpp::platform_value::string_encoding::Encoding;
14
- use dpp::platform_value::{string_encoding, Bytes36};
15
18
 
16
19
  #[wasm_bindgen(js_name=ChainAssetLockProof)]
17
20
  #[derive(Clone)]
@@ -20,8 +23,6 @@ pub struct ChainAssetLockProofWasm(ChainAssetLockProof);
20
23
  #[derive(Debug, Serialize, Deserialize)]
21
24
  #[serde(rename_all = "camelCase")]
22
25
  struct ChainAssetLockProofParams {
23
- #[serde(rename = "type")]
24
- lock_type: u8,
25
26
  core_chain_locked_height: u32,
26
27
  out_point: Vec<u8>,
27
28
  }
@@ -41,14 +42,14 @@ impl From<ChainAssetLockProofWasm> for ChainAssetLockProof {
41
42
  #[wasm_bindgen(js_class = ChainAssetLockProof)]
42
43
  impl ChainAssetLockProofWasm {
43
44
  #[wasm_bindgen(constructor)]
44
- pub fn new(raw_parameters: JsValue) -> Result<ChainAssetLockProofWasm, JsValue> {
45
- let parameters: ChainAssetLockProofParams =
46
- with_js_error!(serde_wasm_bindgen::from_value(raw_parameters))?;
45
+ pub fn new(raw_parameters: JsValue) -> Result<ChainAssetLockProofWasm, JsError> {
46
+ let parameters: ChainAssetLockProofParams = serde_wasm_bindgen::from_value(raw_parameters)
47
+ .map_err(|_| JsError::new("invalid raw chain lock proof"))?;
47
48
 
48
- let out_point: [u8; 36] = parameters.out_point.try_into().map_err(|_| {
49
- RustConversionError::Error(String::from("outPoint must be a 36 byte array"))
50
- .to_js_value()
51
- })?;
49
+ let out_point: [u8; 36] = parameters
50
+ .out_point
51
+ .try_into()
52
+ .map_err(|_| JsError::new("outPoint must be a 36 byte array"))?;
52
53
 
53
54
  let chain_asset_lock_proof =
54
55
  ChainAssetLockProof::new(parameters.core_chain_locked_height, out_point);
@@ -58,7 +59,7 @@ impl ChainAssetLockProofWasm {
58
59
 
59
60
  #[wasm_bindgen(js_name=getType)]
60
61
  pub fn get_type(&self) -> u8 {
61
- ChainAssetLockProof::asset_lock_type()
62
+ AssetLockProofType::Chain as u8
62
63
  }
63
64
 
64
65
  #[wasm_bindgen(js_name=getCoreChainLockedHeight)]
@@ -72,8 +73,15 @@ impl ChainAssetLockProofWasm {
72
73
  }
73
74
 
74
75
  #[wasm_bindgen(js_name=getOutPoint)]
75
- pub fn get_out_point(&self) -> Buffer {
76
- Buffer::from_bytes_owned(self.0.out_point.to_vec())
76
+ pub fn get_out_point(&self) -> Result<Buffer, JsValue> {
77
+ let mut outpoint_bytes = Vec::new();
78
+
79
+ self.0
80
+ .out_point
81
+ .consensus_encode(&mut outpoint_bytes)
82
+ .map_err(|e| e.to_string())?;
83
+
84
+ Ok(Buffer::from_bytes_owned(outpoint_bytes))
77
85
  }
78
86
 
79
87
  #[wasm_bindgen(js_name=setOutPoint)]
@@ -82,7 +90,8 @@ impl ChainAssetLockProofWasm {
82
90
  RustConversionError::Error(String::from("outPoint must be a 36 byte array"))
83
91
  .to_js_value()
84
92
  })?;
85
- self.0.out_point = Bytes36::new(out_point);
93
+
94
+ self.0.out_point = OutPoint::from(out_point);
86
95
 
87
96
  Ok(())
88
97
  }
@@ -91,8 +100,14 @@ impl ChainAssetLockProofWasm {
91
100
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
92
101
  let js_object = self.to_object()?;
93
102
 
94
- let out_point_base64 =
95
- string_encoding::encode(self.0.out_point.as_slice(), Encoding::Base64);
103
+ let mut outpoint_bytes = Vec::new();
104
+
105
+ self.0
106
+ .out_point
107
+ .consensus_encode(&mut outpoint_bytes)
108
+ .map_err(|e| e.to_string())?;
109
+
110
+ let out_point_base64 = string_encoding::encode(&outpoint_bytes, Encoding::Base64);
96
111
 
97
112
  js_sys::Reflect::set(
98
113
  &js_object,
@@ -110,7 +125,7 @@ impl ChainAssetLockProofWasm {
110
125
  let serializer = serde_wasm_bindgen::Serializer::json_compatible();
111
126
  let js_object = with_js_error!(asset_lock_value.serialize(&serializer))?;
112
127
 
113
- let out_point = self.get_out_point();
128
+ let out_point = self.get_out_point()?;
114
129
 
115
130
  js_sys::Reflect::set(
116
131
  &js_object,
@@ -1,7 +1,6 @@
1
1
  use dpp::identity::state_transition::asset_lock_proof::{
2
2
  AssetLockTransactionValidator, ChainAssetLockProofStructureValidator,
3
3
  };
4
- use dpp::state_transition::state_transition_execution_context::StateTransitionExecutionContext;
5
4
  use dpp::ProtocolError;
6
5
  use std::sync::Arc;
7
6
  use wasm_bindgen::prelude::*;
@@ -1,4 +1,6 @@
1
1
  pub use chain_asset_lock_proof::*;
2
2
 
3
3
  pub mod chain_asset_lock_proof;
4
- pub mod chain_asset_lock_proof_structure_validator;
4
+
5
+ // TODO(versioning): restore?
6
+ // pub mod chain_asset_lock_proof_structure_validator;
@@ -1,8 +1,10 @@
1
1
  use dpp::dashcore::{
2
- blockdata::{script::Script, transaction::txout::TxOut},
2
+ blockdata::{script::ScriptBuf, transaction::txout::TxOut},
3
3
  consensus::encode::serialize,
4
4
  };
5
5
 
6
+ use dpp::dashcore::consensus::Encodable;
7
+ use dpp::identity::state_transition::asset_lock_proof::AssetLockProofType;
6
8
  use serde::{Deserialize, Serialize};
7
9
  use std::convert::TryInto;
8
10
  use wasm_bindgen::prelude::*;
@@ -15,7 +17,7 @@ use crate::{
15
17
  with_js_error,
16
18
  };
17
19
  use dpp::identity::state_transition::asset_lock_proof::instant::{
18
- InstantAssetLockProof, RawInstantLock,
20
+ InstantAssetLockProof, RawInstantLockProof,
19
21
  };
20
22
  use dpp::platform_value::string_encoding;
21
23
  use dpp::platform_value::string_encoding::Encoding;
@@ -26,7 +28,7 @@ struct TxOutJS {
26
28
  #[serde(rename = "satoshis")]
27
29
  value: u64,
28
30
  #[serde(rename = "script")]
29
- script_pubkey: Script,
31
+ script_pubkey: ScriptBuf,
30
32
  }
31
33
 
32
34
  #[derive(Serialize)]
@@ -51,34 +53,41 @@ impl From<InstantAssetLockProofWasm> for InstantAssetLockProof {
51
53
  #[wasm_bindgen(js_class = InstantAssetLockProof)]
52
54
  impl InstantAssetLockProofWasm {
53
55
  #[wasm_bindgen(constructor)]
54
- pub fn new(raw_parameters: JsValue) -> Result<InstantAssetLockProofWasm, JsValue> {
55
- let raw_instant_lock: RawInstantLock =
56
- with_js_error!(serde_wasm_bindgen::from_value(raw_parameters))?;
56
+ pub fn new(raw_parameters: JsValue) -> Result<InstantAssetLockProofWasm, JsError> {
57
+ let raw_instant_lock: RawInstantLockProof = serde_wasm_bindgen::from_value(raw_parameters)
58
+ .map_err(|_| JsError::new("invalid raw instant lock proof"))?;
57
59
 
58
- let instant_asset_lock_proof: InstantAssetLockProof =
59
- raw_instant_lock.try_into().map_err(|_| {
60
- RustConversionError::Error(String::from("object passed is not a raw Instant Lock"))
61
- .to_js_value()
62
- })?;
60
+ let instant_asset_lock_proof: InstantAssetLockProof = raw_instant_lock
61
+ .try_into()
62
+ .map_err(|_| JsError::new("object passed is not a raw Instant Lock"))?;
63
63
 
64
64
  Ok(instant_asset_lock_proof.into())
65
65
  }
66
66
 
67
67
  #[wasm_bindgen(js_name=getType)]
68
68
  pub fn get_type(&self) -> u8 {
69
- self.0.asset_lock_type()
69
+ AssetLockProofType::Instant as u8
70
70
  }
71
71
 
72
72
  #[wasm_bindgen(js_name=getOutputIndex)]
73
- pub fn get_output_index(&self) -> usize {
73
+ pub fn get_output_index(&self) -> u32 {
74
74
  self.0.output_index()
75
75
  }
76
76
 
77
77
  #[wasm_bindgen(js_name=getOutPoint)]
78
- pub fn get_out_point(&self) -> Option<Buffer> {
78
+ pub fn get_out_point(&self) -> Result<Option<Buffer>, JsValue> {
79
79
  self.0
80
80
  .out_point()
81
- .map(|out_point| Buffer::from_bytes(&out_point))
81
+ .map(|out_point| {
82
+ let mut outpoint_bytes = Vec::new();
83
+
84
+ out_point
85
+ .consensus_encode(&mut outpoint_bytes)
86
+ .map_err(|e| e.to_string())?;
87
+
88
+ Ok(Buffer::from_bytes_owned(outpoint_bytes))
89
+ })
90
+ .transpose()
82
91
  }
83
92
 
84
93
  #[wasm_bindgen(js_name=getOutput)]
@@ -1,7 +1,6 @@
1
1
  use dpp::identity::state_transition::asset_lock_proof::{
2
2
  AssetLockTransactionValidator, InstantAssetLockProofStructureValidator,
3
3
  };
4
- use dpp::state_transition::state_transition_execution_context::StateTransitionExecutionContext;
5
4
  use dpp::ProtocolError;
6
5
  use std::sync::Arc;
7
6
  use wasm_bindgen::prelude::*;
@@ -1,4 +1,6 @@
1
1
  pub use instant_asset_lock_proof::*;
2
2
 
3
3
  pub mod instant_asset_lock_proof;
4
- pub mod instant_asset_lock_proof_structure_validator;
4
+
5
+ // TODO(versioning): restore?
6
+ // pub mod instant_asset_lock_proof_structure_validator;