@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
@@ -4,28 +4,21 @@ mod instant;
4
4
  pub use chain::*;
5
5
  pub use instant::*;
6
6
  use std::convert::TryInto;
7
- use std::sync::Arc;
8
7
  use wasm_bindgen::JsCast;
9
8
  use wasm_bindgen::__rt::Ref;
10
9
 
11
- use crate::errors::{from_dpp_err, RustConversionError};
12
- use dpp::dashcore::consensus;
13
- use dpp::dashcore::hashes::hex::FromHex;
10
+ use crate::errors::RustConversionError;
11
+
14
12
  use dpp::identity::errors::UnknownAssetLockProofTypeError;
15
13
  use wasm_bindgen::prelude::*;
16
14
 
17
- use crate::buffer::Buffer;
18
- use crate::errors::dpp_error::from_dpp_error_ref;
19
15
  use crate::identifier::IdentifierWrapper;
20
16
  use crate::identity::errors::UnknownAssetLockProofTypeErrorWasm;
21
- use crate::state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper};
17
+
22
18
  use crate::utils::generic_of_js_val;
23
- use crate::validation::ValidationResultWasm;
24
- use crate::{Deserialize, StateTransitionExecutionContextWasm};
25
- use dpp::identity::state_transition::asset_lock_proof::{
26
- AssetLockProof, AssetLockProofType, AssetLockPublicKeyHashFetcher,
27
- AssetLockTransactionOutputFetcher, AssetLockTransactionValidator,
28
- };
19
+
20
+ use dpp::identity::state_transition::asset_lock_proof::{AssetLockProof, AssetLockProofType};
21
+ use serde::Deserialize;
29
22
 
30
23
  #[derive(Deserialize, Clone)]
31
24
  #[wasm_bindgen(js_name=AssetLockProof)]
@@ -63,7 +56,7 @@ pub trait AssetLockProofLike {
63
56
  impl AssetLockProofWasm {
64
57
  #[wasm_bindgen(constructor)]
65
58
  pub fn new(raw_asset_lock_proof: JsValue) -> Result<AssetLockProofWasm, JsValue> {
66
- let lock_type = get_lock_type(&raw_asset_lock_proof)?;
59
+ let lock_type = get_type_from_raw_asset_lock_proof(&raw_asset_lock_proof)?;
67
60
 
68
61
  match lock_type {
69
62
  AssetLockProofType::Instant => {
@@ -100,21 +93,22 @@ impl AssetLockProofWasm {
100
93
  }
101
94
  }
102
95
 
103
- fn get_lock_type(raw_asset_lock_proof: &JsValue) -> Result<AssetLockProofType, JsValue> {
104
- (js_sys::Reflect::get(raw_asset_lock_proof, &JsValue::from_str("type"))
105
- .map_err(|_| {
106
- RustConversionError::Error(String::from("error getting type from raw asset lock"))
107
- .to_js_value()
108
- })?
96
+ fn get_type_from_raw_asset_lock_proof(
97
+ raw_asset_lock_proof: &JsValue,
98
+ ) -> Result<AssetLockProofType, JsError> {
99
+ let proof_type = js_sys::Reflect::get(raw_asset_lock_proof, &JsValue::from_str("type"))
100
+ .map_err(|_| JsError::new("error getting type from raw asset lock"))?
109
101
  .as_f64()
110
- .ok_or_else(|| JsValue::from_str("asset lock type must be a number"))? as u64)
102
+ .ok_or_else(|| JsError::new("asset lock type must be a number"))?;
103
+
104
+ (proof_type as u64)
111
105
  .try_into()
112
- .map_err(|_| JsValue::from_str("unrecognized asset lock proof type"))
106
+ .map_err(|_| JsError::new("unrecognized asset lock proof type"))
113
107
  }
114
108
 
115
109
  #[wasm_bindgen(js_name=createAssetLockProofInstance)]
116
- pub fn create_asset_lock_proof_instance(raw_parameters: JsValue) -> Result<JsValue, JsValue> {
117
- let lock_type = get_lock_type(&raw_parameters)?;
110
+ pub fn create_asset_lock_proof_instance(raw_parameters: JsValue) -> Result<JsValue, JsError> {
111
+ let lock_type = get_type_from_raw_asset_lock_proof(&raw_parameters)?;
118
112
 
119
113
  match lock_type {
120
114
  AssetLockProofType::Instant => {
@@ -164,106 +158,109 @@ pub fn create_asset_lock_proof_from_wasm_instance(
164
158
  }
165
159
  }
166
160
 
167
- #[wasm_bindgen(js_name=validateAssetLockTransaction)]
168
- pub async fn validate_asset_lock_transaction(
169
- state_repository: ExternalStateRepositoryLike,
170
- raw_transaction: String,
171
- output_index: usize,
172
- execution_context: &StateTransitionExecutionContextWasm,
173
- ) -> Result<ValidationResultWasm, JsValue> {
174
- let tx_bytes = Vec::from_hex(&raw_transaction)
175
- .map_err(|_| RustConversionError::Error(String::from("invalid transaction hex")))?;
176
-
177
- let state_repository_wrapper =
178
- Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
179
-
180
- let validator = AssetLockTransactionValidator::new(state_repository_wrapper);
181
-
182
- let result = validator
183
- .validate(tx_bytes.as_slice(), output_index, execution_context.into())
184
- .await
185
- .map_err(|e| from_dpp_err(e.into()))?;
186
-
187
- let validation_result = result.map(|item| {
188
- let object = js_sys::Object::new();
189
-
190
- js_sys::Reflect::set(
191
- &object,
192
- &"publicKeyHash".to_owned().into(),
193
- &Buffer::from_bytes(&item.public_key_hash),
194
- )
195
- .unwrap();
196
-
197
- let deserialized_tx = consensus::serialize(&item.transaction);
198
-
199
- js_sys::Reflect::set(
200
- &object,
201
- &"transaction".to_owned().into(),
202
- &Buffer::from_bytes(&deserialized_tx),
203
- )
204
- .unwrap();
205
-
206
- object
207
- });
208
-
209
- Ok(validation_result.into())
210
- }
211
-
212
- #[wasm_bindgen(js_name=fetchAssetLockTransactionOutput)]
213
- pub async fn fetch_asset_lock_transaction_output(
214
- state_repository: ExternalStateRepositoryLike,
215
- raw_asset_lock_proof: JsValue,
216
- execution_context: &StateTransitionExecutionContextWasm,
217
- ) -> Result<JsValue, JsValue> {
218
- let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(&raw_asset_lock_proof)?;
219
-
220
- let state_repository_wrapper =
221
- Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
222
-
223
- let fetcher = AssetLockTransactionOutputFetcher::new(state_repository_wrapper);
224
-
225
- let fetch_result = fetcher
226
- .fetch(&asset_lock_proof, execution_context.into())
227
- .await
228
- .map_err(|e| from_dpp_error_ref(&e))?;
229
-
230
- let tx_out = js_sys::Object::new();
231
-
232
- js_sys::Reflect::set(
233
- &tx_out,
234
- &"satoshis".to_owned().into(),
235
- &(fetch_result.value as u32).into(),
236
- )
237
- .unwrap();
238
-
239
- let script_hex = format!("{:x}", fetch_result.script_pubkey);
240
-
241
- js_sys::Reflect::set(&tx_out, &"script".to_owned().into(), &script_hex.into()).unwrap();
242
-
243
- Ok(tx_out.into())
244
- }
245
-
246
- #[wasm_bindgen(js_name=fetchAssetLockPublicKeyHash)]
247
- pub async fn fetch_asset_lock_public_key_hash(
248
- state_repository: ExternalStateRepositoryLike,
249
- raw_asset_lock_proof: JsValue,
250
- execution_context: &StateTransitionExecutionContextWasm,
251
- ) -> Result<JsValue, JsValue> {
252
- let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(&raw_asset_lock_proof)?;
253
-
254
- let state_repository_wrapper =
255
- Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
256
-
257
- let tx_output_fetcher =
258
- AssetLockTransactionOutputFetcher::new(state_repository_wrapper.clone());
259
-
260
- let public_key_hash_fetcher =
261
- AssetLockPublicKeyHashFetcher::new(state_repository_wrapper, Arc::new(tx_output_fetcher));
262
-
263
- let fetch_result = public_key_hash_fetcher
264
- .fetch_public_key_hash(asset_lock_proof, execution_context.into())
265
- .await
266
- .map_err(|e| from_dpp_error_ref(&e))?;
267
-
268
- Ok(Buffer::from_bytes(&fetch_result).into())
269
- }
161
+ // TODO(versioning): restore?
162
+ // #[wasm_bindgen(js_name=validateAssetLockTransaction)]
163
+ // pub async fn validate_asset_lock_transaction(
164
+ // state_repository: ExternalStateRepositoryLike,
165
+ // raw_transaction: String,
166
+ // output_index: usize,
167
+ // execution_context: &StateTransitionExecutionContextWasm,
168
+ // ) -> Result<ValidationResultWasm, JsValue> {
169
+ // let tx_bytes = Vec::from_hex(&raw_transaction)
170
+ // .map_err(|_| RustConversionError::Error(String::from("invalid transaction hex")))?;
171
+ //
172
+ // let state_repository_wrapper =
173
+ // Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
174
+ //
175
+ // let validator = AssetLockTransactionValidator::new(state_repository_wrapper);
176
+ //
177
+ // let result = validator
178
+ // .validate(tx_bytes.as_slice(), output_index, execution_context.into())
179
+ // .await
180
+ // .map_err(|e| from_dpp_err(e.into()))?;
181
+ //
182
+ // let validation_result = result.map(|item| {
183
+ // let object = js_sys::Object::new();
184
+ //
185
+ // js_sys::Reflect::set(
186
+ // &object,
187
+ // &"publicKeyHash".to_owned().into(),
188
+ // &Buffer::from_bytes(&item.public_key_hash),
189
+ // )
190
+ // .unwrap();
191
+ //
192
+ // let deserialized_tx = consensus::serialize(&item.transaction);
193
+ //
194
+ // js_sys::Reflect::set(
195
+ // &object,
196
+ // &"transaction".to_owned().into(),
197
+ // &Buffer::from_bytes(&deserialized_tx),
198
+ // )
199
+ // .unwrap();
200
+ //
201
+ // object
202
+ // });
203
+ //
204
+ // Ok(validation_result.into())
205
+ // }
206
+
207
+ // TODO(versioning): restore?
208
+ // #[wasm_bindgen(js_name=fetchAssetLockTransactionOutput)]
209
+ // pub async fn fetch_asset_lock_transaction_output(
210
+ // state_repository: ExternalStateRepositoryLike,
211
+ // raw_asset_lock_proof: JsValue,
212
+ // execution_context: &StateTransitionExecutionContextWasm,
213
+ // ) -> Result<JsValue, JsValue> {
214
+ // let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(&raw_asset_lock_proof)?;
215
+ //
216
+ // let state_repository_wrapper =
217
+ // Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
218
+ //
219
+ // let fetcher = AssetLockTransactionOutputFetcher::new(state_repository_wrapper);
220
+ //
221
+ // let fetch_result = fetcher
222
+ // .fetch(&asset_lock_proof, execution_context.into())
223
+ // .await
224
+ // .map_err(|e| from_dpp_error_ref(&e))?;
225
+ //
226
+ // let tx_out = js_sys::Object::new();
227
+ //
228
+ // js_sys::Reflect::set(
229
+ // &tx_out,
230
+ // &"satoshis".to_owned().into(),
231
+ // &(fetch_result.value as u32).into(),
232
+ // )
233
+ // .unwrap();
234
+ //
235
+ // let script_hex = format!("{:x}", fetch_result.script_pubkey);
236
+ //
237
+ // js_sys::Reflect::set(&tx_out, &"script".to_owned().into(), &script_hex.into()).unwrap();
238
+ //
239
+ // Ok(tx_out.into())
240
+ // }
241
+
242
+ // TODO(versioning): restore?
243
+ // #[wasm_bindgen(js_name=fetchAssetLockPublicKeyHash)]
244
+ // pub async fn fetch_asset_lock_public_key_hash(
245
+ // state_repository: ExternalStateRepositoryLike,
246
+ // raw_asset_lock_proof: JsValue,
247
+ // execution_context: &StateTransitionExecutionContextWasm,
248
+ // ) -> Result<JsValue, JsValue> {
249
+ // let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(&raw_asset_lock_proof)?;
250
+ //
251
+ // let state_repository_wrapper =
252
+ // Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
253
+ //
254
+ // let tx_output_fetcher =
255
+ // AssetLockTransactionOutputFetcher::new(state_repository_wrapper.clone());
256
+ //
257
+ // let public_key_hash_fetcher =
258
+ // AssetLockPublicKeyHashFetcher::new(state_repository_wrapper, Arc::new(tx_output_fetcher));
259
+ //
260
+ // let fetch_result = public_key_hash_fetcher
261
+ // .fetch_public_key_hash(asset_lock_proof, execution_context.into())
262
+ // .await
263
+ // .map_err(|e| from_dpp_error_ref(&e))?;
264
+ //
265
+ // Ok(Buffer::from_bytes(&fetch_result).into())
266
+ // }
@@ -1,35 +1,42 @@
1
- use std::convert::TryInto;
1
+ use dpp::platform_value::Value;
2
+ use serde_json::Value as JsonValue;
2
3
  use std::default::Default;
3
4
 
4
5
  use wasm_bindgen::__rt::Ref;
5
6
  use wasm_bindgen::prelude::*;
6
7
 
8
+ use crate::bls_adapter::BlsAdapter;
9
+ use crate::errors::from_dpp_err;
10
+ use dpp::identity::KeyType;
11
+ use dpp::platform_value::BinaryData;
12
+ use dpp::version::PlatformVersion;
13
+
7
14
  use crate::identifier::IdentifierWrapper;
8
15
 
16
+ use crate::identity::state_transition::asset_lock_proof::create_asset_lock_proof_from_wasm_instance;
17
+ use dpp::identity::state_transition::AssetLockProved;
18
+
9
19
  use crate::{
10
20
  buffer::Buffer,
11
- create_asset_lock_proof_from_wasm_instance,
12
21
  errors::RustConversionError,
13
22
  identity::state_transition::asset_lock_proof::{
14
23
  ChainAssetLockProofWasm, InstantAssetLockProofWasm,
15
24
  },
16
25
  identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitnessWasm,
17
- with_js_error,
26
+ utils, with_js_error,
18
27
  };
19
28
 
20
- use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
21
- use crate::errors::from_dpp_err;
22
- use dpp::state_transition::StateTransitionConvert;
23
-
24
- use crate::utils::{generic_of_js_val, ToSerdeJSONExt, WithJsError};
25
- use dpp::identity::KeyType;
29
+ use crate::bls_adapter::JsBlsAdapter;
30
+ use crate::utils::{generic_of_js_val, WithJsError};
31
+ use dpp::platform_value::string_encoding;
26
32
  use dpp::platform_value::string_encoding::Encoding;
27
- use dpp::platform_value::{string_encoding, BinaryData};
33
+ use dpp::serialization::{PlatformSerializable, ValueConvertible};
34
+ use dpp::state_transition::identity_create_transition::accessors::IdentityCreateTransitionAccessorsV0;
35
+ use dpp::state_transition::StateTransition;
28
36
  use dpp::{
29
- identity::state_transition::{
30
- asset_lock_proof::AssetLockProof, identity_create_transition::IdentityCreateTransition,
31
- identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness,
32
- },
37
+ identity::state_transition::asset_lock_proof::AssetLockProof,
38
+ state_transition::identity::identity_create_transition::IdentityCreateTransition,
39
+ state_transition::identity::public_key_in_creation::IdentityPublicKeyInCreation,
33
40
  state_transition::StateTransitionLike,
34
41
  };
35
42
 
@@ -52,14 +59,13 @@ impl From<IdentityCreateTransitionWasm> for IdentityCreateTransition {
52
59
  #[wasm_bindgen(js_class = IdentityCreateTransition)]
53
60
  impl IdentityCreateTransitionWasm {
54
61
  #[wasm_bindgen(constructor)]
55
- pub fn new(raw_parameters: JsValue) -> Result<IdentityCreateTransitionWasm, JsValue> {
56
- let mut raw_state_transition = raw_parameters.with_serde_to_platform_value()?;
57
- IdentityCreateTransition::clean_value(&mut raw_state_transition).with_js_error()?;
58
- let identity_create_transition =
59
- IdentityCreateTransition::from_raw_object(raw_state_transition)
60
- .map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
61
-
62
- Ok(identity_create_transition.into())
62
+ pub fn new(platform_version: u32) -> Result<IdentityCreateTransitionWasm, JsValue> {
63
+ let platform_version =
64
+ &PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
65
+
66
+ IdentityCreateTransition::default_versioned(&platform_version)
67
+ .map(Into::into)
68
+ .map_err(from_dpp_err)
63
69
  }
64
70
 
65
71
  #[wasm_bindgen(js_name=setAssetLockProof)]
@@ -80,7 +86,7 @@ impl IdentityCreateTransitionWasm {
80
86
 
81
87
  #[wasm_bindgen(js_name=getAssetLockProof)]
82
88
  pub fn get_asset_lock_proof(&self) -> JsValue {
83
- let asset_lock_proof = self.0.get_asset_lock_proof().to_owned();
89
+ let asset_lock_proof = self.0.asset_lock_proof().to_owned();
84
90
 
85
91
  match asset_lock_proof {
86
92
  AssetLockProof::Chain(chain_asset_lock_proof) => {
@@ -104,7 +110,7 @@ impl IdentityCreateTransitionWasm {
104
110
  )?;
105
111
  Ok(public_key.clone().into())
106
112
  })
107
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
113
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
108
114
 
109
115
  self.0.set_public_keys(public_keys);
110
116
 
@@ -123,7 +129,7 @@ impl IdentityCreateTransitionWasm {
123
129
  )?;
124
130
  Ok(public_key.clone().into())
125
131
  })
126
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
132
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
127
133
 
128
134
  self.0.add_public_keys(&mut public_keys);
129
135
 
@@ -133,9 +139,9 @@ impl IdentityCreateTransitionWasm {
133
139
  #[wasm_bindgen(js_name=getPublicKeys)]
134
140
  pub fn get_public_keys(&self) -> Vec<JsValue> {
135
141
  self.0
136
- .get_public_keys()
142
+ .public_keys()
137
143
  .iter()
138
- .map(IdentityPublicKeyInCreationWithWitness::to_owned)
144
+ .map(IdentityPublicKeyInCreation::to_owned)
139
145
  .map(IdentityPublicKeyWithWitnessWasm::from)
140
146
  .map(JsValue::from)
141
147
  .collect()
@@ -148,7 +154,7 @@ impl IdentityCreateTransitionWasm {
148
154
 
149
155
  #[wasm_bindgen(js_name=getType)]
150
156
  pub fn get_type(&self) -> u8 {
151
- self.0.get_type() as u8
157
+ self.0.state_transition_type() as u8
152
158
  }
153
159
 
154
160
  #[wasm_bindgen(getter, js_name=identityId)]
@@ -158,12 +164,12 @@ impl IdentityCreateTransitionWasm {
158
164
 
159
165
  #[wasm_bindgen(js_name=getIdentityId)]
160
166
  pub fn get_identity_id(&self) -> IdentifierWrapper {
161
- (*self.0.get_identity_id()).into()
167
+ self.0.identity_id().into()
162
168
  }
163
169
 
164
170
  #[wasm_bindgen(js_name=getOwnerId)]
165
171
  pub fn get_owner_id(&self) -> IdentifierWrapper {
166
- (*self.0.get_owner_id()).into()
172
+ (IdentityCreateTransitionAccessorsV0::owner_id(&self.0)).into()
167
173
  }
168
174
 
169
175
  #[wasm_bindgen(js_name=toObject)]
@@ -174,22 +180,22 @@ impl IdentityCreateTransitionWasm {
174
180
  Default::default()
175
181
  };
176
182
 
177
- let _skip_signature = opts.skip_signature;
178
- let object = super::to_object::to_object_struct(&self.0, opts);
183
+ let object = super::to_object::to_object_struct(&self.0, &opts);
184
+
179
185
  let js_object = js_sys::Object::new();
180
186
 
187
+ let version = match self.0 {
188
+ IdentityCreateTransition::V0(_) => "0",
189
+ };
190
+
191
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
192
+
181
193
  js_sys::Reflect::set(
182
194
  &js_object,
183
195
  &"type".to_owned().into(),
184
196
  &object.transition_type.into(),
185
197
  )?;
186
198
 
187
- js_sys::Reflect::set(
188
- &js_object,
189
- &"protocolVersion".to_owned().into(),
190
- &object.protocol_version.into(),
191
- )?;
192
-
193
199
  if let Some(signature) = object.signature {
194
200
  let signature_value: JsValue = if signature.is_empty() {
195
201
  JsValue::undefined()
@@ -219,7 +225,7 @@ impl IdentityCreateTransitionWasm {
219
225
  .public_keys
220
226
  .into_iter()
221
227
  .map(IdentityPublicKeyWithWitnessWasm::from)
222
- .map(|key| key.to_object(options.clone()))
228
+ .map(|key| key.to_object(opts.skip_signature.unwrap_or(false)))
223
229
  .collect::<Result<js_sys::Array, _>>()?;
224
230
 
225
231
  js_sys::Reflect::set(&js_object, &"publicKeys".to_owned().into(), &keys_objects)?;
@@ -228,38 +234,31 @@ impl IdentityCreateTransitionWasm {
228
234
  }
229
235
 
230
236
  #[wasm_bindgen(js_name=toBuffer)]
231
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
232
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
233
- with_js_error!(serde_wasm_bindgen::from_value(options))?
234
- } else {
235
- Default::default()
236
- };
237
-
238
- let buffer = self
239
- .0
240
- .to_cbor_buffer(opts.skip_signature.unwrap_or(false))
241
- .map_err(from_dpp_err)?;
242
-
243
- Ok(Buffer::from_bytes(&buffer).into())
237
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
238
+ let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityCreate(
239
+ self.0.clone(),
240
+ ))
241
+ .with_js_error()?;
242
+ Ok(Buffer::from_bytes(&bytes))
244
243
  }
245
244
 
246
245
  #[wasm_bindgen(js_name=toJSON)]
247
246
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
248
- let object = super::to_object::to_object_struct(&self.0, Default::default());
247
+ let object = super::to_object::to_object_struct(&self.0, &Default::default());
249
248
  let js_object = js_sys::Object::new();
250
249
 
250
+ let version = match self.0 {
251
+ IdentityCreateTransition::V0(_) => "0",
252
+ };
253
+
254
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
255
+
251
256
  js_sys::Reflect::set(
252
257
  &js_object,
253
258
  &"type".to_owned().into(),
254
259
  &object.transition_type.into(),
255
260
  )?;
256
261
 
257
- js_sys::Reflect::set(
258
- &js_object,
259
- &"protocolVersion".to_owned().into(),
260
- &object.protocol_version.into(),
261
- )?;
262
-
263
262
  if let Some(signature) = object.signature {
264
263
  let signature_value: JsValue = if signature.is_empty() {
265
264
  JsValue::undefined()
@@ -298,8 +297,8 @@ impl IdentityCreateTransitionWasm {
298
297
  }
299
298
 
300
299
  #[wasm_bindgen(js_name=getModifiedDataIds)]
301
- pub fn get_modified_data_ids(&self) -> Vec<IdentifierWrapper> {
302
- let ids = self.0.get_modified_data_ids();
300
+ pub fn modified_data_ids(&self) -> Vec<IdentifierWrapper> {
301
+ let ids = self.0.modified_data_ids();
303
302
 
304
303
  ids.into_iter().map(IdentifierWrapper::from).collect()
305
304
  }
@@ -343,17 +342,25 @@ impl IdentityCreateTransitionWasm {
343
342
  BlsAdapter(JsValue::undefined().into())
344
343
  };
345
344
 
346
- self.0
345
+ // TODO: not the best approach because it involves cloning the transition
346
+ // Probably it worth to return `sign_by_private_key` per state transition
347
+ let mut wrapper = StateTransition::IdentityCreate(self.0.clone());
348
+ wrapper
347
349
  .sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
348
- .with_js_error()
350
+ .with_js_error()?;
351
+
352
+ self.0.set_signature(wrapper.signature().to_owned());
353
+
354
+ Ok(())
349
355
  }
350
356
 
351
357
  #[wasm_bindgen(js_name=getSignature)]
352
358
  pub fn get_signature(&self) -> Buffer {
353
- Buffer::from_bytes_owned(self.0.get_signature().to_vec())
359
+ Buffer::from_bytes_owned(self.0.signature().to_vec())
354
360
  }
355
361
  #[wasm_bindgen(js_name=setSignature)]
356
362
  pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
357
- self.0.signature = BinaryData::new(signature.unwrap_or(vec![]))
363
+ self.0
364
+ .set_signature(BinaryData::new(signature.unwrap_or(vec![])))
358
365
  }
359
366
  }
@@ -7,7 +7,6 @@ use dpp::identity::state_transition::validate_public_key_signatures::PublicKeysS
7
7
  use dpp::identity::validation::{
8
8
  PublicKeysValidator, RequiredPurposeAndSecurityLevelValidator, PUBLIC_KEY_SCHEMA_FOR_TRANSITION,
9
9
  };
10
- use dpp::state_transition::state_transition_execution_context::StateTransitionExecutionContext;
11
10
 
12
11
  use dpp::version::{ProtocolVersionValidator, COMPATIBILITY_MAP, LATEST_VERSION};
13
12
  use dpp::ProtocolError;
@@ -1,8 +1,8 @@
1
1
  pub use identity_create_transition::*;
2
2
 
3
- pub mod apply_identity_create_transition;
3
+ // pub mod apply_identity_create_transition;
4
4
  pub mod identity_create_transition;
5
- pub mod identity_create_transition_basic_validator;
6
- pub mod identity_create_transition_state_validator;
5
+ // pub mod identity_create_transition_basic_validator;
6
+ // pub mod identity_create_transition_state_validator;
7
7
 
8
8
  mod to_object;
@@ -1,8 +1,9 @@
1
1
  use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
2
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
2
+ use dpp::identity::state_transition::AssetLockProved;
3
+ use dpp::state_transition::identity_create_transition::accessors::IdentityCreateTransitionAccessorsV0;
4
+ use dpp::state_transition::public_key_in_creation::IdentityPublicKeyInCreation;
3
5
  use dpp::{
4
- identifier::Identifier,
5
- identity::state_transition::identity_create_transition::IdentityCreateTransition,
6
+ identifier::Identifier, state_transition::identity_create_transition::IdentityCreateTransition,
6
7
  state_transition::StateTransitionLike,
7
8
  };
8
9
  use serde::Deserialize;
@@ -17,28 +18,26 @@ pub struct ToObjectOptions {
17
18
  #[derive(Default)]
18
19
  pub struct ToObject {
19
20
  pub transition_type: u8,
20
- pub protocol_version: u32,
21
21
  pub identity_id: Identifier,
22
22
  pub asset_lock_proof: AssetLockProof,
23
- pub public_keys: Vec<IdentityPublicKeyInCreationWithWitness>,
23
+ pub public_keys: Vec<IdentityPublicKeyInCreation>,
24
24
  pub signature: Option<Vec<u8>>,
25
25
  }
26
26
 
27
27
  pub fn to_object_struct(
28
28
  transition: &IdentityCreateTransition,
29
- options: ToObjectOptions,
29
+ options: &ToObjectOptions,
30
30
  ) -> ToObject {
31
31
  let mut to_object = ToObject {
32
- transition_type: transition.get_type() as u8,
33
- protocol_version: transition.get_protocol_version(),
34
- public_keys: transition.get_public_keys().to_owned(),
35
- asset_lock_proof: transition.get_asset_lock_proof().to_owned(),
36
- identity_id: transition.get_identity_id().to_owned(),
32
+ transition_type: transition.state_transition_type() as u8,
33
+ public_keys: transition.public_keys().to_owned(),
34
+ asset_lock_proof: transition.asset_lock_proof().to_owned(),
35
+ identity_id: transition.identity_id().to_owned(),
37
36
  signature: None,
38
37
  };
39
38
 
40
39
  if !options.skip_signature.unwrap_or(false) {
41
- to_object.signature = Some(transition.get_signature().to_vec());
40
+ to_object.signature = Some(transition.signature().to_vec());
42
41
  }
43
42
 
44
43
  to_object