@dashevo/wasm-dpp 0.25.0-dev.16 → 0.25.0-dev.17

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 (265) hide show
  1. package/Cargo.toml +22 -2
  2. package/dist/errors/patchConsensusErrors.js +94 -115
  3. package/dist/wasm/wasm_dpp.d.ts +2136 -4354
  4. package/dist/wasm/wasm_dpp.js +17748 -2769
  5. package/dist/wasm/wasm_dpp_bg.js +1 -1
  6. package/lib/dpp.ts +1 -1
  7. package/lib/errors/patchConsensusErrors.ts +94 -93
  8. package/lib/test/bootstrap.js +5 -0
  9. package/lib/test/fixtures/getDataContractFixture.js +2 -4
  10. package/lib/test/fixtures/getDocumentsFixture.js +4 -4
  11. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +13 -19
  12. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +7 -12
  13. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  14. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  15. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  16. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  17. package/lib/wasm/wasm_dpp.d.ts +2136 -4354
  18. package/package.json +4 -4
  19. package/src/dash_platform_protocol.rs +172 -195
  20. package/src/data_contract/data_contract.rs +255 -203
  21. package/src/data_contract/data_contract_facade.rs +24 -46
  22. package/src/data_contract/errors/mod.rs +1 -0
  23. package/src/data_contract/mod.rs +2 -2
  24. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +82 -87
  25. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +74 -80
  26. package/src/data_contract_factory/data_contract_factory.rs +28 -81
  27. package/src/document/document_facade.rs +74 -81
  28. package/src/document/errors/document_already_exists_error.rs +6 -6
  29. package/src/document/errors/document_no_revision_error.rs +1 -0
  30. package/src/document/errors/document_not_provided_error.rs +6 -6
  31. package/src/document/errors/invalid_document_action_error.rs +11 -7
  32. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  33. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  34. package/src/document/errors/mod.rs +5 -0
  35. package/src/document/errors/revision_absent_error.rs +6 -6
  36. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  37. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  38. package/src/document/extended_document.rs +76 -76
  39. package/src/document/factory.rs +127 -123
  40. package/src/document/generate_document_id.rs +2 -2
  41. package/src/document/mod.rs +162 -148
  42. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
  43. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  44. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  45. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
  46. package/src/document/state_transition/document_batch_transition/mod.rs +230 -217
  47. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -10
  48. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -10
  49. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -11
  50. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -10
  51. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -10
  52. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -10
  53. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -10
  54. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -10
  55. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -10
  56. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -10
  57. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -10
  58. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -10
  59. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -10
  60. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -10
  61. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -10
  62. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -10
  63. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -10
  64. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -10
  65. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -8
  66. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -10
  67. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -10
  68. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -10
  69. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -10
  70. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -10
  71. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -10
  72. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -10
  73. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -10
  74. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -10
  75. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -10
  76. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -10
  77. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -10
  78. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -10
  79. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -10
  80. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -10
  81. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -10
  82. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -10
  83. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -10
  84. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -10
  85. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -10
  86. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -10
  87. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -10
  88. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -10
  89. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -10
  90. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -10
  91. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -10
  92. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -10
  93. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -10
  94. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -10
  95. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -10
  96. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -10
  97. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -10
  98. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -10
  99. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -10
  100. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -10
  101. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -10
  102. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -10
  103. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +1 -10
  104. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -10
  105. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -10
  106. package/src/errors/consensus/basic/json_schema_error.rs +1 -9
  107. package/src/errors/consensus/basic/mod.rs +2 -0
  108. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -10
  109. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  110. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -10
  111. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -10
  112. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -10
  113. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -10
  114. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  115. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -10
  116. package/src/errors/consensus/consensus_error.rs +30 -21
  117. package/src/errors/consensus/deserialize.rs +2 -2
  118. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -3
  119. package/src/errors/consensus/signature/basic_bls_error.rs +1 -10
  120. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -10
  121. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -3
  122. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -10
  123. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -3
  124. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +1 -12
  125. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +1 -10
  126. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -2
  127. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -2
  128. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -2
  129. package/src/errors/consensus/state/data_contract/mod.rs +3 -1
  130. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -10
  131. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -10
  132. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -10
  133. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -10
  134. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +1 -10
  135. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -10
  136. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -10
  137. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -13
  138. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -10
  139. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -10
  140. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -10
  141. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -10
  142. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -10
  143. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -10
  144. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -10
  145. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -10
  146. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -10
  147. package/src/errors/consensus/value_error.rs +1 -10
  148. package/src/errors/from.rs +12 -8
  149. package/src/errors/mod.rs +7 -7
  150. package/src/identity/factory_utils.rs +10 -10
  151. package/src/identity/identity.rs +275 -0
  152. package/src/identity/identity_facade.rs +69 -70
  153. package/src/identity/identity_factory.rs +57 -55
  154. package/src/identity/identity_public_key/mod.rs +86 -62
  155. package/src/identity/mod.rs +25 -256
  156. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  157. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  158. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  159. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  160. package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
  161. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +66 -52
  162. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  163. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  164. package/src/identity/state_transition/identity_create_transition/to_object.rs +9 -11
  165. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +3 -3
  166. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +10 -13
  167. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +72 -39
  168. package/src/identity/state_transition/identity_public_key_transitions.rs +81 -66
  169. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +64 -51
  170. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  171. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  172. package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
  173. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +95 -92
  174. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  175. package/src/identity/state_transition/identity_update_transition/to_object.rs +14 -18
  176. package/src/identity/state_transition/mod.rs +2 -2
  177. package/src/lib.rs +9 -9
  178. package/src/metadata.rs +3 -3
  179. package/src/protocol_version.rs +2 -2
  180. package/src/state_transition/errors/invalid_state_transition_error.rs +9 -9
  181. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  182. package/src/state_transition/mod.rs +137 -139
  183. package/src/state_transition/state_transition_facade.rs +1 -2
  184. package/src/state_transition/state_transition_factory.rs +139 -159
  185. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  186. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +3 -4
  187. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  188. package/src/utils.rs +4 -2
  189. package/src/validation/validation_result.rs +1 -1
  190. package/test/integration/dataContract/DataContractFacade.spec.js +11 -15
  191. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +1 -1
  192. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +1 -1
  193. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +1 -1
  194. package/test/integration/document/Document.spec.js +3 -3
  195. package/test/integration/document/DocumentFacade.spec.js +34 -33
  196. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +1 -1
  197. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +1 -1
  198. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +1 -1
  199. package/test/integration/document/validation/validateDocumentFactory.spec.js +1 -1
  200. package/test/integration/identity/IdentityFacade.spec.js +29 -58
  201. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +2 -2
  202. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +1 -1
  203. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  204. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +2 -2
  205. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  206. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +1 -1
  207. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +2 -2
  208. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +1 -1
  209. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +4 -3
  210. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +1 -1
  211. package/test/integration/identity/validation/validateIdentityFactory.spec.js +2 -2
  212. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +1 -1
  213. package/test/integration/stateTransition/StateTransitionFacade.spec.js +39 -48
  214. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  215. package/test/unit/DashPlatformProtocol.spec.js +4 -18
  216. package/test/unit/dataContract/DataContract.spec.js +84 -123
  217. package/test/unit/dataContract/DataContractFactory.spec.js +1 -1
  218. package/test/unit/dataContract/createDataContract.spec.js +1 -1
  219. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  220. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +14 -14
  221. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
  222. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +1 -1
  223. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +7 -8
  224. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
  225. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +1 -1
  226. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +1 -1
  227. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +1 -1
  228. package/test/unit/document/Document.spec.js +18 -10
  229. package/test/unit/document/DocumentFactory.spec.js +10 -23
  230. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  231. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +4 -4
  232. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +1 -1
  233. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  234. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
  235. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
  236. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
  237. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
  238. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +1 -1
  239. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
  240. package/test/unit/identity/Identity.spec.js +34 -74
  241. package/test/unit/identity/IdentityFactory.spec.js +55 -68
  242. package/test/unit/identity/IdentityPublicKey.spec.js +30 -47
  243. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +23 -55
  244. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +2 -2
  245. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +2 -2
  246. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +7 -28
  247. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +4 -4
  248. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +2 -2
  249. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +19 -36
  250. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
  251. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
  252. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +14 -23
  253. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  254. package/test/unit/stateTransition/StateTransitionFactory.spec.js +13 -18
  255. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +1 -1
  256. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +1 -1
  257. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +1 -1
  258. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +1 -1
  259. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +2 -2
  260. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  261. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  262. package/test-d/index.test-d.ts +2 -2
  263. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  264. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  265. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
@@ -1,34 +1,36 @@
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::KeyType;
8
+ use dpp::platform_value::BinaryData;
9
+ use dpp::serialization::ValueConvertible;
10
+ use dpp::state_transition::identity_topup_transition::fields::IDENTIFIER_FIELDS;
11
+ use dpp::version::PlatformVersion;
12
+ use serde_json::Value as JsonValue;
6
13
  use wasm_bindgen::prelude::*;
7
14
 
8
15
  use crate::identifier::IdentifierWrapper;
9
16
 
10
17
  use crate::{
11
18
  buffer::Buffer,
12
- create_asset_lock_proof_from_wasm_instance,
13
- errors::RustConversionError,
14
19
  identity::state_transition::asset_lock_proof::{
15
20
  ChainAssetLockProofWasm, InstantAssetLockProofWasm,
16
21
  },
17
- with_js_error,
22
+ utils, with_js_error,
18
23
  };
19
24
 
20
- use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
21
-
22
- use dpp::identity::KeyType;
25
+ use crate::identity::state_transition::create_asset_lock_proof_from_wasm_instance;
23
26
  use dpp::platform_value::string_encoding::Encoding;
24
- use dpp::platform_value::{string_encoding, BinaryData};
25
- use dpp::serialization_traits::PlatformSerializable;
27
+ use dpp::platform_value::{string_encoding, ReplacementType, Value};
28
+ use dpp::serialization::PlatformSerializable;
29
+ use dpp::state_transition::identity_topup_transition::accessors::IdentityTopUpTransitionAccessorsV0;
30
+ use dpp::state_transition::identity_topup_transition::IdentityTopUpTransition;
26
31
  use dpp::state_transition::StateTransition;
27
32
  use dpp::{
28
- identifier::Identifier,
29
- identity::state_transition::{
30
- asset_lock_proof::AssetLockProof, identity_topup_transition::IdentityTopUpTransition,
31
- },
33
+ identifier::Identifier, identity::state_transition::asset_lock_proof::AssetLockProof,
32
34
  state_transition::StateTransitionLike,
33
35
  };
34
36
 
@@ -51,23 +53,20 @@ impl From<IdentityTopUpTransitionWasm> for IdentityTopUpTransition {
51
53
  #[wasm_bindgen(js_class = IdentityTopUpTransition)]
52
54
  impl IdentityTopUpTransitionWasm {
53
55
  #[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())?;
56
+ pub fn new(platform_version: u32) -> Result<IdentityTopUpTransitionWasm, JsValue> {
57
+ let platform_version =
58
+ &PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
60
59
 
61
- Ok(identity_topup_transition.into())
60
+ IdentityTopUpTransition::default_versioned(&platform_version)
61
+ .map(Into::into)
62
+ .map_err(from_dpp_err)
62
63
  }
63
64
 
64
65
  #[wasm_bindgen(js_name=setAssetLockProof)]
65
66
  pub fn set_asset_lock_proof(&mut self, asset_lock_proof: JsValue) -> Result<(), JsValue> {
66
67
  let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(&asset_lock_proof)?;
67
68
 
68
- self.0
69
- .set_asset_lock_proof(asset_lock_proof)
70
- .map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
69
+ self.0.set_asset_lock_proof(asset_lock_proof);
71
70
 
72
71
  Ok(())
73
72
  }
@@ -79,7 +78,7 @@ impl IdentityTopUpTransitionWasm {
79
78
 
80
79
  #[wasm_bindgen(js_name=getAssetLockProof)]
81
80
  pub fn get_asset_lock_proof(&self) -> JsValue {
82
- let asset_lock_proof = self.0.get_asset_lock_proof().to_owned();
81
+ let asset_lock_proof = self.0.asset_lock_proof().to_owned();
83
82
 
84
83
  match asset_lock_proof {
85
84
  AssetLockProof::Chain(chain_asset_lock_proof) => {
@@ -93,7 +92,7 @@ impl IdentityTopUpTransitionWasm {
93
92
 
94
93
  #[wasm_bindgen(js_name=getType)]
95
94
  pub fn get_type(&self) -> u8 {
96
- self.0.get_type() as u8
95
+ self.0.state_transition_type() as u8
97
96
  }
98
97
 
99
98
  #[wasm_bindgen(getter, js_name=identityId)]
@@ -103,23 +102,28 @@ impl IdentityTopUpTransitionWasm {
103
102
 
104
103
  #[wasm_bindgen(js_name=getIdentityId)]
105
104
  pub fn get_identity_id(&self) -> IdentifierWrapper {
106
- (*self.0.get_identity_id()).into()
105
+ (*self.0.identity_id()).into()
106
+ }
107
+
108
+ #[wasm_bindgen(js_name=setIdentityId)]
109
+ pub fn set_identity_id(&mut self, identity_id: &IdentifierWrapper) {
110
+ self.0.set_identity_id(identity_id.to_owned().into());
107
111
  }
108
112
 
109
113
  #[wasm_bindgen(js_name=getOwnerId)]
110
114
  pub fn get_owner_id(&self) -> IdentifierWrapper {
111
- (*self.0.get_owner_id()).into()
115
+ self.0.owner_id().to_owned().into()
112
116
  }
113
117
 
114
118
  #[wasm_bindgen(js_name=toObject)]
115
119
  pub fn to_object(&self, options: JsValue) -> Result<JsValue, JsValue> {
116
120
  let opts: super::to_object::ToObjectOptions = if options.is_object() {
117
- with_js_error!(serde_wasm_bindgen::from_value(options))?
121
+ with_js_error!(serde_wasm_bindgen::from_value(options.clone()))?
118
122
  } else {
119
123
  Default::default()
120
124
  };
121
125
 
122
- let object = super::to_object::to_object_struct(&self.0, opts);
126
+ let object = super::to_object::to_object_struct(&self.0, &opts);
123
127
  let js_object = js_sys::Object::new();
124
128
 
125
129
  js_sys::Reflect::set(
@@ -128,11 +132,11 @@ impl IdentityTopUpTransitionWasm {
128
132
  &object.transition_type.into(),
129
133
  )?;
130
134
 
131
- js_sys::Reflect::set(
132
- &js_object,
133
- &"protocolVersion".to_owned().into(),
134
- &object.protocol_version.into(),
135
- )?;
135
+ let version = match self.0 {
136
+ IdentityTopUpTransition::V0(_) => "0",
137
+ };
138
+
139
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
136
140
 
137
141
  if let Some(signature) = object.signature {
138
142
  let signature_value: JsValue = if signature.is_empty() {
@@ -170,15 +174,16 @@ impl IdentityTopUpTransitionWasm {
170
174
 
171
175
  #[wasm_bindgen(js_name=toBuffer)]
172
176
  pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
173
- let bytes =
174
- PlatformSerializable::serialize(&StateTransition::IdentityTopUp(self.0.clone()))
175
- .with_js_error()?;
177
+ let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityTopUp(
178
+ self.0.clone(),
179
+ ))
180
+ .with_js_error()?;
176
181
  Ok(Buffer::from_bytes(&bytes))
177
182
  }
178
183
 
179
184
  #[wasm_bindgen(js_name=toJSON)]
180
185
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
181
- let object = super::to_object::to_object_struct(&self.0, Default::default());
186
+ let object = super::to_object::to_object_struct(&self.0, &Default::default());
182
187
  let js_object = js_sys::Object::new();
183
188
 
184
189
  js_sys::Reflect::set(
@@ -187,12 +192,6 @@ impl IdentityTopUpTransitionWasm {
187
192
  &object.transition_type.into(),
188
193
  )?;
189
194
 
190
- js_sys::Reflect::set(
191
- &js_object,
192
- &"protocolVersion".to_owned().into(),
193
- &object.protocol_version.into(),
194
- )?;
195
-
196
195
  if let Some(signature) = object.signature {
197
196
  let signature_value: JsValue = if signature.is_empty() {
198
197
  JsValue::undefined()
@@ -203,6 +202,12 @@ impl IdentityTopUpTransitionWasm {
203
202
  js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
204
203
  }
205
204
 
205
+ let version = match self.0 {
206
+ IdentityTopUpTransition::V0(_) => "0",
207
+ };
208
+
209
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
210
+
206
211
  let asset_lock_proof_json = match object.asset_lock_proof {
207
212
  AssetLockProof::Instant(instant_asset_lock_proof) => {
208
213
  InstantAssetLockProofWasm::from(instant_asset_lock_proof).to_json()?
@@ -230,8 +235,8 @@ impl IdentityTopUpTransitionWasm {
230
235
  }
231
236
 
232
237
  #[wasm_bindgen(js_name=getModifiedDataIds)]
233
- pub fn get_modified_data_ids(&self) -> Vec<JsValue> {
234
- let ids = self.0.get_modified_data_ids();
238
+ pub fn modified_data_ids(&self) -> Vec<JsValue> {
239
+ let ids = self.0.modified_data_ids();
235
240
 
236
241
  ids.into_iter()
237
242
  .map(|id| <IdentifierWrapper as std::convert::From<Identifier>>::from(id).into())
@@ -277,18 +282,26 @@ impl IdentityTopUpTransitionWasm {
277
282
  BlsAdapter(JsValue::undefined().into())
278
283
  };
279
284
 
280
- self.0
285
+ // TODO: not the best approach because it involves cloning the transition
286
+ // Probably it worth to return `sign_by_private_key` per state transition
287
+ let mut wrapper = StateTransition::IdentityTopUp(self.0.clone());
288
+ wrapper
281
289
  .sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
282
- .with_js_error()
290
+ .with_js_error()?;
291
+
292
+ self.0.set_signature(wrapper.signature().to_owned());
293
+
294
+ Ok(())
283
295
  }
284
296
 
285
297
  #[wasm_bindgen(js_name=getSignature)]
286
298
  pub fn get_signature(&self) -> Buffer {
287
- Buffer::from_bytes(self.0.get_signature().as_slice())
299
+ Buffer::from_bytes(self.0.signature().as_slice())
288
300
  }
289
301
 
290
302
  #[wasm_bindgen(js_name=setSignature)]
291
303
  pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
292
- self.0.signature = BinaryData::new(signature.unwrap_or(vec![]))
304
+ self.0
305
+ .set_signature(BinaryData::new(signature.unwrap_or(vec![])))
293
306
  }
294
307
  }
@@ -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,7 @@
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::state_transition::identity_topup_transition::accessors::IdentityTopUpTransitionAccessorsV0;
3
+ use dpp::state_transition::identity_topup_transition::IdentityTopUpTransition;
4
+ use dpp::{identifier::Identifier, state_transition::StateTransitionLike};
7
5
  use serde::Deserialize;
8
6
  use std::default::Default;
9
7
 
@@ -16,7 +14,6 @@ pub struct ToObjectOptions {
16
14
  #[derive(Default)]
17
15
  pub struct ToObject {
18
16
  pub transition_type: u8,
19
- pub protocol_version: u32,
20
17
  pub identity_id: Identifier,
21
18
  pub asset_lock_proof: AssetLockProof,
22
19
  pub signature: Option<Vec<u8>>,
@@ -24,18 +21,17 @@ pub struct ToObject {
24
21
 
25
22
  pub fn to_object_struct(
26
23
  transition: &IdentityTopUpTransition,
27
- options: ToObjectOptions,
24
+ options: &ToObjectOptions,
28
25
  ) -> ToObject {
29
26
  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(),
27
+ transition_type: transition.state_transition_type() as u8,
28
+ identity_id: *transition.identity_id(),
29
+ asset_lock_proof: transition.asset_lock_proof().to_owned(),
34
30
  signature: None,
35
31
  };
36
32
 
37
33
  if !options.skip_signature.unwrap_or(false) {
38
- to_object.signature = Some(transition.get_signature().to_vec());
34
+ to_object.signature = Some(transition.signature().to_vec());
39
35
  }
40
36
 
41
37
  to_object
@@ -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
19
  use crate::utils::{generic_of_js_val, WithJsError};
20
20
 
21
- use dpp::consensus::ConsensusError;
22
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
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;
23
25
  use dpp::identity::{KeyID, KeyType, TimestampMillis};
24
26
  use dpp::platform_value::string_encoding::Encoding;
25
- use dpp::platform_value::{string_encoding, BinaryData, Value};
27
+ use dpp::platform_value::{string_encoding, BinaryData, ReplacementType, Value};
26
28
  use dpp::prelude::Revision;
27
- use dpp::serialization_traits::PlatformSerializable;
28
- use dpp::state_transition::{StateTransition, 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)]
@@ -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()?;
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()))?;
81
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())?;
85
-
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)]
@@ -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(
@@ -287,15 +280,16 @@ impl IdentityUpdateTransitionWasm {
287
280
 
288
281
  #[wasm_bindgen(js_name=toBuffer)]
289
282
  pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
290
- let bytes =
291
- PlatformSerializable::serialize(&StateTransition::IdentityUpdate(self.0.clone()))
292
- .with_js_error()?;
283
+ let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityUpdate(
284
+ self.0.clone(),
285
+ ))
286
+ .with_js_error()?;
293
287
  Ok(Buffer::from_bytes(&bytes))
294
288
  }
295
289
 
296
290
  #[wasm_bindgen(js_name=toJSON)]
297
291
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
298
- 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());
299
293
  let js_object = js_sys::Object::new();
300
294
 
301
295
  js_sys::Reflect::set(
@@ -304,11 +298,11 @@ impl IdentityUpdateTransitionWasm {
304
298
  &object.transition_type.into(),
305
299
  )?;
306
300
 
307
- js_sys::Reflect::set(
308
- &js_object,
309
- &"protocolVersion".to_owned().into(),
310
- &object.protocol_version.into(),
311
- )?;
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())?;
312
306
 
313
307
  js_sys::Reflect::set(
314
308
  &js_object,
@@ -325,26 +319,18 @@ impl IdentityUpdateTransitionWasm {
325
319
 
326
320
  js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
327
321
 
328
- if let Some(signature_public_key_id) = object.signature_public_key_id {
329
- js_sys::Reflect::set(
330
- &js_object,
331
- &"signaturePublicKeyId".to_owned().into(),
332
- &signature_public_key_id.into(),
333
- )?;
334
- } else {
335
- js_sys::Reflect::set(
336
- &js_object,
337
- &"signaturePublicKeyId".to_owned().into(),
338
- &JsValue::undefined(),
339
- )?;
340
- }
322
+ js_sys::Reflect::set(
323
+ &js_object,
324
+ &"signaturePublicKeyId".to_owned().into(),
325
+ &object.signature_public_key_id.into(),
326
+ )?;
341
327
  }
342
328
 
343
329
  if let Some(timestamp) = object.public_keys_disabled_at {
344
330
  js_sys::Reflect::set(
345
331
  &js_object,
346
332
  &"publicKeysDisabledAt".to_owned().into(),
347
- &(timestamp as u32).into(),
333
+ &JsValue::from_f64(timestamp as f64),
348
334
  )?;
349
335
  }
350
336
 
@@ -386,8 +372,8 @@ impl IdentityUpdateTransitionWasm {
386
372
  }
387
373
 
388
374
  #[wasm_bindgen(js_name=getModifiedDataIds)]
389
- pub fn get_modified_data_ids(&self) -> Vec<JsValue> {
390
- 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();
391
377
 
392
378
  ids.into_iter()
393
379
  .map(|id| <IdentifierWrapper as std::convert::From<Identifier>>::from(id).into())
@@ -433,9 +419,16 @@ impl IdentityUpdateTransitionWasm {
433
419
  BlsAdapter(JsValue::undefined().into())
434
420
  };
435
421
 
436
- 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
437
426
  .sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
438
- .with_js_error()
427
+ .with_js_error()?;
428
+
429
+ self.0.set_signature(wrapper.signature().to_owned());
430
+
431
+ Ok(())
439
432
  }
440
433
 
441
434
  #[wasm_bindgen(js_name=setSignaturePublicKeyId)]
@@ -445,17 +438,18 @@ impl IdentityUpdateTransitionWasm {
445
438
 
446
439
  #[wasm_bindgen(js_name=getSignature)]
447
440
  pub fn get_signature(&self) -> Buffer {
448
- Buffer::from_bytes_owned(self.0.get_signature().to_vec())
441
+ Buffer::from_bytes_owned(self.0.signature().to_vec())
449
442
  }
450
443
 
451
444
  #[wasm_bindgen(js_name=setSignature)]
452
445
  pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
453
- self.0.signature = BinaryData::new(signature.unwrap_or(vec![]))
446
+ self.0
447
+ .set_signature(BinaryData::new(signature.unwrap_or(vec![])))
454
448
  }
455
449
 
456
450
  #[wasm_bindgen(js_name=getRevision)]
457
451
  pub fn get_revision(&self) -> u32 {
458
- self.0.get_revision() as u32
452
+ self.0.revision() as u32
459
453
  }
460
454
 
461
455
  #[wasm_bindgen(js_name=setRevision)]
@@ -471,13 +465,23 @@ impl IdentityUpdateTransitionWasm {
471
465
  bls: JsBlsAdapter,
472
466
  ) -> Result<(), JsValue> {
473
467
  let bls_adapter = BlsAdapter(bls);
474
- 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
475
471
  .sign(
476
472
  &identity_public_key.to_owned().into(),
477
473
  &private_key,
478
474
  &bls_adapter,
479
475
  )
480
- .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(())
481
485
  }
482
486
 
483
487
  #[wasm_bindgen(js_name=verifySignature)]
@@ -488,8 +492,7 @@ impl IdentityUpdateTransitionWasm {
488
492
  ) -> Result<bool, JsValue> {
489
493
  let bls_adapter = BlsAdapter(bls);
490
494
 
491
- let verification_result = self
492
- .0
495
+ let verification_result = StateTransition::IdentityUpdate(self.0.clone())
493
496
  .verify_signature(&identity_public_key.to_owned().into(), &bls_adapter);
494
497
 
495
498
  match verification_result {