@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
@@ -1,17 +1,21 @@
1
1
  //todo: move this file to transition
2
- use dpp::dashcore::anyhow;
3
- use dpp::document::document_transition::document_base_transition::JsonValue;
4
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
5
- use dpp::platform_value::BinaryData;
6
- use dpp::Convertible;
2
+ use dpp::platform_value::{BinaryData, ReplacementType, Value};
3
+ use dpp::serialization::ValueConvertible;
4
+ use dpp::state_transition::public_key_in_creation::accessors::{
5
+ IdentityPublicKeyInCreationV0Getters, IdentityPublicKeyInCreationV0Setters,
6
+ };
7
+ use dpp::state_transition::public_key_in_creation::v0::BINARY_DATA_FIELDS;
8
+ use dpp::state_transition::public_key_in_creation::IdentityPublicKeyInCreation;
9
+ use js_sys::Reflect::delete_property;
7
10
  pub use serde::{Deserialize, Serialize};
8
- use std::convert::{TryFrom, TryInto};
11
+ use serde_json::Value as JsonValue;
12
+ use std::convert::TryInto;
9
13
  use wasm_bindgen::prelude::*;
10
14
 
11
15
  use crate::errors::from_dpp_err;
12
16
  use crate::utils::WithJsError;
13
17
  use crate::{buffer::Buffer, utils, with_js_error};
14
-
18
+ use dpp::version::PlatformVersion;
15
19
  #[derive(Deserialize, Default)]
16
20
  #[serde(rename_all = "camelCase")]
17
21
  struct ToObjectOptions {
@@ -20,98 +24,104 @@ struct ToObjectOptions {
20
24
 
21
25
  #[wasm_bindgen(js_name=IdentityPublicKeyWithWitness)]
22
26
  #[derive(Serialize, Deserialize, Debug, Clone)]
23
- pub struct IdentityPublicKeyWithWitnessWasm(IdentityPublicKeyInCreationWithWitness);
27
+ pub struct IdentityPublicKeyWithWitnessWasm(IdentityPublicKeyInCreation);
24
28
 
25
29
  #[wasm_bindgen(js_class = IdentityPublicKeyWithWitness)]
26
30
  impl IdentityPublicKeyWithWitnessWasm {
27
31
  #[wasm_bindgen(constructor)]
28
- pub fn new(raw_public_key: JsValue) -> Result<IdentityPublicKeyWithWitnessWasm, JsValue> {
29
- let data_string = utils::stringify(&raw_public_key)?;
30
- let value: JsonValue = serde_json::from_str(&data_string).map_err(|e| e.to_string())?;
31
-
32
- let pk = IdentityPublicKeyInCreationWithWitness::from_json_object(value).with_js_error()?;
32
+ pub fn new(platform_version: u32) -> Result<IdentityPublicKeyWithWitnessWasm, JsValue> {
33
+ let platform_version =
34
+ &PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
33
35
 
34
- Ok(IdentityPublicKeyWithWitnessWasm(pk))
36
+ IdentityPublicKeyInCreation::default_versioned(&platform_version)
37
+ .map(Into::into)
38
+ .map_err(from_dpp_err)
35
39
  }
36
40
 
37
41
  #[wasm_bindgen(js_name=getId)]
38
42
  pub fn get_id(&self) -> u32 {
39
- self.0.id
43
+ self.0.id()
40
44
  }
41
45
 
42
46
  #[wasm_bindgen(js_name=setId)]
43
47
  pub fn set_id(&mut self, id: u32) {
44
- self.0.id = id;
48
+ self.0.set_id(id);
45
49
  }
46
50
 
47
51
  #[wasm_bindgen(js_name=getType)]
48
52
  pub fn get_type(&self) -> u8 {
49
- self.0.key_type as u8
53
+ self.0.key_type() as u8
50
54
  }
51
55
 
52
56
  #[wasm_bindgen(js_name=setType)]
53
57
  pub fn set_type(&mut self, key_type: u8) -> Result<(), JsValue> {
54
- self.0.key_type = key_type
55
- .try_into()
56
- .map_err(|e: anyhow::Error| e.to_string())?;
58
+ self.0.set_type(
59
+ key_type
60
+ .try_into()
61
+ .map_err(|e: anyhow::Error| e.to_string())?,
62
+ );
57
63
  Ok(())
58
64
  }
59
65
 
60
66
  #[wasm_bindgen(js_name=setData)]
61
67
  pub fn set_data(&mut self, data: Vec<u8>) -> Result<(), JsValue> {
62
- self.0.data = BinaryData::new(data);
68
+ self.0.set_data(BinaryData::new(data));
63
69
  Ok(())
64
70
  }
65
71
 
66
72
  #[wasm_bindgen(js_name=getData)]
67
73
  pub fn get_data(&self) -> Buffer {
68
- Buffer::from_bytes_owned(self.0.data.to_vec())
74
+ Buffer::from_bytes_owned(self.0.data().to_vec())
69
75
  }
70
76
 
71
77
  #[wasm_bindgen(js_name=setPurpose)]
72
78
  pub fn set_purpose(&mut self, purpose: u8) -> Result<(), JsValue> {
73
- self.0.purpose = purpose
74
- .try_into()
75
- .map_err(|e: anyhow::Error| e.to_string())?;
79
+ self.0.set_purpose(
80
+ purpose
81
+ .try_into()
82
+ .map_err(|e: anyhow::Error| e.to_string())?,
83
+ );
76
84
  Ok(())
77
85
  }
78
86
 
79
87
  #[wasm_bindgen(js_name=getPurpose)]
80
88
  pub fn get_purpose(&self) -> u8 {
81
- self.0.purpose as u8
89
+ self.0.purpose() as u8
82
90
  }
83
91
 
84
92
  #[wasm_bindgen(js_name=setSecurityLevel)]
85
93
  pub fn set_security_level(&mut self, security_level: u8) -> Result<(), JsValue> {
86
- self.0.security_level = security_level
87
- .try_into()
88
- .map_err(|e: anyhow::Error| e.to_string())?;
94
+ self.0.set_security_level(
95
+ security_level
96
+ .try_into()
97
+ .map_err(|e: anyhow::Error| e.to_string())?,
98
+ );
89
99
  Ok(())
90
100
  }
91
101
 
92
102
  #[wasm_bindgen(js_name=getSecurityLevel)]
93
103
  pub fn get_security_level(&self) -> u8 {
94
- self.0.security_level as u8
104
+ self.0.security_level() as u8
95
105
  }
96
106
 
97
107
  #[wasm_bindgen(js_name=setReadOnly)]
98
108
  pub fn set_read_only(&mut self, read_only: bool) {
99
- self.0.read_only = read_only;
109
+ self.0.set_read_only(read_only);
100
110
  }
101
111
 
102
112
  #[wasm_bindgen(js_name=isReadOnly)]
103
113
  pub fn is_read_only(&self) -> bool {
104
- self.0.read_only
114
+ self.0.read_only()
105
115
  }
106
116
 
107
117
  #[wasm_bindgen(js_name=setSignature)]
108
118
  pub fn set_signature(&mut self, signature: Vec<u8>) {
109
- self.0.signature = BinaryData::new(signature)
119
+ self.0.set_signature(BinaryData::new(signature))
110
120
  }
111
121
 
112
122
  #[wasm_bindgen(js_name=getSignature)]
113
123
  pub fn get_signature(&self) -> Vec<u8> {
114
- self.0.signature.to_vec()
124
+ self.0.signature().to_vec()
115
125
  }
116
126
 
117
127
  #[wasm_bindgen(js_name=hash)]
@@ -119,35 +129,33 @@ impl IdentityPublicKeyWithWitnessWasm {
119
129
  self.0.hash_as_vec().with_js_error()
120
130
  }
121
131
 
122
- #[wasm_bindgen(js_name=isMaster)]
123
- pub fn is_master(&self) -> bool {
124
- self.0.is_master()
125
- }
126
-
127
132
  #[wasm_bindgen(js_name=toJSON)]
128
133
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
129
- let val = self.0.to_json().map_err(from_dpp_err)?;
130
- let json = val.to_string();
134
+ let mut value = self.0.to_object().map_err(from_dpp_err)?;
135
+
136
+ value
137
+ .replace_at_paths(
138
+ dpp::identity::identity_public_key::BINARY_DATA_FIELDS,
139
+ ReplacementType::TextBase64,
140
+ )
141
+ .map_err(|e| e.to_string())?;
142
+
143
+ let json = value
144
+ .try_into_validating_json()
145
+ .map_err(|e| e.to_string())?
146
+ .to_string();
147
+
131
148
  js_sys::JSON::parse(&json)
132
149
  }
133
150
 
134
151
  #[wasm_bindgen(js_name=toObject)]
135
- pub fn to_object(&self, options: JsValue) -> Result<JsValue, JsValue> {
136
- let opts: ToObjectOptions = if options.is_object() {
137
- with_js_error!(serde_wasm_bindgen::from_value(options))?
138
- } else {
139
- Default::default()
140
- };
141
-
142
- let val = self
143
- .0
144
- .to_raw_json_object(opts.skip_signature.unwrap_or(false))
145
- .map_err(|e| from_dpp_err(e.into()))?;
152
+ pub fn to_object(&self, skip_signature: bool) -> Result<JsValue, JsValue> {
153
+ let value = self.0.to_object().map_err(from_dpp_err)?;
146
154
 
147
- let data_buffer = Buffer::from_bytes(self.0.data.as_slice());
155
+ let data_buffer = Buffer::from_bytes(self.0.data().as_slice());
148
156
 
149
- let json = val.to_string();
150
- let js_object = js_sys::JSON::parse(&json)?;
157
+ let serializer = serde_wasm_bindgen::Serializer::json_compatible();
158
+ let js_object = with_js_error!(value.serialize(&serializer))?;
151
159
 
152
160
  js_sys::Reflect::set(
153
161
  &js_object,
@@ -161,12 +169,17 @@ impl IdentityPublicKeyWithWitnessWasm {
161
169
  &JsValue::from(data_buffer),
162
170
  )?;
163
171
 
164
- if !opts.skip_signature.unwrap_or(false) && !self.0.signature.is_empty() {
172
+ if !skip_signature {
173
+ let signature_buffer = Buffer::from_bytes(self.0.signature().as_slice());
165
174
  js_sys::Reflect::set(
166
175
  &js_object,
167
176
  &JsValue::from_str("signature"),
168
- &JsValue::from(Buffer::from_bytes_owned(self.0.signature.to_vec())),
177
+ &JsValue::from(signature_buffer),
169
178
  )?;
179
+ } else {
180
+ let js_object = js_sys::Object::from(js_object);
181
+ delete_property(&js_object, &JsValue::from_str("signature"))?;
182
+ return Ok(js_object.into());
170
183
  }
171
184
 
172
185
  Ok(js_object)
@@ -174,38 +187,39 @@ impl IdentityPublicKeyWithWitnessWasm {
174
187
  }
175
188
 
176
189
  impl IdentityPublicKeyWithWitnessWasm {
177
- pub fn into_inner(self) -> IdentityPublicKeyInCreationWithWitness {
190
+ pub fn into_inner(self) -> IdentityPublicKeyInCreation {
178
191
  self.0
179
192
  }
180
193
 
181
- pub fn inner(&self) -> &IdentityPublicKeyInCreationWithWitness {
194
+ pub fn inner(&self) -> &IdentityPublicKeyInCreation {
182
195
  &self.0
183
196
  }
184
197
 
185
- pub fn inner_mut(&mut self) -> &mut IdentityPublicKeyInCreationWithWitness {
198
+ pub fn inner_mut(&mut self) -> &mut IdentityPublicKeyInCreation {
186
199
  &mut self.0
187
200
  }
188
201
  }
189
202
 
190
- impl From<IdentityPublicKeyInCreationWithWitness> for IdentityPublicKeyWithWitnessWasm {
191
- fn from(v: IdentityPublicKeyInCreationWithWitness) -> Self {
203
+ impl From<IdentityPublicKeyInCreation> for IdentityPublicKeyWithWitnessWasm {
204
+ fn from(v: IdentityPublicKeyInCreation) -> Self {
192
205
  IdentityPublicKeyWithWitnessWasm(v)
193
206
  }
194
207
  }
195
208
 
196
- impl TryFrom<JsValue> for IdentityPublicKeyWithWitnessWasm {
197
- type Error = JsValue;
198
-
199
- fn try_from(value: JsValue) -> Result<Self, Self::Error> {
200
- let str = String::from(js_sys::JSON::stringify(&value)?);
201
- let val = serde_json::from_str(&str).map_err(|e| from_dpp_err(e.into()))?;
202
- Ok(Self(
203
- IdentityPublicKeyInCreationWithWitness::from_raw_json_object(val).with_js_error()?,
204
- ))
205
- }
206
- }
207
-
208
- impl From<IdentityPublicKeyWithWitnessWasm> for IdentityPublicKeyInCreationWithWitness {
209
+ // TODO(versioning): restore
210
+ // impl TryFrom<JsValue> for IdentityPublicKeyWithWitnessWasm {
211
+ // type Error = JsValue;
212
+ //
213
+ // fn try_from(value: JsValue) -> Result<Self, Self::Error> {
214
+ // let str = String::from(js_sys::JSON::stringify(&value)?);
215
+ // let val = serde_json::from_str(&str).map_err(|e| from_dpp_err(e.into()))?;
216
+ // Ok(Self(
217
+ // IdentityPublicKeyInCreation::from_raw_json_object(val).with_js_error()?,
218
+ // ))
219
+ // }
220
+ // }
221
+
222
+ impl From<IdentityPublicKeyWithWitnessWasm> for IdentityPublicKeyInCreation {
209
223
  fn from(pk: IdentityPublicKeyWithWitnessWasm) -> Self {
210
224
  pk.0
211
225
  }
@@ -1,34 +1,37 @@
1
- use crate::utils::{ToSerdeJSONExt, WithJsError};
1
+ use crate::utils::WithJsError;
2
2
 
3
- use std::convert::TryInto;
4
3
  use std::default::Default;
5
4
 
5
+ use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
6
+ use crate::errors::from_dpp_err;
7
+ use dpp::identity::state_transition::AssetLockProved;
8
+ use dpp::identity::KeyType;
9
+ use dpp::platform_value::BinaryData;
10
+ use dpp::serialization::ValueConvertible;
11
+ use dpp::state_transition::identity_topup_transition::fields::IDENTIFIER_FIELDS;
12
+ use dpp::version::PlatformVersion;
13
+ use serde_json::Value as JsonValue;
6
14
  use wasm_bindgen::prelude::*;
7
15
 
8
16
  use crate::identifier::IdentifierWrapper;
9
17
 
10
18
  use crate::{
11
19
  buffer::Buffer,
12
- create_asset_lock_proof_from_wasm_instance,
13
- errors::RustConversionError,
14
20
  identity::state_transition::asset_lock_proof::{
15
21
  ChainAssetLockProofWasm, InstantAssetLockProofWasm,
16
22
  },
17
- with_js_error,
23
+ utils, with_js_error,
18
24
  };
19
25
 
20
- use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
21
-
22
- use crate::errors::from_dpp_err;
23
- use dpp::identity::KeyType;
26
+ use crate::identity::state_transition::create_asset_lock_proof_from_wasm_instance;
24
27
  use dpp::platform_value::string_encoding::Encoding;
25
- use dpp::platform_value::{string_encoding, BinaryData};
26
- use dpp::state_transition::StateTransitionConvert;
28
+ use dpp::platform_value::{string_encoding, ReplacementType, Value};
29
+ use dpp::serialization::PlatformSerializable;
30
+ use dpp::state_transition::identity_topup_transition::accessors::IdentityTopUpTransitionAccessorsV0;
31
+ use dpp::state_transition::identity_topup_transition::IdentityTopUpTransition;
32
+ use dpp::state_transition::StateTransition;
27
33
  use dpp::{
28
- identifier::Identifier,
29
- identity::state_transition::{
30
- asset_lock_proof::AssetLockProof, identity_topup_transition::IdentityTopUpTransition,
31
- },
34
+ identifier::Identifier, identity::state_transition::asset_lock_proof::AssetLockProof,
32
35
  state_transition::StateTransitionLike,
33
36
  };
34
37
 
@@ -51,23 +54,20 @@ impl From<IdentityTopUpTransitionWasm> for IdentityTopUpTransition {
51
54
  #[wasm_bindgen(js_class = IdentityTopUpTransition)]
52
55
  impl IdentityTopUpTransitionWasm {
53
56
  #[wasm_bindgen(constructor)]
54
- pub fn new(raw_parameters: JsValue) -> Result<IdentityTopUpTransitionWasm, JsValue> {
55
- let raw_state_transition = raw_parameters.with_serde_to_platform_value()?;
56
-
57
- let identity_topup_transition =
58
- IdentityTopUpTransition::from_raw_object(raw_state_transition)
59
- .map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
57
+ pub fn new(platform_version: u32) -> Result<IdentityTopUpTransitionWasm, JsValue> {
58
+ let platform_version =
59
+ &PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
60
60
 
61
- Ok(identity_topup_transition.into())
61
+ IdentityTopUpTransition::default_versioned(&platform_version)
62
+ .map(Into::into)
63
+ .map_err(from_dpp_err)
62
64
  }
63
65
 
64
66
  #[wasm_bindgen(js_name=setAssetLockProof)]
65
67
  pub fn set_asset_lock_proof(&mut self, asset_lock_proof: JsValue) -> Result<(), JsValue> {
66
68
  let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(&asset_lock_proof)?;
67
69
 
68
- self.0
69
- .set_asset_lock_proof(asset_lock_proof)
70
- .map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
70
+ self.0.set_asset_lock_proof(asset_lock_proof);
71
71
 
72
72
  Ok(())
73
73
  }
@@ -79,7 +79,7 @@ impl IdentityTopUpTransitionWasm {
79
79
 
80
80
  #[wasm_bindgen(js_name=getAssetLockProof)]
81
81
  pub fn get_asset_lock_proof(&self) -> JsValue {
82
- let asset_lock_proof = self.0.get_asset_lock_proof().to_owned();
82
+ let asset_lock_proof = self.0.asset_lock_proof().to_owned();
83
83
 
84
84
  match asset_lock_proof {
85
85
  AssetLockProof::Chain(chain_asset_lock_proof) => {
@@ -93,7 +93,7 @@ impl IdentityTopUpTransitionWasm {
93
93
 
94
94
  #[wasm_bindgen(js_name=getType)]
95
95
  pub fn get_type(&self) -> u8 {
96
- self.0.get_type() as u8
96
+ self.0.state_transition_type() as u8
97
97
  }
98
98
 
99
99
  #[wasm_bindgen(getter, js_name=identityId)]
@@ -103,23 +103,28 @@ impl IdentityTopUpTransitionWasm {
103
103
 
104
104
  #[wasm_bindgen(js_name=getIdentityId)]
105
105
  pub fn get_identity_id(&self) -> IdentifierWrapper {
106
- (*self.0.get_identity_id()).into()
106
+ (*self.0.identity_id()).into()
107
+ }
108
+
109
+ #[wasm_bindgen(js_name=setIdentityId)]
110
+ pub fn set_identity_id(&mut self, identity_id: &IdentifierWrapper) {
111
+ self.0.set_identity_id(identity_id.to_owned().into());
107
112
  }
108
113
 
109
114
  #[wasm_bindgen(js_name=getOwnerId)]
110
115
  pub fn get_owner_id(&self) -> IdentifierWrapper {
111
- (*self.0.get_owner_id()).into()
116
+ self.0.owner_id().to_owned().into()
112
117
  }
113
118
 
114
119
  #[wasm_bindgen(js_name=toObject)]
115
120
  pub fn to_object(&self, options: JsValue) -> Result<JsValue, JsValue> {
116
121
  let opts: super::to_object::ToObjectOptions = if options.is_object() {
117
- with_js_error!(serde_wasm_bindgen::from_value(options))?
122
+ with_js_error!(serde_wasm_bindgen::from_value(options.clone()))?
118
123
  } else {
119
124
  Default::default()
120
125
  };
121
126
 
122
- let object = super::to_object::to_object_struct(&self.0, opts);
127
+ let object = super::to_object::to_object_struct(&self.0, &opts);
123
128
  let js_object = js_sys::Object::new();
124
129
 
125
130
  js_sys::Reflect::set(
@@ -128,11 +133,11 @@ impl IdentityTopUpTransitionWasm {
128
133
  &object.transition_type.into(),
129
134
  )?;
130
135
 
131
- js_sys::Reflect::set(
132
- &js_object,
133
- &"protocolVersion".to_owned().into(),
134
- &object.protocol_version.into(),
135
- )?;
136
+ let version = match self.0 {
137
+ IdentityTopUpTransition::V0(_) => "0",
138
+ };
139
+
140
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
136
141
 
137
142
  if let Some(signature) = object.signature {
138
143
  let signature_value: JsValue = if signature.is_empty() {
@@ -169,24 +174,17 @@ impl IdentityTopUpTransitionWasm {
169
174
  }
170
175
 
171
176
  #[wasm_bindgen(js_name=toBuffer)]
172
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
173
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
174
- with_js_error!(serde_wasm_bindgen::from_value(options))?
175
- } else {
176
- Default::default()
177
- };
178
-
179
- let buffer = self
180
- .0
181
- .to_cbor_buffer(opts.skip_signature.unwrap_or(false))
182
- .map_err(from_dpp_err)?;
183
-
184
- Ok(Buffer::from_bytes(&buffer).into())
177
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
178
+ let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityTopUp(
179
+ self.0.clone(),
180
+ ))
181
+ .with_js_error()?;
182
+ Ok(Buffer::from_bytes(&bytes))
185
183
  }
186
184
 
187
185
  #[wasm_bindgen(js_name=toJSON)]
188
186
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
189
- let object = super::to_object::to_object_struct(&self.0, Default::default());
187
+ let object = super::to_object::to_object_struct(&self.0, &Default::default());
190
188
  let js_object = js_sys::Object::new();
191
189
 
192
190
  js_sys::Reflect::set(
@@ -195,12 +193,6 @@ impl IdentityTopUpTransitionWasm {
195
193
  &object.transition_type.into(),
196
194
  )?;
197
195
 
198
- js_sys::Reflect::set(
199
- &js_object,
200
- &"protocolVersion".to_owned().into(),
201
- &object.protocol_version.into(),
202
- )?;
203
-
204
196
  if let Some(signature) = object.signature {
205
197
  let signature_value: JsValue = if signature.is_empty() {
206
198
  JsValue::undefined()
@@ -211,6 +203,12 @@ impl IdentityTopUpTransitionWasm {
211
203
  js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
212
204
  }
213
205
 
206
+ let version = match self.0 {
207
+ IdentityTopUpTransition::V0(_) => "0",
208
+ };
209
+
210
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
211
+
214
212
  let asset_lock_proof_json = match object.asset_lock_proof {
215
213
  AssetLockProof::Instant(instant_asset_lock_proof) => {
216
214
  InstantAssetLockProofWasm::from(instant_asset_lock_proof).to_json()?
@@ -238,8 +236,8 @@ impl IdentityTopUpTransitionWasm {
238
236
  }
239
237
 
240
238
  #[wasm_bindgen(js_name=getModifiedDataIds)]
241
- pub fn get_modified_data_ids(&self) -> Vec<JsValue> {
242
- let ids = self.0.get_modified_data_ids();
239
+ pub fn modified_data_ids(&self) -> Vec<JsValue> {
240
+ let ids = self.0.modified_data_ids();
243
241
 
244
242
  ids.into_iter()
245
243
  .map(|id| <IdentifierWrapper as std::convert::From<Identifier>>::from(id).into())
@@ -285,18 +283,26 @@ impl IdentityTopUpTransitionWasm {
285
283
  BlsAdapter(JsValue::undefined().into())
286
284
  };
287
285
 
288
- self.0
286
+ // TODO: not the best approach because it involves cloning the transition
287
+ // Probably it worth to return `sign_by_private_key` per state transition
288
+ let mut wrapper = StateTransition::IdentityTopUp(self.0.clone());
289
+ wrapper
289
290
  .sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
290
- .with_js_error()
291
+ .with_js_error()?;
292
+
293
+ self.0.set_signature(wrapper.signature().to_owned());
294
+
295
+ Ok(())
291
296
  }
292
297
 
293
298
  #[wasm_bindgen(js_name=getSignature)]
294
299
  pub fn get_signature(&self) -> Buffer {
295
- Buffer::from_bytes(self.0.get_signature().as_slice())
300
+ Buffer::from_bytes(self.0.signature().as_slice())
296
301
  }
297
302
 
298
303
  #[wasm_bindgen(js_name=setSignature)]
299
304
  pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
300
- self.0.signature = BinaryData::new(signature.unwrap_or(vec![]))
305
+ self.0
306
+ .set_signature(BinaryData::new(signature.unwrap_or(vec![])))
301
307
  }
302
308
  }
@@ -4,8 +4,6 @@ use dpp::identity::state_transition::asset_lock_proof::{
4
4
  };
5
5
  use dpp::identity::state_transition::identity_topup_transition::validation::basic::IdentityTopUpTransitionBasicValidator;
6
6
 
7
- use dpp::state_transition::state_transition_execution_context::StateTransitionExecutionContext;
8
-
9
7
  use dpp::version::{ProtocolVersionValidator, COMPATIBILITY_MAP, LATEST_VERSION};
10
8
  use dpp::ProtocolError;
11
9
 
@@ -1,8 +1,8 @@
1
1
  pub use identity_topup_transition::*;
2
2
 
3
- pub mod apply_identity_topup_transition;
3
+ // pub mod apply_identity_topup_transition;
4
4
  pub mod identity_topup_transition;
5
- pub mod identity_topup_transition_basic_validator;
6
- pub mod identity_topup_transition_state_validator;
5
+ // pub mod identity_topup_transition_basic_validator;
6
+ // pub mod identity_topup_transition_state_validator;
7
7
 
8
8
  mod to_object;
@@ -1,9 +1,8 @@
1
1
  use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
2
- use dpp::{
3
- identifier::Identifier,
4
- identity::state_transition::identity_topup_transition::IdentityTopUpTransition,
5
- state_transition::StateTransitionLike,
6
- };
2
+ use dpp::identity::state_transition::AssetLockProved;
3
+ use dpp::state_transition::identity_topup_transition::accessors::IdentityTopUpTransitionAccessorsV0;
4
+ use dpp::state_transition::identity_topup_transition::IdentityTopUpTransition;
5
+ use dpp::{identifier::Identifier, state_transition::StateTransitionLike};
7
6
  use serde::Deserialize;
8
7
  use std::default::Default;
9
8
 
@@ -16,7 +15,6 @@ pub struct ToObjectOptions {
16
15
  #[derive(Default)]
17
16
  pub struct ToObject {
18
17
  pub transition_type: u8,
19
- pub protocol_version: u32,
20
18
  pub identity_id: Identifier,
21
19
  pub asset_lock_proof: AssetLockProof,
22
20
  pub signature: Option<Vec<u8>>,
@@ -24,18 +22,17 @@ pub struct ToObject {
24
22
 
25
23
  pub fn to_object_struct(
26
24
  transition: &IdentityTopUpTransition,
27
- options: ToObjectOptions,
25
+ options: &ToObjectOptions,
28
26
  ) -> ToObject {
29
27
  let mut to_object = ToObject {
30
- transition_type: transition.get_type() as u8,
31
- protocol_version: transition.get_protocol_version(),
32
- identity_id: *transition.get_identity_id(),
33
- asset_lock_proof: transition.get_asset_lock_proof().to_owned(),
28
+ transition_type: transition.state_transition_type() as u8,
29
+ identity_id: *transition.identity_id(),
30
+ asset_lock_proof: transition.asset_lock_proof().to_owned(),
34
31
  signature: None,
35
32
  };
36
33
 
37
34
  if !options.skip_signature.unwrap_or(false) {
38
- to_object.signature = Some(transition.get_signature().to_vec());
35
+ to_object.signature = Some(transition.signature().to_vec());
39
36
  }
40
37
 
41
38
  to_object
@@ -2,7 +2,7 @@ use crate::errors::from_dpp_err;
2
2
  use crate::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitnessWasm;
3
3
  use crate::utils::WithJsError;
4
4
  use crate::validation::ValidationResultWasm;
5
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
5
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
6
6
  use dpp::identity::state_transition::identity_update_transition::validate_public_keys::IdentityUpdatePublicKeysValidator;
7
7
  use dpp::identity::validation::TPublicKeysValidator;
8
8
  use dpp::platform_value::Value;
@@ -31,7 +31,7 @@ impl IdentityUpdatePublicKeysValidatorWasm {
31
31
  let public_keys = raw_public_keys
32
32
  .into_iter()
33
33
  .map(|raw_key| {
34
- let parsed_key: IdentityPublicKeyInCreationWithWitness =
34
+ let parsed_key: IdentityPublicKeyInCreation =
35
35
  IdentityPublicKeyWithWitnessWasm::new(raw_key)?.into();
36
36
 
37
37
  parsed_key.to_raw_object(false).with_js_error()