@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,22 +1,27 @@
1
- use crate::utils::{ToSerdeJSONExt, WithJsError};
2
-
1
+ use crate::utils::WithJsError;
2
+ use dpp::platform_value::{ReplacementType, Value};
3
+ use serde_json::Value as JsonValue;
3
4
  use std::convert::TryInto;
4
5
  use std::default::Default;
5
6
 
7
+ use dpp::version::PlatformVersion;
6
8
  use wasm_bindgen::prelude::*;
7
9
 
8
10
  use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
11
+ use crate::errors::from_dpp_err;
9
12
  use crate::identifier::IdentifierWrapper;
10
- use crate::{buffer::Buffer, errors::RustConversionError, with_js_error, IdentityPublicKeyWasm};
13
+ use crate::identity::IdentityPublicKeyWasm;
14
+ use crate::{buffer::Buffer, utils, with_js_error};
11
15
  use dpp::identifier::Identifier;
12
- use dpp::identity::state_transition::identity_credit_transfer_transition::IdentityCreditTransferTransition;
13
16
  use dpp::identity::KeyType;
14
17
  use dpp::platform_value::string_encoding::Encoding;
15
18
  use dpp::platform_value::{string_encoding, BinaryData};
16
- use dpp::serialization_traits::PlatformSerializable;
19
+ use dpp::serialization::{PlatformSerializable, ValueConvertible};
20
+ use dpp::state_transition::identity_credit_transfer_transition::accessors::IdentityCreditTransferTransitionAccessorsV0;
21
+ use dpp::state_transition::identity_credit_transfer_transition::fields::IDENTIFIER_FIELDS;
22
+ use dpp::state_transition::identity_credit_transfer_transition::IdentityCreditTransferTransition;
17
23
  use dpp::state_transition::StateTransitionLike;
18
24
  use dpp::state_transition::{StateTransition, StateTransitionIdentitySigned};
19
-
20
25
  #[wasm_bindgen(js_name=IdentityCreditTransferTransition)]
21
26
  #[derive(Clone)]
22
27
  pub struct IdentityCreditTransferTransitionWasm(IdentityCreditTransferTransition);
@@ -36,19 +41,18 @@ impl From<IdentityCreditTransferTransitionWasm> for IdentityCreditTransferTransi
36
41
  #[wasm_bindgen(js_class = IdentityCreditTransferTransition)]
37
42
  impl IdentityCreditTransferTransitionWasm {
38
43
  #[wasm_bindgen(constructor)]
39
- pub fn new(raw_parameters: JsValue) -> Result<IdentityCreditTransferTransitionWasm, JsValue> {
40
- let raw_state_transition = raw_parameters.with_serde_to_platform_value()?;
44
+ pub fn new(platform_version: u32) -> Result<IdentityCreditTransferTransitionWasm, JsValue> {
45
+ let platform_version =
46
+ &PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
41
47
 
42
- let identity_credit_transfer_transition =
43
- IdentityCreditTransferTransition::from_raw_object(raw_state_transition)
44
- .map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
45
-
46
- Ok(identity_credit_transfer_transition.into())
48
+ IdentityCreditTransferTransition::default_versioned(&platform_version)
49
+ .map(Into::into)
50
+ .map_err(from_dpp_err)
47
51
  }
48
52
 
49
53
  #[wasm_bindgen(js_name=getType)]
50
54
  pub fn get_type(&self) -> u8 {
51
- IdentityCreditTransferTransition::get_type() as u8
55
+ self.0.state_transition_type() as u8
52
56
  }
53
57
 
54
58
  #[wasm_bindgen(getter, js_name=identityId)]
@@ -63,22 +67,32 @@ impl IdentityCreditTransferTransitionWasm {
63
67
 
64
68
  #[wasm_bindgen(getter, js_name=amount)]
65
69
  pub fn amount(&self) -> u64 {
66
- self.0.get_amount()
70
+ self.0.amount()
67
71
  }
68
72
 
69
73
  #[wasm_bindgen(js_name=getIdentityId)]
70
74
  pub fn get_identity_id(&self) -> IdentifierWrapper {
71
- (*self.0.get_identity_id()).into()
75
+ self.0.identity_id().into()
72
76
  }
73
77
 
74
78
  #[wasm_bindgen(js_name=getRecipientId)]
75
79
  pub fn get_recipient_id(&self) -> IdentifierWrapper {
76
- (*self.0.get_recipient_id()).into()
80
+ self.0.recipient_id().into()
81
+ }
82
+
83
+ #[wasm_bindgen(js_name=setIdentityId)]
84
+ pub fn set_identity_id(&mut self, identity_id: &IdentifierWrapper) {
85
+ self.0.set_identity_id(identity_id.into());
86
+ }
87
+
88
+ #[wasm_bindgen(js_name=setRecipientId)]
89
+ pub fn set_recipient_id(&mut self, recipient_id: &IdentifierWrapper) {
90
+ self.0.set_recipient_id(recipient_id.into());
77
91
  }
78
92
 
79
93
  #[wasm_bindgen(js_name=getAmount)]
80
94
  pub fn get_amount(&self) -> f64 {
81
- self.0.get_amount() as f64
95
+ self.0.amount() as f64
82
96
  }
83
97
 
84
98
  #[wasm_bindgen(js_name=setAmount)]
@@ -103,11 +117,11 @@ impl IdentityCreditTransferTransitionWasm {
103
117
  &object.transition_type.into(),
104
118
  )?;
105
119
 
106
- js_sys::Reflect::set(
107
- &js_object,
108
- &"protocolVersion".to_owned().into(),
109
- &object.protocol_version.into(),
110
- )?;
120
+ let version = match self.0 {
121
+ IdentityCreditTransferTransition::V0(_) => "0",
122
+ };
123
+
124
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
111
125
 
112
126
  if let Some(signature) = object.signature {
113
127
  let signature_value: JsValue = if signature.is_empty() {
@@ -156,9 +170,9 @@ impl IdentityCreditTransferTransitionWasm {
156
170
 
157
171
  #[wasm_bindgen(js_name=toBuffer)]
158
172
  pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
159
- let bytes = PlatformSerializable::serialize(&StateTransition::IdentityCreditTransfer(
160
- self.0.clone(),
161
- ))
173
+ let bytes = PlatformSerializable::serialize_to_bytes(
174
+ &StateTransition::IdentityCreditTransfer(self.0.clone()),
175
+ )
162
176
  .with_js_error()?;
163
177
  Ok(Buffer::from_bytes(&bytes))
164
178
  }
@@ -174,11 +188,11 @@ impl IdentityCreditTransferTransitionWasm {
174
188
  &object.transition_type.into(),
175
189
  )?;
176
190
 
177
- js_sys::Reflect::set(
178
- &js_object,
179
- &"protocolVersion".to_owned().into(),
180
- &object.protocol_version.into(),
181
- )?;
191
+ let version = match self.0 {
192
+ IdentityCreditTransferTransition::V0(_) => "0",
193
+ };
194
+
195
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
182
196
 
183
197
  if let Some(signature) = object.signature {
184
198
  let signature_value: JsValue = if signature.is_empty() {
@@ -230,8 +244,8 @@ impl IdentityCreditTransferTransitionWasm {
230
244
  }
231
245
 
232
246
  #[wasm_bindgen(js_name=getModifiedDataIds)]
233
- pub fn get_modified_data_ids(&self) -> Vec<JsValue> {
234
- let ids = self.0.get_modified_data_ids();
247
+ pub fn modified_data_ids(&self) -> Vec<JsValue> {
248
+ let ids = self.0.modified_data_ids();
235
249
 
236
250
  ids.into_iter()
237
251
  .map(|id| <IdentifierWrapper as std::convert::From<Identifier>>::from(id).into())
@@ -277,19 +291,27 @@ impl IdentityCreditTransferTransitionWasm {
277
291
  BlsAdapter(JsValue::undefined().into())
278
292
  };
279
293
 
280
- self.0
294
+ // TODO: not the best approach because it involves cloning the transition
295
+ // Probably it worth to return `sign_by_private_key` per state transition
296
+ let mut wrapper = StateTransition::IdentityCreditTransfer(self.0.clone());
297
+ wrapper
281
298
  .sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
282
- .with_js_error()
299
+ .with_js_error()?;
300
+
301
+ self.0.set_signature(wrapper.signature().to_owned());
302
+
303
+ Ok(())
283
304
  }
284
305
 
285
306
  #[wasm_bindgen(js_name=getSignature)]
286
307
  pub fn get_signature(&self) -> Buffer {
287
- Buffer::from_bytes(self.0.get_signature().as_slice())
308
+ Buffer::from_bytes(self.0.signature().as_slice())
288
309
  }
289
310
 
290
311
  #[wasm_bindgen(js_name=setSignature)]
291
312
  pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
292
- self.0.signature = BinaryData::new(signature.unwrap_or(vec![]))
313
+ self.0
314
+ .set_signature(BinaryData::new(signature.unwrap_or(vec![])))
293
315
  }
294
316
 
295
317
  #[wasm_bindgen]
@@ -300,12 +322,23 @@ impl IdentityCreditTransferTransitionWasm {
300
322
  bls: JsBlsAdapter,
301
323
  ) -> Result<(), JsValue> {
302
324
  let bls_adapter = BlsAdapter(bls);
303
- self.0
325
+
326
+ // TODO: come up with a better way to set signature to the binding.
327
+ let mut state_transition = StateTransition::IdentityCreditTransfer(self.0.clone());
328
+ state_transition
304
329
  .sign(
305
330
  &identity_public_key.to_owned().into(),
306
331
  &private_key,
307
332
  &bls_adapter,
308
333
  )
309
- .with_js_error()
334
+ .with_js_error()?;
335
+
336
+ let signature = state_transition.signature().to_owned();
337
+ let signature_public_key_id = state_transition.signature_public_key_id().unwrap_or(0);
338
+
339
+ self.0.set_signature(signature);
340
+ self.0.set_signature_public_key_id(signature_public_key_id);
341
+
342
+ Ok(())
310
343
  }
311
344
  }
@@ -1,17 +1,22 @@
1
1
  //todo: move this file to transition
2
2
  use dpp::dashcore::anyhow;
3
- use dpp::document::document_transition::document_base_transition::JsonValue;
4
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
5
- use dpp::platform_value::BinaryData;
6
- use dpp::Convertible;
3
+ use dpp::platform_value::{BinaryData, ReplacementType, Value};
4
+ use dpp::serialization::ValueConvertible;
5
+ use dpp::state_transition::public_key_in_creation::accessors::{
6
+ IdentityPublicKeyInCreationV0Getters, IdentityPublicKeyInCreationV0Setters,
7
+ };
8
+ use dpp::state_transition::public_key_in_creation::v0::BINARY_DATA_FIELDS;
9
+ use dpp::state_transition::public_key_in_creation::IdentityPublicKeyInCreation;
10
+ use js_sys::Reflect::delete_property;
7
11
  pub use serde::{Deserialize, Serialize};
8
- use std::convert::{TryFrom, TryInto};
12
+ use serde_json::Value as JsonValue;
13
+ use std::convert::TryInto;
9
14
  use wasm_bindgen::prelude::*;
10
15
 
11
16
  use crate::errors::from_dpp_err;
12
17
  use crate::utils::WithJsError;
13
18
  use crate::{buffer::Buffer, utils, with_js_error};
14
-
19
+ use dpp::version::PlatformVersion;
15
20
  #[derive(Deserialize, Default)]
16
21
  #[serde(rename_all = "camelCase")]
17
22
  struct ToObjectOptions {
@@ -25,93 +30,99 @@ pub struct IdentityPublicKeyWithWitnessWasm(IdentityPublicKeyInCreation);
25
30
  #[wasm_bindgen(js_class = IdentityPublicKeyWithWitness)]
26
31
  impl IdentityPublicKeyWithWitnessWasm {
27
32
  #[wasm_bindgen(constructor)]
28
- pub fn new(raw_public_key: JsValue) -> Result<IdentityPublicKeyWithWitnessWasm, JsValue> {
29
- let data_string = utils::stringify(&raw_public_key)?;
30
- let value: JsonValue = serde_json::from_str(&data_string).map_err(|e| e.to_string())?;
31
-
32
- let pk = IdentityPublicKeyInCreation::from_json_object(value).with_js_error()?;
33
+ pub fn new(platform_version: u32) -> Result<IdentityPublicKeyWithWitnessWasm, JsValue> {
34
+ let platform_version =
35
+ &PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
33
36
 
34
- Ok(IdentityPublicKeyWithWitnessWasm(pk))
37
+ IdentityPublicKeyInCreation::default_versioned(&platform_version)
38
+ .map(Into::into)
39
+ .map_err(from_dpp_err)
35
40
  }
36
41
 
37
42
  #[wasm_bindgen(js_name=getId)]
38
43
  pub fn get_id(&self) -> u32 {
39
- self.0.id
44
+ self.0.id()
40
45
  }
41
46
 
42
47
  #[wasm_bindgen(js_name=setId)]
43
48
  pub fn set_id(&mut self, id: u32) {
44
- self.0.id = id;
49
+ self.0.set_id(id);
45
50
  }
46
51
 
47
52
  #[wasm_bindgen(js_name=getType)]
48
53
  pub fn get_type(&self) -> u8 {
49
- self.0.key_type as u8
54
+ self.0.key_type() as u8
50
55
  }
51
56
 
52
57
  #[wasm_bindgen(js_name=setType)]
53
58
  pub fn set_type(&mut self, key_type: u8) -> Result<(), JsValue> {
54
- self.0.key_type = key_type
55
- .try_into()
56
- .map_err(|e: anyhow::Error| e.to_string())?;
59
+ self.0.set_type(
60
+ key_type
61
+ .try_into()
62
+ .map_err(|e: anyhow::Error| e.to_string())?,
63
+ );
57
64
  Ok(())
58
65
  }
59
66
 
60
67
  #[wasm_bindgen(js_name=setData)]
61
68
  pub fn set_data(&mut self, data: Vec<u8>) -> Result<(), JsValue> {
62
- self.0.data = BinaryData::new(data);
69
+ self.0.set_data(BinaryData::new(data));
63
70
  Ok(())
64
71
  }
65
72
 
66
73
  #[wasm_bindgen(js_name=getData)]
67
74
  pub fn get_data(&self) -> Buffer {
68
- Buffer::from_bytes_owned(self.0.data.to_vec())
75
+ Buffer::from_bytes_owned(self.0.data().to_vec())
69
76
  }
70
77
 
71
78
  #[wasm_bindgen(js_name=setPurpose)]
72
79
  pub fn set_purpose(&mut self, purpose: u8) -> Result<(), JsValue> {
73
- self.0.purpose = purpose
74
- .try_into()
75
- .map_err(|e: anyhow::Error| e.to_string())?;
80
+ self.0.set_purpose(
81
+ purpose
82
+ .try_into()
83
+ .map_err(|e: anyhow::Error| e.to_string())?,
84
+ );
76
85
  Ok(())
77
86
  }
78
87
 
79
88
  #[wasm_bindgen(js_name=getPurpose)]
80
89
  pub fn get_purpose(&self) -> u8 {
81
- self.0.purpose as u8
90
+ self.0.purpose() as u8
82
91
  }
83
92
 
84
93
  #[wasm_bindgen(js_name=setSecurityLevel)]
85
94
  pub fn set_security_level(&mut self, security_level: u8) -> Result<(), JsValue> {
86
- self.0.security_level = security_level
87
- .try_into()
88
- .map_err(|e: anyhow::Error| e.to_string())?;
95
+ self.0.set_security_level(
96
+ security_level
97
+ .try_into()
98
+ .map_err(|e: anyhow::Error| e.to_string())?,
99
+ );
89
100
  Ok(())
90
101
  }
91
102
 
92
103
  #[wasm_bindgen(js_name=getSecurityLevel)]
93
104
  pub fn get_security_level(&self) -> u8 {
94
- self.0.security_level as u8
105
+ self.0.security_level() as u8
95
106
  }
96
107
 
97
108
  #[wasm_bindgen(js_name=setReadOnly)]
98
109
  pub fn set_read_only(&mut self, read_only: bool) {
99
- self.0.read_only = read_only;
110
+ self.0.set_read_only(read_only);
100
111
  }
101
112
 
102
113
  #[wasm_bindgen(js_name=isReadOnly)]
103
114
  pub fn is_read_only(&self) -> bool {
104
- self.0.read_only
115
+ self.0.read_only()
105
116
  }
106
117
 
107
118
  #[wasm_bindgen(js_name=setSignature)]
108
119
  pub fn set_signature(&mut self, signature: Vec<u8>) {
109
- self.0.signature = BinaryData::new(signature)
120
+ self.0.set_signature(BinaryData::new(signature))
110
121
  }
111
122
 
112
123
  #[wasm_bindgen(js_name=getSignature)]
113
124
  pub fn get_signature(&self) -> Vec<u8> {
114
- self.0.signature.to_vec()
125
+ self.0.signature().to_vec()
115
126
  }
116
127
 
117
128
  #[wasm_bindgen(js_name=hash)]
@@ -119,35 +130,33 @@ impl IdentityPublicKeyWithWitnessWasm {
119
130
  self.0.hash_as_vec().with_js_error()
120
131
  }
121
132
 
122
- #[wasm_bindgen(js_name=isMaster)]
123
- pub fn is_master(&self) -> bool {
124
- self.0.is_master()
125
- }
126
-
127
133
  #[wasm_bindgen(js_name=toJSON)]
128
134
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
129
- let val = self.0.to_json().map_err(from_dpp_err)?;
130
- let json = val.to_string();
135
+ let mut value = self.0.to_object().map_err(from_dpp_err)?;
136
+
137
+ value
138
+ .replace_at_paths(
139
+ dpp::identity::identity_public_key::BINARY_DATA_FIELDS,
140
+ ReplacementType::TextBase64,
141
+ )
142
+ .map_err(|e| e.to_string())?;
143
+
144
+ let json = value
145
+ .try_into_validating_json()
146
+ .map_err(|e| e.to_string())?
147
+ .to_string();
148
+
131
149
  js_sys::JSON::parse(&json)
132
150
  }
133
151
 
134
152
  #[wasm_bindgen(js_name=toObject)]
135
- pub fn to_object(&self, options: JsValue) -> Result<JsValue, JsValue> {
136
- let opts: ToObjectOptions = if options.is_object() {
137
- with_js_error!(serde_wasm_bindgen::from_value(options))?
138
- } else {
139
- Default::default()
140
- };
141
-
142
- let val = self
143
- .0
144
- .to_raw_json_object(opts.skip_signature.unwrap_or(false))
145
- .map_err(|e| from_dpp_err(e.into()))?;
153
+ pub fn to_object(&self, skip_signature: bool) -> Result<JsValue, JsValue> {
154
+ let value = self.0.to_object().map_err(from_dpp_err)?;
146
155
 
147
- let data_buffer = Buffer::from_bytes(self.0.data.as_slice());
156
+ let data_buffer = Buffer::from_bytes(self.0.data().as_slice());
148
157
 
149
- let json = val.to_string();
150
- let js_object = js_sys::JSON::parse(&json)?;
158
+ let serializer = serde_wasm_bindgen::Serializer::json_compatible();
159
+ let js_object = with_js_error!(value.serialize(&serializer))?;
151
160
 
152
161
  js_sys::Reflect::set(
153
162
  &js_object,
@@ -161,12 +170,17 @@ impl IdentityPublicKeyWithWitnessWasm {
161
170
  &JsValue::from(data_buffer),
162
171
  )?;
163
172
 
164
- if !opts.skip_signature.unwrap_or(false) && !self.0.signature.is_empty() {
173
+ if !skip_signature {
174
+ let signature_buffer = Buffer::from_bytes(self.0.signature().as_slice());
165
175
  js_sys::Reflect::set(
166
176
  &js_object,
167
177
  &JsValue::from_str("signature"),
168
- &JsValue::from(Buffer::from_bytes_owned(self.0.signature.to_vec())),
178
+ &JsValue::from(signature_buffer),
169
179
  )?;
180
+ } else {
181
+ let js_object = js_sys::Object::from(js_object);
182
+ delete_property(&js_object, &JsValue::from_str("signature"))?;
183
+ return Ok(js_object.into());
170
184
  }
171
185
 
172
186
  Ok(js_object)
@@ -193,17 +207,18 @@ impl From<IdentityPublicKeyInCreation> for IdentityPublicKeyWithWitnessWasm {
193
207
  }
194
208
  }
195
209
 
196
- impl TryFrom<JsValue> for IdentityPublicKeyWithWitnessWasm {
197
- type Error = JsValue;
198
-
199
- fn try_from(value: JsValue) -> Result<Self, Self::Error> {
200
- let str = String::from(js_sys::JSON::stringify(&value)?);
201
- let val = serde_json::from_str(&str).map_err(|e| from_dpp_err(e.into()))?;
202
- Ok(Self(
203
- IdentityPublicKeyInCreation::from_raw_json_object(val).with_js_error()?,
204
- ))
205
- }
206
- }
210
+ // TODO(versioning): restore
211
+ // impl TryFrom<JsValue> for IdentityPublicKeyWithWitnessWasm {
212
+ // type Error = JsValue;
213
+ //
214
+ // fn try_from(value: JsValue) -> Result<Self, Self::Error> {
215
+ // let str = String::from(js_sys::JSON::stringify(&value)?);
216
+ // let val = serde_json::from_str(&str).map_err(|e| from_dpp_err(e.into()))?;
217
+ // Ok(Self(
218
+ // IdentityPublicKeyInCreation::from_raw_json_object(val).with_js_error()?,
219
+ // ))
220
+ // }
221
+ // }
207
222
 
208
223
  impl From<IdentityPublicKeyWithWitnessWasm> for IdentityPublicKeyInCreation {
209
224
  fn from(pk: IdentityPublicKeyWithWitnessWasm) -> Self {