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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/Cargo.toml +33 -7
  2. package/README.md +11 -6
  3. package/dist/errors/patchConsensusErrors.js +94 -115
  4. package/dist/wasm/wasm_dpp.d.ts +2213 -4113
  5. package/dist/wasm/wasm_dpp.js +17748 -2639
  6. package/dist/wasm/wasm_dpp_bg.js +1 -1
  7. package/lib/dpp.ts +1 -1
  8. package/lib/errors/patchConsensusErrors.ts +94 -93
  9. package/lib/test/bootstrap.js +5 -0
  10. package/lib/test/fixtures/getDataContractFixture.js +11 -5
  11. package/lib/test/fixtures/getDocumentsFixture.js +9 -5
  12. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
  13. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
  14. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  15. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  16. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  17. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  18. package/lib/test/fixtures/js/generateRandomIdentifier.js +1 -0
  19. package/lib/test/fixtures/js/getChainAssetLockProofFixture.js +1 -0
  20. package/lib/test/fixtures/js/getDataContractFixture.js +1 -0
  21. package/lib/test/fixtures/js/getDocumentTransitionsFixture.js +1 -0
  22. package/lib/test/fixtures/js/getDocumentsFixture.js +1 -0
  23. package/lib/test/fixtures/js/getInstantAssetLockProofFixture.js +1 -0
  24. package/lib/test/mocks/createStateRepositoryMock.js +1 -0
  25. package/lib/wasm/wasm_dpp.d.ts +2213 -4113
  26. package/package.json +6 -6
  27. package/scripts/build-wasm.sh +30 -29
  28. package/src/bls_adapter.rs +1 -1
  29. package/src/dash_platform_protocol.rs +173 -196
  30. package/src/data_contract/data_contract.rs +309 -199
  31. package/src/data_contract/data_contract_facade.rs +28 -47
  32. package/src/data_contract/errors/mod.rs +1 -0
  33. package/src/data_contract/mod.rs +2 -2
  34. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +92 -79
  35. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
  36. package/src/data_contract_factory/data_contract_factory.rs +43 -83
  37. package/src/document/document_facade.rs +81 -76
  38. package/src/document/errors/document_already_exists_error.rs +6 -6
  39. package/src/document/errors/document_no_revision_error.rs +1 -0
  40. package/src/document/errors/document_not_provided_error.rs +6 -6
  41. package/src/document/errors/invalid_document_action_error.rs +11 -7
  42. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  43. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  44. package/src/document/errors/mod.rs +5 -0
  45. package/src/document/errors/revision_absent_error.rs +6 -6
  46. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  47. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  48. package/src/document/extended_document.rs +76 -76
  49. package/src/document/factory.rs +140 -119
  50. package/src/document/generate_document_id.rs +2 -2
  51. package/src/document/mod.rs +164 -150
  52. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
  53. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  54. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  55. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
  56. package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
  57. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
  58. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
  59. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
  60. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
  61. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
  62. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
  63. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
  64. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
  65. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
  66. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
  67. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
  68. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
  69. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
  70. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
  71. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
  72. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
  73. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
  74. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
  75. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
  76. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
  77. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
  78. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
  79. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
  80. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
  81. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
  82. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
  83. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
  84. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
  85. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
  86. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
  87. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
  88. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
  89. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
  90. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
  91. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
  92. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
  93. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
  94. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -9
  95. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
  96. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
  97. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
  98. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
  99. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
  100. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
  101. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
  102. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
  103. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
  104. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
  105. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
  106. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
  107. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
  108. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
  109. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
  110. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
  111. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
  112. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
  113. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
  114. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
  115. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
  116. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
  117. package/src/errors/consensus/basic/json_schema_error.rs +1 -9
  118. package/src/errors/consensus/basic/mod.rs +2 -0
  119. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
  120. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  121. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -9
  122. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
  123. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
  124. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
  125. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  126. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
  127. package/src/errors/consensus/consensus_error.rs +44 -21
  128. package/src/errors/consensus/deserialize.rs +2 -1
  129. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
  130. package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
  131. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
  132. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
  133. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
  134. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
  135. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
  136. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
  137. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
  138. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
  139. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
  140. package/src/errors/consensus/state/data_contract/mod.rs +7 -1
  141. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
  142. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
  143. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
  144. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
  145. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
  146. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
  147. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
  148. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
  149. package/src/errors/consensus/state/document/mod.rs +2 -0
  150. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
  151. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
  152. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
  153. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
  154. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
  155. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
  156. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
  157. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
  158. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
  159. package/src/errors/consensus/value_error.rs +1 -9
  160. package/src/errors/from.rs +12 -8
  161. package/src/errors/mod.rs +7 -7
  162. package/src/errors/value_error.rs +5 -0
  163. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
  164. package/src/identity/factory_utils.rs +13 -13
  165. package/src/identity/identity.rs +275 -0
  166. package/src/identity/identity_facade.rs +87 -70
  167. package/src/identity/identity_factory.rs +74 -54
  168. package/src/identity/identity_public_key/mod.rs +87 -64
  169. package/src/identity/mod.rs +25 -247
  170. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  171. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  172. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +2 -2
  173. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  174. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  175. package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
  176. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +71 -65
  177. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  178. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  179. package/src/identity/state_transition/identity_create_transition/to_object.rs +10 -12
  180. package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
  181. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
  182. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
  183. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
  184. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
  185. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
  186. package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
  187. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +67 -62
  188. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  189. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  190. package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
  191. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  192. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
  193. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  194. package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
  195. package/src/identity/state_transition/mod.rs +5 -2
  196. package/src/identity/state_transition/transition_types.rs +34 -0
  197. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  198. package/src/lib.rs +10 -11
  199. package/src/metadata.rs +3 -3
  200. package/src/protocol_version.rs +7 -0
  201. package/src/state_transition/conversion.rs +11 -1
  202. package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
  203. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  204. package/src/state_transition/mod.rs +137 -139
  205. package/src/state_transition/state_transition_facade.rs +11 -11
  206. package/src/state_transition/state_transition_factory.rs +142 -153
  207. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  208. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
  209. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  210. package/src/utils.rs +7 -8
  211. package/src/validation/validation_result.rs +1 -0
  212. package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
  213. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
  214. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
  215. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
  216. package/test/integration/document/Document.spec.js +3 -3
  217. package/test/integration/document/DocumentFacade.spec.js +39 -38
  218. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +6 -7
  219. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
  220. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +2 -2
  221. package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
  222. package/test/integration/identity/IdentityFacade.spec.js +33 -62
  223. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
  224. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
  225. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  226. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
  227. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  228. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
  229. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
  230. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +4 -5
  231. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
  232. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +3 -7
  233. package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
  234. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
  235. package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
  236. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  237. package/test/unit/DashPlatformProtocol.spec.js +10 -25
  238. package/test/unit/dataContract/DataContract.spec.js +119 -148
  239. package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
  240. package/test/unit/dataContract/createDataContract.spec.js +6 -6
  241. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  242. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
  243. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +7 -9
  244. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
  245. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +28 -19
  246. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +7 -7
  247. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
  248. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
  249. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
  250. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +1 -1
  251. package/test/unit/document/Document.spec.js +31 -20
  252. package/test/unit/document/DocumentFactory.spec.js +45 -110
  253. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  254. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +6 -7
  255. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +11 -12
  256. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  257. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
  258. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
  259. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
  260. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
  261. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +9 -9
  262. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
  263. package/test/unit/identity/Identity.spec.js +46 -81
  264. package/test/unit/identity/IdentityFactory.spec.js +61 -75
  265. package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
  266. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
  267. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +9 -15
  268. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
  269. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
  270. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +9 -13
  271. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
  272. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
  273. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +4 -4
  274. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
  275. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
  276. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  277. package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
  278. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
  279. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
  280. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
  281. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
  282. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
  283. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  284. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  285. package/test-d/index.test-d.ts +2 -2
  286. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  287. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  288. package/src/decode_protocol_entity.rs +0 -25
  289. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
  290. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
  291. package/test/integration/util/generateEntropy.spec.js +0 -17
  292. package/test/integration/util/serializer.spec.js +0 -24
  293. package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
  294. package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
  295. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
@@ -1,36 +1,40 @@
1
1
  use std::convert::TryInto;
2
2
  use std::default::Default;
3
3
 
4
- use dpp::consensus::signature::SignatureError;
5
4
  use serde::{Deserialize, Serialize};
5
+ use serde_json::Value as JsonValue;
6
6
  use wasm_bindgen::__rt::Ref;
7
7
  use wasm_bindgen::prelude::*;
8
8
 
9
9
  use crate::identifier::IdentifierWrapper;
10
10
 
11
11
  use crate::{
12
- buffer::Buffer, errors::RustConversionError,
12
+ buffer::Buffer,
13
13
  identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitnessWasm,
14
- identity::IdentityPublicKeyWasm, with_js_error,
14
+ identity::IdentityPublicKeyWasm, utils, with_js_error,
15
15
  };
16
16
 
17
17
  use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
18
18
 
19
- use crate::errors::from_dpp_err;
20
19
  use crate::utils::{generic_of_js_val, WithJsError};
21
20
 
22
- use dpp::consensus::ConsensusError;
23
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
21
+ use crate::errors::from_dpp_err;
22
+ use dpp::errors::consensus::signature::SignatureError;
23
+ use dpp::errors::consensus::ConsensusError;
24
+ use dpp::errors::ProtocolError;
24
25
  use dpp::identity::{KeyID, KeyType, TimestampMillis};
25
26
  use dpp::platform_value::string_encoding::Encoding;
26
- use dpp::platform_value::{string_encoding, BinaryData, Value};
27
+ use dpp::platform_value::{string_encoding, BinaryData, ReplacementType, Value};
27
28
  use dpp::prelude::Revision;
28
- use dpp::state_transition::{StateTransitionConvert, StateTransitionIdentitySigned};
29
- use dpp::{
30
- identifier::Identifier,
31
- identity::state_transition::identity_update_transition::identity_update_transition::IdentityUpdateTransition,
32
- platform_value, state_transition::StateTransitionLike, ProtocolError,
33
- };
29
+ use dpp::serialization::PlatformSerializable;
30
+ use dpp::serialization::ValueConvertible;
31
+ use dpp::state_transition::identity_update_transition::accessors::IdentityUpdateTransitionAccessorsV0;
32
+ use dpp::state_transition::identity_update_transition::IdentityUpdateTransition;
33
+ use dpp::state_transition::public_key_in_creation::IdentityPublicKeyInCreation;
34
+ use dpp::state_transition::StateTransition;
35
+ use dpp::state_transition::StateTransitionIdentitySigned;
36
+ use dpp::version::PlatformVersion;
37
+ use dpp::{identifier::Identifier, state_transition::StateTransitionLike};
34
38
 
35
39
  #[wasm_bindgen(js_name=IdentityUpdateTransition)]
36
40
  #[derive(Clone)]
@@ -44,7 +48,7 @@ struct IdentityUpdateTransitionParams {
44
48
  protocol_version: u32,
45
49
  identity_id: Vec<u8>,
46
50
  revision: Revision,
47
- add_public_keys: Option<Vec<IdentityPublicKeyInCreationWithWitness>>,
51
+ add_public_keys: Option<Vec<IdentityPublicKeyInCreation>>,
48
52
  disable_public_keys: Option<Vec<KeyID>>,
49
53
  public_keys_disabled_at: Option<TimestampMillis>,
50
54
  }
@@ -61,29 +65,23 @@ impl From<IdentityUpdateTransitionWasm> for IdentityUpdateTransition {
61
65
  }
62
66
  }
63
67
 
64
- pub fn js_value_to_identity_update_transition_object(object: JsValue) -> Result<Value, JsValue> {
65
- let parameters: IdentityUpdateTransitionParams =
66
- with_js_error!(serde_wasm_bindgen::from_value(object))?;
67
-
68
- platform_value::to_value(parameters).map_err(|e| e.to_string().into())
69
- }
68
+ // pub fn js_value_to_identity_update_transition_object(object: JsValue) -> Result<Value, JsValue> {
69
+ // let parameters: IdentityUpdateTransitionParams =
70
+ // with_js_error!(serde_wasm_bindgen::from_value(object))?;
71
+ //
72
+ // platform_value::to_value(parameters).map_err(|e| e.to_string().into())
73
+ // }
70
74
 
71
75
  #[wasm_bindgen(js_class = IdentityUpdateTransition)]
72
76
  impl IdentityUpdateTransitionWasm {
73
77
  #[wasm_bindgen(constructor)]
74
- pub fn new(raw_parameters: JsValue) -> Result<IdentityUpdateTransitionWasm, JsValue> {
75
- let mut identity_update_transition_object =
76
- js_value_to_identity_update_transition_object(raw_parameters)?;
77
-
78
- IdentityUpdateTransition::clean_value(&mut identity_update_transition_object)
79
- .map_err(ProtocolError::ValueError)
80
- .with_js_error()?;
81
-
82
- let identity_update_transition =
83
- IdentityUpdateTransition::new(identity_update_transition_object)
84
- .map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
78
+ pub fn new(platform_version: u32) -> Result<IdentityUpdateTransitionWasm, JsValue> {
79
+ let platform_version =
80
+ &PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
85
81
 
86
- Ok(identity_update_transition.into())
82
+ IdentityUpdateTransition::default_versioned(&platform_version)
83
+ .map(Into::into)
84
+ .map_err(from_dpp_err)
87
85
  }
88
86
 
89
87
  #[wasm_bindgen(js_name=setPublicKeysToAdd)]
@@ -103,7 +101,7 @@ impl IdentityUpdateTransitionWasm {
103
101
  )?;
104
102
  Ok(public_key.clone().into())
105
103
  })
106
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
104
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
107
105
  }
108
106
 
109
107
  self.0.set_public_keys_to_add(keys_to_add);
@@ -114,7 +112,7 @@ impl IdentityUpdateTransitionWasm {
114
112
  #[wasm_bindgen(js_name=getPublicKeysToAdd)]
115
113
  pub fn get_public_keys_add(&self) -> Vec<JsValue> {
116
114
  self.0
117
- .get_public_keys_to_add()
115
+ .public_keys_to_add()
118
116
  .iter()
119
117
  .map(|key| IdentityPublicKeyWithWitnessWasm::from(key.to_owned()).into())
120
118
  .collect()
@@ -128,7 +126,7 @@ impl IdentityUpdateTransitionWasm {
128
126
  #[wasm_bindgen(js_name=getPublicKeyIdsToDisable)]
129
127
  pub fn get_public_key_ids_to_disable(&self) -> Vec<JsValue> {
130
128
  self.0
131
- .get_public_key_ids_to_disable()
129
+ .public_key_ids_to_disable()
132
130
  .iter()
133
131
  .map(|key| JsValue::from_f64(key.to_owned() as f64))
134
132
  .collect()
@@ -150,7 +148,7 @@ impl IdentityUpdateTransitionWasm {
150
148
  #[wasm_bindgen(js_name=getPublicKeysDisabledAt)]
151
149
  pub fn get_public_keys_disabled_at(&self) -> Option<js_sys::Date> {
152
150
  self.0
153
- .get_public_keys_disabled_at()
151
+ .public_keys_disabled_at()
154
152
  .map(|timestamp| js_sys::Date::new(&JsValue::from_f64(timestamp as f64)))
155
153
  }
156
154
 
@@ -166,7 +164,7 @@ impl IdentityUpdateTransitionWasm {
166
164
 
167
165
  #[wasm_bindgen(js_name=getType)]
168
166
  pub fn get_type(&self) -> u8 {
169
- self.0.get_type() as u8
167
+ self.0.state_transition_type() as u8
170
168
  }
171
169
 
172
170
  #[wasm_bindgen(getter, js_name=identityId)]
@@ -176,7 +174,7 @@ impl IdentityUpdateTransitionWasm {
176
174
 
177
175
  #[wasm_bindgen(js_name=getIdentityId)]
178
176
  pub fn get_identity_id(&self) -> IdentifierWrapper {
179
- (*self.0.get_identity_id()).into()
177
+ self.0.identity_id().to_owned().into()
180
178
  }
181
179
 
182
180
  #[wasm_bindgen(js_name=setIdentityId)]
@@ -186,7 +184,7 @@ impl IdentityUpdateTransitionWasm {
186
184
 
187
185
  #[wasm_bindgen(js_name=getOwnerId)]
188
186
  pub fn get_owner_id(&self) -> IdentifierWrapper {
189
- (*self.0.get_owner_id()).into()
187
+ StateTransitionLike::owner_id(&self.0).to_owned().into()
190
188
  }
191
189
 
192
190
  #[wasm_bindgen(js_name=toObject)]
@@ -197,7 +195,7 @@ impl IdentityUpdateTransitionWasm {
197
195
  Default::default()
198
196
  };
199
197
 
200
- let object = super::to_object::to_object_struct(&self.0, opts);
198
+ let object = super::to_object::to_object_struct(&self.0, &opts);
201
199
  let js_object = js_sys::Object::new();
202
200
 
203
201
  js_sys::Reflect::set(
@@ -206,11 +204,11 @@ impl IdentityUpdateTransitionWasm {
206
204
  &object.transition_type.into(),
207
205
  )?;
208
206
 
209
- js_sys::Reflect::set(
210
- &js_object,
211
- &"protocolVersion".to_owned().into(),
212
- &object.protocol_version.into(),
213
- )?;
207
+ let version = match self.0 {
208
+ IdentityUpdateTransition::V0(_) => "0",
209
+ };
210
+
211
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
214
212
 
215
213
  js_sys::Reflect::set(
216
214
  &js_object,
@@ -227,33 +225,28 @@ impl IdentityUpdateTransitionWasm {
227
225
 
228
226
  js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
229
227
 
230
- if let Some(signature_public_key_id) = object.signature_public_key_id {
231
- js_sys::Reflect::set(
232
- &js_object,
233
- &"signaturePublicKeyId".to_owned().into(),
234
- &JsValue::from(signature_public_key_id),
235
- )?;
236
- } else {
237
- js_sys::Reflect::set(
238
- &js_object,
239
- &"signaturePublicKeyId".to_owned().into(),
240
- &JsValue::undefined(),
241
- )?;
242
- }
228
+ js_sys::Reflect::set(
229
+ &js_object,
230
+ &"signaturePublicKeyId".to_owned().into(),
231
+ &JsValue::from(object.signature_public_key_id),
232
+ )?;
243
233
  }
244
234
 
245
235
  if let Some(timestamp) = object.public_keys_disabled_at {
246
236
  js_sys::Reflect::set(
247
237
  &js_object,
248
238
  &"publicKeysDisabledAt".to_owned().into(),
249
- &(timestamp as u32).into(),
239
+ &js_sys::Date::new(&JsValue::from_f64(timestamp as f64)).into(),
250
240
  )?;
251
241
  }
252
242
 
253
243
  if let Some(public_keys_to_add) = object.public_keys_to_add {
254
244
  let keys_objects = public_keys_to_add
255
245
  .into_iter()
256
- .map(|key| IdentityPublicKeyWithWitnessWasm::from(key).to_object(options.clone()))
246
+ .map(|key| {
247
+ IdentityPublicKeyWithWitnessWasm::from(key)
248
+ .to_object(opts.skip_signature.unwrap_or(false))
249
+ })
257
250
  .collect::<Result<js_sys::Array, _>>()?;
258
251
 
259
252
  js_sys::Reflect::set(
@@ -286,24 +279,17 @@ impl IdentityUpdateTransitionWasm {
286
279
  }
287
280
 
288
281
  #[wasm_bindgen(js_name=toBuffer)]
289
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
290
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
291
- with_js_error!(serde_wasm_bindgen::from_value(options))?
292
- } else {
293
- Default::default()
294
- };
295
-
296
- let buffer = self
297
- .0
298
- .to_cbor_buffer(opts.skip_signature.unwrap_or(false))
299
- .map_err(from_dpp_err)?;
300
-
301
- Ok(Buffer::from_bytes(&buffer).into())
282
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
283
+ let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityUpdate(
284
+ self.0.clone(),
285
+ ))
286
+ .with_js_error()?;
287
+ Ok(Buffer::from_bytes(&bytes))
302
288
  }
303
289
 
304
290
  #[wasm_bindgen(js_name=toJSON)]
305
291
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
306
- let object = super::to_object::to_object_struct(&self.0, Default::default());
292
+ let object = super::to_object::to_object_struct(&self.0, &Default::default());
307
293
  let js_object = js_sys::Object::new();
308
294
 
309
295
  js_sys::Reflect::set(
@@ -312,11 +298,11 @@ impl IdentityUpdateTransitionWasm {
312
298
  &object.transition_type.into(),
313
299
  )?;
314
300
 
315
- js_sys::Reflect::set(
316
- &js_object,
317
- &"protocolVersion".to_owned().into(),
318
- &object.protocol_version.into(),
319
- )?;
301
+ let version = match self.0 {
302
+ IdentityUpdateTransition::V0(_) => "0",
303
+ };
304
+
305
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
320
306
 
321
307
  js_sys::Reflect::set(
322
308
  &js_object,
@@ -333,26 +319,18 @@ impl IdentityUpdateTransitionWasm {
333
319
 
334
320
  js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
335
321
 
336
- if let Some(signature_public_key_id) = object.signature_public_key_id {
337
- js_sys::Reflect::set(
338
- &js_object,
339
- &"signaturePublicKeyId".to_owned().into(),
340
- &signature_public_key_id.into(),
341
- )?;
342
- } else {
343
- js_sys::Reflect::set(
344
- &js_object,
345
- &"signaturePublicKeyId".to_owned().into(),
346
- &JsValue::undefined(),
347
- )?;
348
- }
322
+ js_sys::Reflect::set(
323
+ &js_object,
324
+ &"signaturePublicKeyId".to_owned().into(),
325
+ &object.signature_public_key_id.into(),
326
+ )?;
349
327
  }
350
328
 
351
329
  if let Some(timestamp) = object.public_keys_disabled_at {
352
330
  js_sys::Reflect::set(
353
331
  &js_object,
354
332
  &"publicKeysDisabledAt".to_owned().into(),
355
- &(timestamp as u32).into(),
333
+ &JsValue::from_f64(timestamp as f64),
356
334
  )?;
357
335
  }
358
336
 
@@ -394,8 +372,8 @@ impl IdentityUpdateTransitionWasm {
394
372
  }
395
373
 
396
374
  #[wasm_bindgen(js_name=getModifiedDataIds)]
397
- pub fn get_modified_data_ids(&self) -> Vec<JsValue> {
398
- let ids = self.0.get_modified_data_ids();
375
+ pub fn modified_data_ids(&self) -> Vec<JsValue> {
376
+ let ids = self.0.modified_data_ids();
399
377
 
400
378
  ids.into_iter()
401
379
  .map(|id| <IdentifierWrapper as std::convert::From<Identifier>>::from(id).into())
@@ -441,9 +419,16 @@ impl IdentityUpdateTransitionWasm {
441
419
  BlsAdapter(JsValue::undefined().into())
442
420
  };
443
421
 
444
- self.0
422
+ // TODO: not the best approach because it involves cloning the transition
423
+ // Probably it worth to return `sign_by_private_key` per state transition
424
+ let mut wrapper = StateTransition::IdentityUpdate(self.0.clone());
425
+ wrapper
445
426
  .sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
446
- .with_js_error()
427
+ .with_js_error()?;
428
+
429
+ self.0.set_signature(wrapper.signature().to_owned());
430
+
431
+ Ok(())
447
432
  }
448
433
 
449
434
  #[wasm_bindgen(js_name=setSignaturePublicKeyId)]
@@ -453,17 +438,18 @@ impl IdentityUpdateTransitionWasm {
453
438
 
454
439
  #[wasm_bindgen(js_name=getSignature)]
455
440
  pub fn get_signature(&self) -> Buffer {
456
- Buffer::from_bytes_owned(self.0.get_signature().to_vec())
441
+ Buffer::from_bytes_owned(self.0.signature().to_vec())
457
442
  }
458
443
 
459
444
  #[wasm_bindgen(js_name=setSignature)]
460
445
  pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
461
- self.0.signature = BinaryData::new(signature.unwrap_or(vec![]))
446
+ self.0
447
+ .set_signature(BinaryData::new(signature.unwrap_or(vec![])))
462
448
  }
463
449
 
464
450
  #[wasm_bindgen(js_name=getRevision)]
465
451
  pub fn get_revision(&self) -> u32 {
466
- self.0.get_revision() as u32
452
+ self.0.revision() as u32
467
453
  }
468
454
 
469
455
  #[wasm_bindgen(js_name=setRevision)]
@@ -479,13 +465,23 @@ impl IdentityUpdateTransitionWasm {
479
465
  bls: JsBlsAdapter,
480
466
  ) -> Result<(), JsValue> {
481
467
  let bls_adapter = BlsAdapter(bls);
482
- self.0
468
+ // TODO: come up with a better way to set signature to the binding.
469
+ let mut state_transition = StateTransition::IdentityUpdate(self.0.clone());
470
+ state_transition
483
471
  .sign(
484
472
  &identity_public_key.to_owned().into(),
485
473
  &private_key,
486
474
  &bls_adapter,
487
475
  )
488
- .with_js_error()
476
+ .with_js_error()?;
477
+
478
+ let signature = state_transition.signature().to_owned();
479
+ let signature_public_key_id = state_transition.signature_public_key_id().unwrap_or(0);
480
+
481
+ self.0.set_signature(signature);
482
+ self.0.set_signature_public_key_id(signature_public_key_id);
483
+
484
+ Ok(())
489
485
  }
490
486
 
491
487
  #[wasm_bindgen(js_name=verifySignature)]
@@ -496,8 +492,7 @@ impl IdentityUpdateTransitionWasm {
496
492
  ) -> Result<bool, JsValue> {
497
493
  let bls_adapter = BlsAdapter(bls);
498
494
 
499
- let verification_result = self
500
- .0
495
+ let verification_result = StateTransition::IdentityUpdate(self.0.clone())
501
496
  .verify_signature(&identity_public_key.to_owned().into(), &bls_adapter);
502
497
 
503
498
  match verification_result {
@@ -1,9 +1,9 @@
1
1
  pub use identity_update_transition::*;
2
2
 
3
- pub mod apply_identity_update_transition;
4
- pub mod identity_update_public_keys_validator;
3
+ // pub mod apply_identity_update_transition;
4
+ // pub mod identity_update_public_keys_validator;
5
5
  pub mod identity_update_transition;
6
- pub mod identity_update_transition_basic_validator;
7
- pub mod identity_update_transition_state_validator;
6
+ // pub mod identity_update_transition_basic_validator;
7
+ // pub mod identity_update_transition_state_validator;
8
8
 
9
9
  mod to_object;
@@ -1,11 +1,9 @@
1
1
  use dpp::identity::KeyID;
2
+ use dpp::state_transition::identity_update_transition::accessors::IdentityUpdateTransitionAccessorsV0;
3
+ use dpp::state_transition::identity_update_transition::IdentityUpdateTransition;
4
+ use dpp::state_transition::public_key_in_creation::IdentityPublicKeyInCreation;
2
5
  use dpp::state_transition::StateTransitionIdentitySigned;
3
- use dpp::{
4
- identifier::Identifier,
5
- identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness,
6
- identity::state_transition::identity_update_transition::identity_update_transition::IdentityUpdateTransition,
7
- state_transition::StateTransitionLike,
8
- };
6
+ use dpp::{identifier::Identifier, state_transition::StateTransitionLike};
9
7
  use serde::Deserialize;
10
8
  use std::default::Default;
11
9
 
@@ -18,46 +16,44 @@ pub struct ToObjectOptions {
18
16
  #[derive(Default)]
19
17
  pub struct ToObject {
20
18
  pub transition_type: u8,
21
- pub protocol_version: u32,
22
19
  pub revision: u32,
23
20
  pub signature: Option<Vec<u8>>,
24
- pub signature_public_key_id: Option<KeyID>,
21
+ pub signature_public_key_id: KeyID,
25
22
  pub public_keys_disabled_at: Option<u64>,
26
- pub public_keys_to_add: Option<Vec<IdentityPublicKeyInCreationWithWitness>>,
23
+ pub public_keys_to_add: Option<Vec<IdentityPublicKeyInCreation>>,
27
24
  pub public_key_ids_to_disable: Option<Vec<KeyID>>,
28
25
  pub identity_id: Identifier,
29
26
  }
30
27
 
31
28
  pub fn to_object_struct(
32
29
  transition: &IdentityUpdateTransition,
33
- options: ToObjectOptions,
30
+ options: &ToObjectOptions,
34
31
  ) -> ToObject {
35
32
  let mut to_object = ToObject {
36
- transition_type: transition.get_type() as u8,
37
- protocol_version: transition.get_protocol_version(),
38
- revision: transition.get_revision() as u32,
39
- identity_id: transition.get_identity_id().to_owned(),
33
+ transition_type: transition.state_transition_type() as u8,
34
+ revision: transition.revision() as u32,
35
+ identity_id: transition.identity_id().to_owned(),
40
36
  ..ToObject::default()
41
37
  };
42
38
 
43
39
  if !options.skip_signature.unwrap_or(false) {
44
- let signature = Some(transition.get_signature().to_vec());
40
+ let signature = Some(transition.signature().to_vec());
45
41
  if let Some(signature) = &signature {
46
42
  if !signature.is_empty() {
47
- to_object.signature_public_key_id = transition.get_signature_public_key_id()
43
+ to_object.signature_public_key_id = transition.signature_public_key_id()
48
44
  }
49
45
  }
50
46
  to_object.signature = signature;
51
47
  }
52
48
 
53
- to_object.public_keys_disabled_at = transition.get_public_keys_disabled_at();
49
+ to_object.public_keys_disabled_at = transition.public_keys_disabled_at();
54
50
 
55
- let public_keys_to_add = transition.get_public_keys_to_add();
51
+ let public_keys_to_add = transition.public_keys_to_add();
56
52
  if !public_keys_to_add.is_empty() {
57
53
  to_object.public_keys_to_add = Some(public_keys_to_add.to_owned());
58
54
  }
59
55
 
60
- let public_key_ids_to_disable = transition.get_public_key_ids_to_disable();
56
+ let public_key_ids_to_disable = transition.public_key_ids_to_disable();
61
57
  if !public_key_ids_to_disable.is_empty() {
62
58
  to_object.public_key_ids_to_disable = Some(public_key_ids_to_disable.to_owned());
63
59
  }
@@ -1,12 +1,15 @@
1
1
  pub use asset_lock_proof::*;
2
2
  pub use identity_create_transition::*;
3
+ pub use identity_credit_transfer_transition::*;
3
4
  pub use identity_topup_transition::*;
4
5
  pub use identity_update_transition::*;
5
- pub use validate_public_key_signatures::*;
6
+ // pub use validate_public_key_signatures::*;
6
7
 
7
8
  mod asset_lock_proof;
8
9
  mod identity_create_transition;
10
+ mod identity_credit_transfer_transition;
9
11
  pub(crate) mod identity_public_key_transitions;
10
12
  mod identity_topup_transition;
11
13
  mod identity_update_transition;
12
- mod validate_public_key_signatures;
14
+ mod transition_types;
15
+ // mod validate_public_key_signatures;
@@ -0,0 +1,34 @@
1
+ use dpp::state_transition::StateTransitionType;
2
+ use wasm_bindgen::prelude::*;
3
+
4
+ #[wasm_bindgen(js_name=StateTransitionTypes)]
5
+ #[allow(non_camel_case_types)]
6
+ pub enum StateTransitionTypeWasm {
7
+ DataContractCreate = 0,
8
+ DocumentsBatch = 1,
9
+ IdentityCreate = 2,
10
+ IdentityTopUp = 3,
11
+ DataContractUpdate = 4,
12
+ IdentityUpdate = 5,
13
+ IdentityCreditWithdrawal = 6,
14
+ IdentityCreditTransfer = 7,
15
+ }
16
+
17
+ impl From<StateTransitionType> for StateTransitionTypeWasm {
18
+ fn from(state_transition_type: StateTransitionType) -> Self {
19
+ match state_transition_type {
20
+ StateTransitionType::DataContractCreate => StateTransitionTypeWasm::DataContractCreate,
21
+ StateTransitionType::DocumentsBatch => StateTransitionTypeWasm::DocumentsBatch,
22
+ StateTransitionType::IdentityCreate => StateTransitionTypeWasm::IdentityCreate,
23
+ StateTransitionType::IdentityTopUp => StateTransitionTypeWasm::IdentityTopUp,
24
+ StateTransitionType::DataContractUpdate => StateTransitionTypeWasm::DataContractUpdate,
25
+ StateTransitionType::IdentityUpdate => StateTransitionTypeWasm::IdentityUpdate,
26
+ StateTransitionType::IdentityCreditWithdrawal => {
27
+ StateTransitionTypeWasm::IdentityCreditWithdrawal
28
+ }
29
+ StateTransitionType::IdentityCreditTransfer => {
30
+ StateTransitionTypeWasm::IdentityCreditTransfer
31
+ }
32
+ }
33
+ }
34
+ }
@@ -10,7 +10,7 @@ use dpp::identity::state_transition::validate_public_key_signatures::{
10
10
  PublicKeysSignaturesValidator, TPublicKeysSignaturesValidator,
11
11
  };
12
12
 
13
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
13
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
14
14
 
15
15
  use crate::errors::from_dpp_err;
16
16
  use dpp::platform_value::Value;
@@ -44,7 +44,7 @@ impl PublicKeysSignaturesValidatorWasm {
44
44
  let public_keys = raw_public_keys
45
45
  .into_iter()
46
46
  .map(|raw_key| {
47
- let parsed_key: IdentityPublicKeyInCreationWithWitness =
47
+ let parsed_key: IdentityPublicKeyInCreation =
48
48
  IdentityPublicKeyWithWitnessWasm::new(raw_key)?.into();
49
49
  parsed_key.to_raw_object(false).with_js_error()
50
50
  })
package/src/lib.rs CHANGED
@@ -2,33 +2,32 @@ extern crate core;
2
2
 
3
3
  pub use dash_platform_protocol::*;
4
4
  pub use data_contract::*;
5
- pub use data_contract_factory::*;
6
- pub use data_trigger::*;
7
- pub use decode_protocol_entity::decode_protocol_entity;
5
+ // pub use data_contract_factory::*;
6
+ // pub use data_trigger::*;
8
7
  pub use document::*;
9
8
  pub use identity::*;
10
9
  pub use metadata::*;
11
- pub use state_transition::*;
10
+ // pub use state_transition::*;
12
11
 
13
12
  mod dash_platform_protocol;
14
13
  mod data_contract;
15
14
  mod data_contract_factory;
16
- mod data_trigger;
15
+ // mod data_trigger;
17
16
  mod document;
18
17
  pub mod errors;
19
18
  mod identifier;
20
19
  mod identity;
21
20
  mod metadata;
22
- mod state_repository;
21
+ // mod state_repository;
23
22
  mod state_transition;
24
- mod version;
23
+ // mod version;
25
24
 
26
25
  mod utils;
27
26
 
28
- mod bls_adapter;
27
+ pub mod bls_adapter;
29
28
  mod buffer;
30
- mod decode_protocol_entity;
31
29
  mod entropy_generator;
32
- mod generate_temporary_ecdsa_private_key;
30
+ // mod generate_temporary_ecdsa_private_key;
33
31
  mod lodash;
34
- mod validation;
32
+ mod protocol_version;
33
+ // mod validation;
package/src/metadata.rs CHANGED
@@ -12,19 +12,19 @@ use dpp::util::json_value::JsonValueExt;
12
12
  #[derive(Clone, Debug)]
13
13
  pub struct MetadataWasm(Metadata);
14
14
 
15
- impl std::convert::From<Metadata> for MetadataWasm {
15
+ impl From<Metadata> for MetadataWasm {
16
16
  fn from(v: Metadata) -> Self {
17
17
  MetadataWasm(v)
18
18
  }
19
19
  }
20
20
 
21
- impl std::convert::From<&MetadataWasm> for Metadata {
21
+ impl From<&MetadataWasm> for Metadata {
22
22
  fn from(v: &MetadataWasm) -> Self {
23
23
  v.0.clone()
24
24
  }
25
25
  }
26
26
 
27
- impl std::convert::Into<Metadata> for MetadataWasm {
27
+ impl Into<Metadata> for MetadataWasm {
28
28
  fn into(self) -> Metadata {
29
29
  self.0
30
30
  }
@@ -0,0 +1,7 @@
1
+ use dpp::version::{PlatformVersion, LATEST_VERSION};
2
+ use wasm_bindgen::prelude::wasm_bindgen;
3
+
4
+ #[wasm_bindgen(js_name = getLatestProtocolVersion)]
5
+ pub fn latest_protocol_version() -> u32 {
6
+ PlatformVersion::latest().protocol_version
7
+ }
@@ -2,7 +2,8 @@ use crate::errors::consensus::consensus_error::from_consensus_error;
2
2
  use crate::utils::generic_of_js_val;
3
3
  use crate::{
4
4
  DataContractCreateTransitionWasm, DataContractUpdateTransitionWasm,
5
- DocumentsBatchTransitionWasm, IdentityCreateTransitionWasm, IdentityTopUpTransitionWasm,
5
+ DocumentsBatchTransitionWasm, IdentityCreateTransitionWasm,
6
+ IdentityCreditTransferTransitionWasm, IdentityTopUpTransitionWasm,
6
7
  IdentityUpdateTransitionWasm, PreCalculatedOperationWasm, ReadOperationWasm,
7
8
  SignatureVerificationOperationWasm,
8
9
  };
@@ -127,6 +128,15 @@ pub fn create_state_transition_from_wasm_instance(
127
128
 
128
129
  Ok(StateTransition::IdentityUpdate(st.clone().into()))
129
130
  }
131
+ StateTransitionType::IdentityCreditTransfer => {
132
+ let st: Ref<IdentityCreditTransferTransitionWasm> =
133
+ generic_of_js_val::<IdentityCreditTransferTransitionWasm>(
134
+ js_value,
135
+ "IdentityCreditTransferTransition",
136
+ )?;
137
+
138
+ Ok(StateTransition::IdentityCreditTransfer(st.clone().into()))
139
+ }
130
140
  _ => Err(JsError::new("Unsupported state transition type").into()),
131
141
  }
132
142
  }