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

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 +2120 -4338
  4. package/dist/wasm/wasm_dpp.js +17747 -2768
  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 +2120 -4338
  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 +29 -82
  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 +88 -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 +36 -74
  241. package/test/unit/identity/IdentityFactory.spec.js +55 -68
  242. package/test/unit/identity/IdentityPublicKey.spec.js +33 -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,38 +1,40 @@
1
- use crate::errors::protocol_error::from_protocol_error;
2
1
  use std::convert::TryFrom;
3
2
 
4
- use crate::{
5
- js_value_to_data_contract_value, DataContractCreateTransitionWasm,
6
- DataContractUpdateTransitionWasm, DataContractWasm,
7
- };
8
- use dpp::data_contract::{CreatedDataContract, DataContract, DataContractFacade};
3
+ use dpp::data_contract::created_data_contract::CreatedDataContract;
4
+ use dpp::data_contract::DataContract;
5
+ use dpp::data_contract::DataContractFacade;
9
6
  use dpp::identifier::Identifier;
10
- use dpp::version::ProtocolVersionValidator;
11
7
 
8
+ use crate::data_contract::state_transition::DataContractCreateTransitionWasm;
9
+ use crate::data_contract::state_transition::DataContractUpdateTransitionWasm;
10
+ use crate::data_contract::DataContractWasm;
12
11
  use crate::entropy_generator::ExternalEntropyGenerator;
13
- use crate::utils::{get_bool_from_options, IntoWasm, WithJsError, SKIP_VALIDATION_PROPERTY_NAME};
14
- use crate::validation::ValidationResultWasm;
12
+ use crate::errors::protocol_error::from_protocol_error;
13
+ use crate::utils::{
14
+ get_bool_from_options, IntoWasm, ToSerdeJSONExt, WithJsError, SKIP_VALIDATION_PROPERTY_NAME,
15
+ };
15
16
 
16
- use dpp::{Convertible, ProtocolError};
17
+ use dpp::ProtocolError;
17
18
  use std::sync::Arc;
18
19
 
20
+ use crate::identity::identity_facade::IdentityFacadeWasm;
21
+ use dpp::identity::IdentityFacade;
19
22
  use wasm_bindgen::prelude::*;
20
23
 
24
+ impl From<DataContractFacade> for DataContractFacadeWasm {
25
+ fn from(facade: DataContractFacade) -> Self {
26
+ Self(Arc::new(facade))
27
+ }
28
+ }
29
+
21
30
  #[wasm_bindgen(js_name=DataContractFacade)]
22
31
  #[derive(Clone)]
23
- pub struct DataContractFacadeWasm(Arc<DataContractFacade>);
32
+ pub struct DataContractFacadeWasm(pub(crate) Arc<DataContractFacade>);
24
33
 
25
34
  impl DataContractFacadeWasm {
26
- pub fn new(
27
- protocol_version: u32,
28
- protocol_version_validator: Arc<ProtocolVersionValidator>,
29
- entropy_generator: ExternalEntropyGenerator,
30
- ) -> Self {
31
- let inner = DataContractFacade::new_with_entropy_generator(
32
- protocol_version,
33
- protocol_version_validator,
34
- Box::new(entropy_generator),
35
- );
35
+ pub fn new(protocol_version: u32, entropy_generator: ExternalEntropyGenerator) -> Self {
36
+ let inner = DataContractFacade::new(protocol_version, Some(Box::new(entropy_generator)))
37
+ .expect("should create facade");
36
38
 
37
39
  Self(Arc::new(inner))
38
40
  }
@@ -81,10 +83,9 @@ impl DataContractFacadeWasm {
81
83
 
82
84
  self.0
83
85
  .create_from_object(
84
- js_value_to_data_contract_value(js_raw_data_contract)?,
86
+ js_raw_data_contract.with_serde_to_platform_value()?,
85
87
  skip_validation,
86
88
  )
87
- .await
88
89
  .map(DataContractWasm::from)
89
90
  .map_err(from_protocol_error)
90
91
  }
@@ -103,7 +104,6 @@ impl DataContractFacadeWasm {
103
104
  };
104
105
  self.0
105
106
  .create_from_buffer(buffer, skip_validation)
106
- .await
107
107
  .map(Into::into)
108
108
  .map_err(from_protocol_error)
109
109
  }
@@ -133,26 +133,4 @@ impl DataContractFacadeWasm {
133
133
  .map(Into::into)
134
134
  .map_err(from_protocol_error)
135
135
  }
136
-
137
- /// Validate Data Contract
138
- pub async fn validate(
139
- &self,
140
- js_raw_data_contract: JsValue,
141
- ) -> Result<ValidationResultWasm, JsValue> {
142
- let raw_data_contract = if let Ok(data_contract_ref) =
143
- js_raw_data_contract.to_wasm::<DataContractWasm>("DataContract")
144
- {
145
- let data_contract: DataContract = data_contract_ref.to_owned().into();
146
- data_contract.to_cleaned_object().with_js_error()?
147
- } else {
148
- js_value_to_data_contract_value(js_raw_data_contract)?
149
- };
150
-
151
- self.0
152
- .validate(raw_data_contract)
153
- .await
154
- .map(|v| v.map(|_| JsValue::UNDEFINED))
155
- .map(Into::into)
156
- .map_err(from_protocol_error)
157
- }
158
136
  }
@@ -6,6 +6,7 @@ use wasm_bindgen::prelude::*;
6
6
 
7
7
  pub use data_contract_generic_error::*;
8
8
  use dpp::data_contract::errors::DataContractError;
9
+ use dpp::ProtocolError;
9
10
  pub use invalid_data_contract::*;
10
11
 
11
12
  pub fn from_data_contract_to_js_error(e: DataContractError) -> JsValue {
@@ -8,7 +8,7 @@ pub mod errors;
8
8
  mod state_transition;
9
9
 
10
10
  mod data_contract_facade;
11
- mod index;
11
+ // mod index;
12
12
 
13
13
  pub use data_contract_facade::DataContractFacadeWasm;
14
- pub use index::*;
14
+ // pub use index::*;
@@ -1,33 +1,30 @@
1
- mod apply;
2
- mod validation;
1
+ // mod validation;
3
2
 
4
3
  use std::collections::HashMap;
5
4
 
6
- pub use apply::*;
7
- pub use validation::*;
8
-
9
- use dpp::consensus::signature::SignatureError;
10
- use dpp::consensus::ConsensusError;
11
- use dpp::serialization_traits::{PlatformDeserializable, PlatformSerializable};
12
- use dpp::state_transition::StateTransition;
13
- use dpp::{
14
- data_contract::state_transition::data_contract_create_transition::DataContractCreateTransition,
15
- platform_value,
16
- state_transition::{
17
- StateTransitionConvert, StateTransitionIdentitySigned, StateTransitionLike,
18
- },
19
- ProtocolError,
20
- };
21
- use serde::{Deserialize, Serialize};
5
+ // pub use validation::*;
6
+
7
+ use crate::errors::protocol_error::from_protocol_error;
8
+ use dpp::data_contract::JsonValue;
9
+ use dpp::errors::consensus::signature::SignatureError;
10
+ use dpp::errors::consensus::ConsensusError;
11
+ use dpp::platform_value::Value;
12
+ use dpp::serialization::{PlatformDeserializable, PlatformSerializable};
13
+ use dpp::state_transition::data_contract_create_transition::accessors::DataContractCreateTransitionAccessorsV0;
14
+ use dpp::state_transition::data_contract_create_transition::DataContractCreateTransition;
15
+ use dpp::state_transition::StateTransitionIdentitySigned;
16
+ use dpp::state_transition::{JsonStateTransitionSerializationOptions, StateTransitionJsonConvert};
17
+ use dpp::state_transition::{StateTransition, StateTransitionValueConvert};
18
+ use dpp::version::{PlatformVersion, TryIntoPlatformVersioned};
19
+ use dpp::{state_transition::StateTransitionLike, ProtocolError};
20
+ use serde::Serialize;
22
21
  use wasm_bindgen::prelude::*;
23
22
 
24
23
  use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
25
- use crate::errors::protocol_error::from_protocol_error;
26
- use crate::utils::WithJsError;
27
- use crate::{
28
- buffer::Buffer, identifier::IdentifierWrapper, with_js_error, DataContractParameters,
29
- DataContractWasm, IdentityPublicKeyWasm,
30
- };
24
+ use crate::data_contract::DataContractWasm;
25
+ use crate::identity::IdentityPublicKeyWasm;
26
+ use crate::utils::{ToSerdeJSONExt, WithJsError};
27
+ use crate::{buffer::Buffer, identifier::IdentifierWrapper, with_js_error};
31
28
 
32
29
  #[derive(Clone)]
33
30
  #[wasm_bindgen(js_name=DataContractCreateTransition)]
@@ -45,88 +42,77 @@ impl From<DataContractCreateTransitionWasm> for DataContractCreateTransition {
45
42
  }
46
43
  }
47
44
 
48
- #[derive(Debug, Serialize, Deserialize)]
49
- #[serde(rename_all = "camelCase")]
50
- struct DataContractCreateTransitionParameters {
51
- #[serde(skip_serializing_if = "Option::is_none", default)]
52
- data_contract: Option<DataContractParameters>,
53
- #[serde(skip_serializing_if = "Option::is_none", default)]
54
- entropy: Option<Vec<u8>>,
55
- #[serde(skip_serializing_if = "Option::is_none", default)]
56
- signature: Option<Vec<u8>>,
57
- #[serde(flatten)]
58
- extra: HashMap<String, serde_json::Value>,
59
- }
60
-
61
45
  #[wasm_bindgen(js_class=DataContractCreateTransition)]
62
46
  impl DataContractCreateTransitionWasm {
63
47
  #[wasm_bindgen(constructor)]
64
- pub fn new(raw_parameters: JsValue) -> Result<DataContractCreateTransitionWasm, JsValue> {
65
- let parameters: DataContractCreateTransitionParameters =
66
- with_js_error!(serde_wasm_bindgen::from_value(raw_parameters))?;
67
- let transition_object = platform_value::to_value(parameters)
68
- .map_err(ProtocolError::ValueError)
69
- .with_js_error()?;
70
- DataContractCreateTransition::from_raw_object(transition_object)
71
- .map(Into::into)
72
- .with_js_error()
48
+ pub fn new(value: JsValue) -> Result<DataContractCreateTransitionWasm, JsValue> {
49
+ let platform_value = PlatformVersion::first();
50
+
51
+ DataContractCreateTransition::from_object(
52
+ value.with_serde_to_platform_value()?,
53
+ platform_value,
54
+ )
55
+ .map(Into::into)
56
+ .with_js_error()
73
57
  }
74
58
 
75
59
  #[wasm_bindgen(js_name=getDataContract)]
76
60
  pub fn get_data_contract(&self) -> DataContractWasm {
77
- self.0.data_contract.clone().into()
61
+ DataContractWasm::try_from_serialization_format(self.0.data_contract().clone(), false)
62
+ .expect("should convert from serialziation format")
78
63
  }
79
64
 
80
- #[wasm_bindgen(js_name=setDataContractConfig)]
81
- pub fn set_data_contract_config(&mut self, config: JsValue) -> Result<(), JsValue> {
82
- let res = serde_wasm_bindgen::from_value(config);
83
- self.0.data_contract.config = res.unwrap();
84
- Ok(())
85
- }
86
-
87
- #[wasm_bindgen(js_name=getProtocolVersion)]
88
- pub fn get_protocol_version(&self) -> u32 {
89
- self.0.protocol_version
90
- }
65
+ // #[wasm_bindgen(js_name=setDataContractConfig)]
66
+ // pub fn set_data_contract_config(&mut self, config: JsValue) -> Result<(), JsValue> {
67
+ // let res = serde_wasm_bindgen::from_value(config);
68
+ // self.0.data_contract.config = res.unwrap();
69
+ // Ok(())
70
+ // }
91
71
 
92
72
  #[wasm_bindgen(js_name=getEntropy)]
93
73
  pub fn get_entropy(&self) -> Buffer {
94
- Buffer::from_bytes_owned(self.0.entropy.to_vec())
74
+ Buffer::from_bytes_owned(self.0.entropy().to_vec())
95
75
  }
96
76
 
97
77
  #[wasm_bindgen(js_name=getOwnerId)]
98
78
  pub fn get_owner_id(&self) -> IdentifierWrapper {
99
- (*self.0.get_owner_id()).into()
79
+ self.0.owner_id().into()
100
80
  }
101
81
 
102
82
  #[wasm_bindgen(js_name=getType)]
103
83
  pub fn get_type(&self) -> u32 {
104
- self.0.get_type() as u32
105
- }
106
-
107
- #[wasm_bindgen(js_name=toJSON)]
108
- pub fn to_json(&self, skip_signature: Option<bool>) -> Result<JsValue, JsValue> {
109
- let serializer = serde_wasm_bindgen::Serializer::json_compatible();
110
- Ok(self
111
- .0
112
- .to_json(skip_signature.unwrap_or(false))
113
- .with_js_error()?
114
- .serialize(&serializer)
115
- .expect("JSON is a valid object"))
116
- }
84
+ self.0.state_transition_type() as u32
85
+ }
86
+ //
87
+ // #[wasm_bindgen(js_name=toJSON)]
88
+ // pub fn to_json(&self, skip_signature: Option<bool>) -> Result<JsValue, JsValue> {
89
+ // let serializer = serde_wasm_bindgen::Serializer::json_compatible();
90
+ //
91
+ // let options = JsonStateTransitionSerializationOptions {
92
+ // skip_signature: skip_signature.unwrap_or(false),
93
+ // ..Default::default()
94
+ // };
95
+ //
96
+ // let platform_version = PlatformVersion::first();
97
+ //
98
+ // let json: Value = self.0.to_json(options).with_js_error()?.into();
99
+ //
100
+ // Ok(json.serialize(&serializer).expect("JSON is a valid object"))
101
+ // }
117
102
 
118
103
  #[wasm_bindgen(js_name=toBuffer)]
119
104
  pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
120
- let bytes =
121
- PlatformSerializable::serialize(&StateTransition::DataContractCreate(self.0.clone()))
122
- .with_js_error()?;
105
+ let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::DataContractCreate(
106
+ self.0.clone(),
107
+ ))
108
+ .with_js_error()?;
123
109
  Ok(Buffer::from_bytes(&bytes))
124
110
  }
125
111
 
126
112
  #[wasm_bindgen(js_name=fromBuffer)]
127
113
  pub fn from_buffer(buffer: Vec<u8>) -> Result<DataContractCreateTransitionWasm, JsValue> {
128
114
  let state_transition: StateTransition =
129
- PlatformDeserializable::deserialize(&buffer).with_js_error()?;
115
+ PlatformDeserializable::deserialize_from_bytes(&buffer).with_js_error()?;
130
116
  match state_transition {
131
117
  StateTransition::DataContractCreate(dct) => Ok(dct.into()),
132
118
  _ => Err(JsValue::from_str("Invalid state transition type")),
@@ -134,9 +120,9 @@ impl DataContractCreateTransitionWasm {
134
120
  }
135
121
 
136
122
  #[wasm_bindgen(js_name=getModifiedDataIds)]
137
- pub fn get_modified_data_ids(&self) -> Vec<JsValue> {
123
+ pub fn modified_data_ids(&self) -> Vec<JsValue> {
138
124
  self.0
139
- .get_modified_data_ids()
125
+ .modified_data_ids()
140
126
  .into_iter()
141
127
  .map(|identifier| Into::<IdentifierWrapper>::into(identifier).into())
142
128
  .collect()
@@ -163,9 +149,10 @@ impl DataContractCreateTransitionWasm {
163
149
  .0
164
150
  .to_cleaned_object(skip_signature.unwrap_or(false))
165
151
  .map_err(from_protocol_error)?;
166
- serde_object
167
- .serialize(&serde_wasm_bindgen::Serializer::json_compatible())
168
- .map_err(|e| e.into())
152
+
153
+ let serializer = serde_wasm_bindgen::Serializer::json_compatible();
154
+
155
+ serde_object.serialize(&serializer).map_err(|e| e.into())
169
156
  }
170
157
 
171
158
  #[wasm_bindgen]
@@ -176,14 +163,23 @@ impl DataContractCreateTransitionWasm {
176
163
  bls: JsBlsAdapter,
177
164
  ) -> Result<(), JsValue> {
178
165
  let bls_adapter = BlsAdapter(bls);
179
-
180
- self.0
166
+ // TODO: come up with a better way to set signature to the binding.
167
+ let mut state_transition = StateTransition::DataContractCreate(self.0.clone());
168
+ state_transition
181
169
  .sign(
182
170
  &identity_public_key.to_owned().into(),
183
171
  &private_key,
184
172
  &bls_adapter,
185
173
  )
186
- .with_js_error()
174
+ .with_js_error()?;
175
+
176
+ let signature = state_transition.signature().to_owned();
177
+ let signature_public_key_id = state_transition.signature_public_key_id().unwrap_or(0);
178
+
179
+ self.0.set_signature(signature);
180
+ self.0.set_signature_public_key_id(signature_public_key_id);
181
+
182
+ Ok(())
187
183
  }
188
184
 
189
185
  #[wasm_bindgen(js_name=verifySignature)]
@@ -194,8 +190,7 @@ impl DataContractCreateTransitionWasm {
194
190
  ) -> Result<bool, JsValue> {
195
191
  let bls_adapter = BlsAdapter(bls);
196
192
 
197
- let verification_result = self
198
- .0
193
+ let verification_result = StateTransition::DataContractCreate(self.0.clone())
199
194
  .verify_signature(&identity_public_key.to_owned().into(), &bls_adapter);
200
195
 
201
196
  match verification_result {
@@ -1,35 +1,34 @@
1
- mod apply;
2
- mod validation;
1
+ // mod validation;
3
2
 
4
3
  use std::collections::HashMap;
4
+ use std::hash::Hash;
5
5
 
6
- pub use apply::*;
7
- pub use validation::*;
6
+ // pub use validation::*;
8
7
 
9
8
  use dpp::consensus::ConsensusError;
10
- use dpp::serialization_traits::{PlatformDeserializable, PlatformSerializable};
11
- use dpp::state_transition::StateTransition;
9
+ use dpp::ed25519_dalek::ed25519::signature::SignerMut;
10
+ use dpp::serialization::{PlatformDeserializable, PlatformSerializable};
11
+ use dpp::state_transition::data_contract_update_transition::accessors::DataContractUpdateTransitionAccessorsV0;
12
+ use dpp::state_transition::data_contract_update_transition::DataContractUpdateTransition;
13
+ use dpp::state_transition::StateTransitionIdentitySigned;
14
+ use dpp::state_transition::{StateTransition, StateTransitionValueConvert};
15
+ use dpp::version::PlatformVersion;
12
16
  use dpp::{
13
- consensus::signature::SignatureError,
14
- data_contract::state_transition::data_contract_update_transition::DataContractUpdateTransition,
15
- platform_value,
16
- state_transition::{
17
- StateTransitionConvert, StateTransitionIdentitySigned, StateTransitionLike,
18
- },
17
+ consensus::signature::SignatureError, platform_value, state_transition::StateTransitionLike,
19
18
  ProtocolError,
20
19
  };
21
20
  use serde::{Deserialize, Serialize};
22
21
  use wasm_bindgen::prelude::*;
23
22
 
23
+ use crate::data_contract::DataContractWasm;
24
+ use crate::errors::protocol_error::from_protocol_error;
25
+ use crate::identity::IdentityPublicKeyWasm;
26
+ use crate::utils::ToSerdeJSONExt;
24
27
  use crate::{
25
28
  bls_adapter::{BlsAdapter, JsBlsAdapter},
26
29
  utils::WithJsError,
27
- IdentityPublicKeyWasm,
28
- };
29
- use crate::{
30
- buffer::Buffer, errors::protocol_error::from_protocol_error, identifier::IdentifierWrapper,
31
- with_js_error, DataContractParameters, DataContractWasm,
32
30
  };
31
+ use crate::{buffer::Buffer, identifier::IdentifierWrapper, with_js_error};
33
32
 
34
33
  #[derive(Clone)]
35
34
  #[wasm_bindgen(js_name=DataContractUpdateTransition)]
@@ -47,83 +46,69 @@ impl From<DataContractUpdateTransitionWasm> for DataContractUpdateTransition {
47
46
  }
48
47
  }
49
48
 
50
- #[derive(Debug, Serialize, Deserialize)]
51
- #[serde(rename_all = "camelCase")]
52
- struct DataContractUpdateTransitionParameters {
53
- #[serde(skip_serializing_if = "Option::is_none", default)]
54
- data_contract: Option<DataContractParameters>,
55
- #[serde(skip_serializing_if = "Option::is_none", default)]
56
- entropy: Option<Vec<u8>>,
57
- #[serde(skip_serializing_if = "Option::is_none", default)]
58
- signature: Option<Vec<u8>>,
59
- #[serde(flatten)]
60
- extra: HashMap<String, serde_json::Value>,
61
- }
62
-
63
49
  #[wasm_bindgen(js_class=DataContractUpdateTransition)]
64
50
  impl DataContractUpdateTransitionWasm {
65
51
  #[wasm_bindgen(constructor)]
66
52
  pub fn new(raw_parameters: JsValue) -> Result<DataContractUpdateTransitionWasm, JsValue> {
67
- let parameters: DataContractUpdateTransitionParameters =
68
- with_js_error!(serde_wasm_bindgen::from_value(raw_parameters))?;
69
- let raw_data_contract_update_transition = platform_value::to_value(parameters)
70
- .map_err(ProtocolError::ValueError)
71
- .with_js_error()?;
72
- DataContractUpdateTransition::from_raw_object(raw_data_contract_update_transition)
73
- .map(Into::into)
74
- .with_js_error()
53
+ let platform_version = PlatformVersion::first();
54
+
55
+ DataContractUpdateTransition::from_object(
56
+ raw_parameters.with_serde_to_platform_value()?,
57
+ platform_version,
58
+ )
59
+ .map(Into::into)
60
+ .with_js_error()
75
61
  }
76
62
 
77
63
  #[wasm_bindgen(js_name=getDataContract)]
78
64
  pub fn get_data_contract(&self) -> DataContractWasm {
79
- self.0.data_contract.clone().into()
80
- }
65
+ let platform_version = PlatformVersion::first();
81
66
 
82
- #[wasm_bindgen(js_name=setDataContractConfig)]
83
- pub fn set_data_contract_config(&mut self, config: JsValue) -> Result<(), JsValue> {
84
- let res = serde_wasm_bindgen::from_value(config);
85
- self.0.data_contract.config = res.unwrap();
86
- Ok(())
67
+ DataContractWasm::try_from_serialization_format(self.0.data_contract().clone(), false)
68
+ .expect("should create data contract from serialized format")
87
69
  }
88
70
 
89
- #[wasm_bindgen(js_name=getProtocolVersion)]
90
- pub fn get_protocol_version(&self) -> u32 {
91
- self.0.protocol_version
92
- }
71
+ // #[wasm_bindgen(js_name=setDataContractConfig)]
72
+ // pub fn set_data_contract_config(&mut self, config: JsValue) -> Result<(), JsValue> {
73
+ // let res = serde_wasm_bindgen::from_value(config);
74
+ // self.0.data_contract.config = res.unwrap();
75
+ // Ok(())
76
+ // }
93
77
 
94
78
  #[wasm_bindgen(js_name=getOwnerId)]
95
79
  pub fn get_owner_id(&self) -> IdentifierWrapper {
96
- (*self.0.get_owner_id()).into()
80
+ self.0.owner_id().into()
97
81
  }
98
82
 
99
83
  #[wasm_bindgen(js_name=getType)]
100
84
  pub fn get_type(&self) -> u32 {
101
- self.0.get_type() as u32
85
+ self.0.state_transition_type() as u32
102
86
  }
103
87
 
104
- #[wasm_bindgen(js_name=toJSON)]
105
- pub fn to_json(&self, skip_signature: Option<bool>) -> Result<JsValue, JsValue> {
106
- let serializer = serde_wasm_bindgen::Serializer::json_compatible();
107
- Ok(self
108
- .0
109
- .to_json(skip_signature.unwrap_or(false))
110
- .with_js_error()?
111
- .serialize(&serializer)
112
- .expect("JSON is a valid object"))
113
- }
88
+ // #[wasm_bindgen(js_name=toJSON)]
89
+ // pub fn to_json(&self, skip_signature: Option<bool>) -> Result<JsValue, JsValue> {
90
+ // let serializer = serde_wasm_bindgen::Serializer::json_compatible();
91
+ // Ok(self
92
+ // .0
93
+ // .to_json(skip_signature.unwrap_or(false))
94
+ // .with_js_error()?
95
+ // .serialize(&serializer)
96
+ // .expect("JSON is a valid object"))
97
+ // }
114
98
 
115
99
  #[wasm_bindgen(js_name=toBuffer)]
116
100
  pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
117
- let bytes =
118
- PlatformSerializable::serialize(&StateTransition::DataContractUpdate(self.0.clone()))
119
- .with_js_error()?;
101
+ let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::DataContractUpdate(
102
+ self.0.clone(),
103
+ ))
104
+ .with_js_error()?;
120
105
  Ok(Buffer::from_bytes(&bytes))
121
106
  }
122
107
 
123
108
  #[wasm_bindgen(js_name=fromBuffer)]
124
109
  pub fn from_buffer(buffer: Vec<u8>) -> Result<DataContractUpdateTransitionWasm, JsValue> {
125
110
  let state_transition: StateTransition =
126
- PlatformDeserializable::deserialize(&buffer).with_js_error()?;
111
+ PlatformDeserializable::deserialize_from_bytes(&buffer).with_js_error()?;
127
112
  match state_transition {
128
113
  StateTransition::DataContractUpdate(dct) => Ok(dct.into()),
129
114
  _ => Err(JsValue::from_str("Invalid state transition type")),
@@ -131,9 +116,9 @@ impl DataContractUpdateTransitionWasm {
131
116
  }
132
117
 
133
118
  #[wasm_bindgen(js_name=getModifiedDataIds)]
134
- pub fn get_modified_data_ids(&self) -> Vec<JsValue> {
119
+ pub fn modified_data_ids(&self) -> Vec<JsValue> {
135
120
  self.0
136
- .get_modified_data_ids()
121
+ .modified_data_ids()
137
122
  .into_iter()
138
123
  .map(|identifier| Into::<IdentifierWrapper>::into(identifier).into())
139
124
  .collect()
@@ -154,14 +139,14 @@ impl DataContractUpdateTransitionWasm {
154
139
  self.0.is_identity_state_transition()
155
140
  }
156
141
 
157
- #[wasm_bindgen(js_name=hash)]
158
- pub fn hash(&self, skip_signature: Option<bool>) -> Result<Buffer, JsValue> {
159
- let bytes = self
160
- .0
161
- .hash(skip_signature.unwrap_or(false))
162
- .with_js_error()?;
163
- Ok(Buffer::from_bytes(&bytes))
164
- }
142
+ // #[wasm_bindgen(js_name=hash)]
143
+ // pub fn hash(&self, skip_signature: Option<bool>) -> Result<Buffer, JsValue> {
144
+ // let bytes = self
145
+ // .0
146
+ // .hash(skip_signature.unwrap_or(false))
147
+ // .with_js_error()?;
148
+ // Ok(Buffer::from_bytes(&bytes))
149
+ // }
165
150
 
166
151
  #[wasm_bindgen(js_name=toObject)]
167
152
  pub fn to_object(&self, skip_signature: Option<bool>) -> Result<JsValue, JsValue> {
@@ -169,6 +154,7 @@ impl DataContractUpdateTransitionWasm {
169
154
  .0
170
155
  .to_cleaned_object(skip_signature.unwrap_or(false))
171
156
  .map_err(from_protocol_error)?;
157
+
172
158
  serde_object
173
159
  .serialize(&serde_wasm_bindgen::Serializer::json_compatible())
174
160
  .map_err(|e| e.into())
@@ -182,14 +168,23 @@ impl DataContractUpdateTransitionWasm {
182
168
  bls: JsBlsAdapter,
183
169
  ) -> Result<(), JsValue> {
184
170
  let bls_adapter = BlsAdapter(bls);
185
-
186
- self.0
171
+ // TODO: come up with a better way to set signature to the binding.
172
+ let mut state_transition = StateTransition::DataContractUpdate(self.0.clone());
173
+ state_transition
187
174
  .sign(
188
175
  &identity_public_key.to_owned().into(),
189
176
  &private_key,
190
177
  &bls_adapter,
191
178
  )
192
- .with_js_error()
179
+ .with_js_error()?;
180
+
181
+ let signature = state_transition.signature().to_owned();
182
+ let signature_public_key_id = state_transition.signature_public_key_id().unwrap_or(0);
183
+
184
+ self.0.set_signature(signature);
185
+ self.0.set_signature_public_key_id(signature_public_key_id);
186
+
187
+ Ok(())
193
188
  }
194
189
 
195
190
  #[wasm_bindgen(js_name=verifySignature)]
@@ -200,8 +195,7 @@ impl DataContractUpdateTransitionWasm {
200
195
  ) -> Result<bool, JsValue> {
201
196
  let bls_adapter = BlsAdapter(bls);
202
197
 
203
- let verification_result = self
204
- .0
198
+ let verification_result = StateTransition::DataContractUpdate(self.0.clone())
205
199
  .verify_signature(&identity_public_key.to_owned().into(), &bls_adapter);
206
200
 
207
201
  match verification_result {