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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/Cargo.toml +33 -7
  2. package/README.md +11 -6
  3. package/dist/errors/patchConsensusErrors.js +94 -115
  4. package/dist/wasm/wasm_dpp.d.ts +2213 -4113
  5. package/dist/wasm/wasm_dpp.js +17748 -2639
  6. package/dist/wasm/wasm_dpp_bg.js +1 -1
  7. package/lib/dpp.ts +1 -1
  8. package/lib/errors/patchConsensusErrors.ts +94 -93
  9. package/lib/test/bootstrap.js +5 -0
  10. package/lib/test/fixtures/getDataContractFixture.js +11 -5
  11. package/lib/test/fixtures/getDocumentsFixture.js +9 -5
  12. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
  13. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
  14. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  15. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  16. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  17. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  18. package/lib/test/fixtures/js/generateRandomIdentifier.js +1 -0
  19. package/lib/test/fixtures/js/getChainAssetLockProofFixture.js +1 -0
  20. package/lib/test/fixtures/js/getDataContractFixture.js +1 -0
  21. package/lib/test/fixtures/js/getDocumentTransitionsFixture.js +1 -0
  22. package/lib/test/fixtures/js/getDocumentsFixture.js +1 -0
  23. package/lib/test/fixtures/js/getInstantAssetLockProofFixture.js +1 -0
  24. package/lib/test/mocks/createStateRepositoryMock.js +1 -0
  25. package/lib/wasm/wasm_dpp.d.ts +2213 -4113
  26. package/package.json +6 -6
  27. package/scripts/build-wasm.sh +30 -29
  28. package/src/bls_adapter.rs +1 -1
  29. package/src/dash_platform_protocol.rs +173 -196
  30. package/src/data_contract/data_contract.rs +309 -199
  31. package/src/data_contract/data_contract_facade.rs +28 -47
  32. package/src/data_contract/errors/mod.rs +1 -0
  33. package/src/data_contract/mod.rs +2 -2
  34. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +92 -79
  35. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
  36. package/src/data_contract_factory/data_contract_factory.rs +43 -83
  37. package/src/document/document_facade.rs +81 -76
  38. package/src/document/errors/document_already_exists_error.rs +6 -6
  39. package/src/document/errors/document_no_revision_error.rs +1 -0
  40. package/src/document/errors/document_not_provided_error.rs +6 -6
  41. package/src/document/errors/invalid_document_action_error.rs +11 -7
  42. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  43. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  44. package/src/document/errors/mod.rs +5 -0
  45. package/src/document/errors/revision_absent_error.rs +6 -6
  46. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  47. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  48. package/src/document/extended_document.rs +76 -76
  49. package/src/document/factory.rs +140 -119
  50. package/src/document/generate_document_id.rs +2 -2
  51. package/src/document/mod.rs +164 -150
  52. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
  53. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  54. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  55. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
  56. package/src/document/state_transition/document_batch_transition/mod.rs +232 -222
  57. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
  58. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
  59. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
  60. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
  61. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
  62. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
  63. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
  64. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
  65. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
  66. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
  67. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
  68. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
  69. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
  70. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
  71. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
  72. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
  73. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
  74. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
  75. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
  76. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
  77. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
  78. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
  79. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
  80. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
  81. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
  82. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
  83. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
  84. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
  85. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
  86. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
  87. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
  88. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
  89. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
  90. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
  91. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
  92. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
  93. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
  94. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -9
  95. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
  96. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
  97. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
  98. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
  99. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
  100. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
  101. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
  102. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
  103. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
  104. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
  105. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
  106. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
  107. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
  108. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
  109. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
  110. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
  111. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
  112. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
  113. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
  114. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
  115. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
  116. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
  117. package/src/errors/consensus/basic/json_schema_error.rs +1 -9
  118. package/src/errors/consensus/basic/mod.rs +2 -0
  119. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -9
  120. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  121. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -9
  122. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
  123. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
  124. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
  125. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  126. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
  127. package/src/errors/consensus/consensus_error.rs +44 -21
  128. package/src/errors/consensus/deserialize.rs +2 -1
  129. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
  130. package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
  131. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
  132. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
  133. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
  134. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
  135. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
  136. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
  137. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
  138. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
  139. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
  140. package/src/errors/consensus/state/data_contract/mod.rs +7 -1
  141. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
  142. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
  143. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
  144. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
  145. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
  146. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
  147. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
  148. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
  149. package/src/errors/consensus/state/document/mod.rs +2 -0
  150. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
  151. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
  152. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
  153. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
  154. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
  155. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
  156. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
  157. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
  158. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
  159. package/src/errors/consensus/value_error.rs +1 -9
  160. package/src/errors/from.rs +12 -8
  161. package/src/errors/mod.rs +7 -7
  162. package/src/errors/value_error.rs +5 -0
  163. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
  164. package/src/identity/factory_utils.rs +13 -13
  165. package/src/identity/identity.rs +275 -0
  166. package/src/identity/identity_facade.rs +87 -70
  167. package/src/identity/identity_factory.rs +74 -54
  168. package/src/identity/identity_public_key/mod.rs +87 -64
  169. package/src/identity/mod.rs +25 -247
  170. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  171. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  172. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +2 -2
  173. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  174. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  175. package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
  176. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +71 -65
  177. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  178. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  179. package/src/identity/state_transition/identity_create_transition/to_object.rs +10 -12
  180. package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
  181. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
  182. package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
  183. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
  184. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
  185. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
  186. package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
  187. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +67 -62
  188. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  189. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  190. package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
  191. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  192. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
  193. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  194. package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
  195. package/src/identity/state_transition/mod.rs +5 -2
  196. package/src/identity/state_transition/transition_types.rs +34 -0
  197. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  198. package/src/lib.rs +10 -11
  199. package/src/metadata.rs +3 -3
  200. package/src/protocol_version.rs +7 -0
  201. package/src/state_transition/conversion.rs +11 -1
  202. package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
  203. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  204. package/src/state_transition/mod.rs +137 -139
  205. package/src/state_transition/state_transition_facade.rs +11 -11
  206. package/src/state_transition/state_transition_factory.rs +142 -153
  207. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  208. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
  209. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  210. package/src/utils.rs +7 -8
  211. package/src/validation/validation_result.rs +1 -0
  212. package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
  213. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
  214. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
  215. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
  216. package/test/integration/document/Document.spec.js +3 -3
  217. package/test/integration/document/DocumentFacade.spec.js +39 -38
  218. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +6 -7
  219. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
  220. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +2 -2
  221. package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
  222. package/test/integration/identity/IdentityFacade.spec.js +33 -62
  223. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
  224. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
  225. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  226. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
  227. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  228. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
  229. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
  230. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +4 -5
  231. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
  232. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +3 -7
  233. package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
  234. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
  235. package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
  236. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  237. package/test/unit/DashPlatformProtocol.spec.js +10 -25
  238. package/test/unit/dataContract/DataContract.spec.js +119 -148
  239. package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
  240. package/test/unit/dataContract/createDataContract.spec.js +6 -6
  241. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  242. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
  243. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +7 -9
  244. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
  245. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +28 -19
  246. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +7 -7
  247. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
  248. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
  249. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
  250. package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +1 -1
  251. package/test/unit/document/Document.spec.js +31 -20
  252. package/test/unit/document/DocumentFactory.spec.js +45 -110
  253. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  254. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +6 -7
  255. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +11 -12
  256. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  257. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
  258. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
  259. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
  260. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
  261. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +9 -9
  262. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
  263. package/test/unit/identity/Identity.spec.js +46 -81
  264. package/test/unit/identity/IdentityFactory.spec.js +61 -75
  265. package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
  266. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
  267. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +9 -15
  268. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
  269. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
  270. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +9 -13
  271. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
  272. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
  273. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +4 -4
  274. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
  275. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
  276. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  277. package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
  278. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
  279. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
  280. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
  281. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
  282. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
  283. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  284. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  285. package/test-d/index.test-d.ts +2 -2
  286. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  287. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  288. package/src/decode_protocol_entity.rs +0 -25
  289. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
  290. package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
  291. package/test/integration/util/generateEntropy.spec.js +0 -17
  292. package/test/integration/util/serializer.spec.js +0 -24
  293. package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
  294. package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
  295. package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
@@ -1,35 +1,41 @@
1
- use std::convert::TryInto;
1
+ use dpp::platform_value::Value;
2
+ use serde_json::Value as JsonValue;
2
3
  use std::default::Default;
3
4
 
4
5
  use wasm_bindgen::__rt::Ref;
5
6
  use wasm_bindgen::prelude::*;
6
7
 
8
+ use crate::bls_adapter::BlsAdapter;
9
+ use crate::errors::from_dpp_err;
10
+ use dpp::identity::KeyType;
11
+ use dpp::platform_value::BinaryData;
12
+ use dpp::version::PlatformVersion;
13
+
7
14
  use crate::identifier::IdentifierWrapper;
8
15
 
16
+ use crate::identity::state_transition::asset_lock_proof::create_asset_lock_proof_from_wasm_instance;
17
+
9
18
  use crate::{
10
19
  buffer::Buffer,
11
- create_asset_lock_proof_from_wasm_instance,
12
20
  errors::RustConversionError,
13
21
  identity::state_transition::asset_lock_proof::{
14
22
  ChainAssetLockProofWasm, InstantAssetLockProofWasm,
15
23
  },
16
24
  identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitnessWasm,
17
- with_js_error,
25
+ utils, with_js_error,
18
26
  };
19
27
 
20
- use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
21
- use crate::errors::from_dpp_err;
22
- use dpp::state_transition::StateTransitionConvert;
23
-
24
- use crate::utils::{generic_of_js_val, ToSerdeJSONExt, WithJsError};
25
- use dpp::identity::KeyType;
28
+ use crate::bls_adapter::JsBlsAdapter;
29
+ use crate::utils::{generic_of_js_val, WithJsError};
30
+ use dpp::platform_value::string_encoding;
26
31
  use dpp::platform_value::string_encoding::Encoding;
27
- use dpp::platform_value::{string_encoding, BinaryData};
32
+ use dpp::serialization::{PlatformSerializable, ValueConvertible};
33
+ use dpp::state_transition::identity_create_transition::accessors::IdentityCreateTransitionAccessorsV0;
34
+ use dpp::state_transition::StateTransition;
28
35
  use dpp::{
29
- identity::state_transition::{
30
- asset_lock_proof::AssetLockProof, identity_create_transition::IdentityCreateTransition,
31
- identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness,
32
- },
36
+ identity::state_transition::asset_lock_proof::AssetLockProof,
37
+ state_transition::identity::identity_create_transition::IdentityCreateTransition,
38
+ state_transition::identity::public_key_in_creation::IdentityPublicKeyInCreation,
33
39
  state_transition::StateTransitionLike,
34
40
  };
35
41
 
@@ -52,14 +58,13 @@ impl From<IdentityCreateTransitionWasm> for IdentityCreateTransition {
52
58
  #[wasm_bindgen(js_class = IdentityCreateTransition)]
53
59
  impl IdentityCreateTransitionWasm {
54
60
  #[wasm_bindgen(constructor)]
55
- pub fn new(raw_parameters: JsValue) -> Result<IdentityCreateTransitionWasm, JsValue> {
56
- let mut raw_state_transition = raw_parameters.with_serde_to_platform_value()?;
57
- IdentityCreateTransition::clean_value(&mut raw_state_transition).with_js_error()?;
58
- let identity_create_transition =
59
- IdentityCreateTransition::from_raw_object(raw_state_transition)
60
- .map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
61
-
62
- Ok(identity_create_transition.into())
61
+ pub fn new(platform_version: u32) -> Result<IdentityCreateTransitionWasm, JsValue> {
62
+ let platform_version =
63
+ &PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
64
+
65
+ IdentityCreateTransition::default_versioned(&platform_version)
66
+ .map(Into::into)
67
+ .map_err(from_dpp_err)
63
68
  }
64
69
 
65
70
  #[wasm_bindgen(js_name=setAssetLockProof)]
@@ -80,7 +85,7 @@ impl IdentityCreateTransitionWasm {
80
85
 
81
86
  #[wasm_bindgen(js_name=getAssetLockProof)]
82
87
  pub fn get_asset_lock_proof(&self) -> JsValue {
83
- let asset_lock_proof = self.0.get_asset_lock_proof().to_owned();
88
+ let asset_lock_proof = self.0.asset_lock_proof().to_owned();
84
89
 
85
90
  match asset_lock_proof {
86
91
  AssetLockProof::Chain(chain_asset_lock_proof) => {
@@ -104,7 +109,7 @@ impl IdentityCreateTransitionWasm {
104
109
  )?;
105
110
  Ok(public_key.clone().into())
106
111
  })
107
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
112
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
108
113
 
109
114
  self.0.set_public_keys(public_keys);
110
115
 
@@ -123,7 +128,7 @@ impl IdentityCreateTransitionWasm {
123
128
  )?;
124
129
  Ok(public_key.clone().into())
125
130
  })
126
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
131
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
127
132
 
128
133
  self.0.add_public_keys(&mut public_keys);
129
134
 
@@ -133,9 +138,9 @@ impl IdentityCreateTransitionWasm {
133
138
  #[wasm_bindgen(js_name=getPublicKeys)]
134
139
  pub fn get_public_keys(&self) -> Vec<JsValue> {
135
140
  self.0
136
- .get_public_keys()
141
+ .public_keys()
137
142
  .iter()
138
- .map(IdentityPublicKeyInCreationWithWitness::to_owned)
143
+ .map(IdentityPublicKeyInCreation::to_owned)
139
144
  .map(IdentityPublicKeyWithWitnessWasm::from)
140
145
  .map(JsValue::from)
141
146
  .collect()
@@ -148,7 +153,7 @@ impl IdentityCreateTransitionWasm {
148
153
 
149
154
  #[wasm_bindgen(js_name=getType)]
150
155
  pub fn get_type(&self) -> u8 {
151
- self.0.get_type() as u8
156
+ self.0.state_transition_type() as u8
152
157
  }
153
158
 
154
159
  #[wasm_bindgen(getter, js_name=identityId)]
@@ -158,12 +163,12 @@ impl IdentityCreateTransitionWasm {
158
163
 
159
164
  #[wasm_bindgen(js_name=getIdentityId)]
160
165
  pub fn get_identity_id(&self) -> IdentifierWrapper {
161
- (*self.0.get_identity_id()).into()
166
+ self.0.identity_id().into()
162
167
  }
163
168
 
164
169
  #[wasm_bindgen(js_name=getOwnerId)]
165
170
  pub fn get_owner_id(&self) -> IdentifierWrapper {
166
- (*self.0.get_owner_id()).into()
171
+ (IdentityCreateTransitionAccessorsV0::owner_id(&self.0)).into()
167
172
  }
168
173
 
169
174
  #[wasm_bindgen(js_name=toObject)]
@@ -174,22 +179,22 @@ impl IdentityCreateTransitionWasm {
174
179
  Default::default()
175
180
  };
176
181
 
177
- let _skip_signature = opts.skip_signature;
178
- let object = super::to_object::to_object_struct(&self.0, opts);
182
+ let object = super::to_object::to_object_struct(&self.0, &opts);
183
+
179
184
  let js_object = js_sys::Object::new();
180
185
 
186
+ let version = match self.0 {
187
+ IdentityCreateTransition::V0(_) => "0",
188
+ };
189
+
190
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
191
+
181
192
  js_sys::Reflect::set(
182
193
  &js_object,
183
194
  &"type".to_owned().into(),
184
195
  &object.transition_type.into(),
185
196
  )?;
186
197
 
187
- js_sys::Reflect::set(
188
- &js_object,
189
- &"protocolVersion".to_owned().into(),
190
- &object.protocol_version.into(),
191
- )?;
192
-
193
198
  if let Some(signature) = object.signature {
194
199
  let signature_value: JsValue = if signature.is_empty() {
195
200
  JsValue::undefined()
@@ -219,7 +224,7 @@ impl IdentityCreateTransitionWasm {
219
224
  .public_keys
220
225
  .into_iter()
221
226
  .map(IdentityPublicKeyWithWitnessWasm::from)
222
- .map(|key| key.to_object(options.clone()))
227
+ .map(|key| key.to_object(opts.skip_signature.unwrap_or(false)))
223
228
  .collect::<Result<js_sys::Array, _>>()?;
224
229
 
225
230
  js_sys::Reflect::set(&js_object, &"publicKeys".to_owned().into(), &keys_objects)?;
@@ -228,38 +233,31 @@ impl IdentityCreateTransitionWasm {
228
233
  }
229
234
 
230
235
  #[wasm_bindgen(js_name=toBuffer)]
231
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
232
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
233
- with_js_error!(serde_wasm_bindgen::from_value(options))?
234
- } else {
235
- Default::default()
236
- };
237
-
238
- let buffer = self
239
- .0
240
- .to_cbor_buffer(opts.skip_signature.unwrap_or(false))
241
- .map_err(from_dpp_err)?;
242
-
243
- Ok(Buffer::from_bytes(&buffer).into())
236
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
237
+ let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityCreate(
238
+ self.0.clone(),
239
+ ))
240
+ .with_js_error()?;
241
+ Ok(Buffer::from_bytes(&bytes))
244
242
  }
245
243
 
246
244
  #[wasm_bindgen(js_name=toJSON)]
247
245
  pub fn to_json(&self) -> Result<JsValue, JsValue> {
248
- let object = super::to_object::to_object_struct(&self.0, Default::default());
246
+ let object = super::to_object::to_object_struct(&self.0, &Default::default());
249
247
  let js_object = js_sys::Object::new();
250
248
 
249
+ let version = match self.0 {
250
+ IdentityCreateTransition::V0(_) => "0",
251
+ };
252
+
253
+ js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
254
+
251
255
  js_sys::Reflect::set(
252
256
  &js_object,
253
257
  &"type".to_owned().into(),
254
258
  &object.transition_type.into(),
255
259
  )?;
256
260
 
257
- js_sys::Reflect::set(
258
- &js_object,
259
- &"protocolVersion".to_owned().into(),
260
- &object.protocol_version.into(),
261
- )?;
262
-
263
261
  if let Some(signature) = object.signature {
264
262
  let signature_value: JsValue = if signature.is_empty() {
265
263
  JsValue::undefined()
@@ -298,8 +296,8 @@ impl IdentityCreateTransitionWasm {
298
296
  }
299
297
 
300
298
  #[wasm_bindgen(js_name=getModifiedDataIds)]
301
- pub fn get_modified_data_ids(&self) -> Vec<IdentifierWrapper> {
302
- let ids = self.0.get_modified_data_ids();
299
+ pub fn modified_data_ids(&self) -> Vec<IdentifierWrapper> {
300
+ let ids = self.0.modified_data_ids();
303
301
 
304
302
  ids.into_iter().map(IdentifierWrapper::from).collect()
305
303
  }
@@ -343,17 +341,25 @@ impl IdentityCreateTransitionWasm {
343
341
  BlsAdapter(JsValue::undefined().into())
344
342
  };
345
343
 
346
- self.0
344
+ // TODO: not the best approach because it involves cloning the transition
345
+ // Probably it worth to return `sign_by_private_key` per state transition
346
+ let mut wrapper = StateTransition::IdentityCreate(self.0.clone());
347
+ wrapper
347
348
  .sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
348
- .with_js_error()
349
+ .with_js_error()?;
350
+
351
+ self.0.set_signature(wrapper.signature().to_owned());
352
+
353
+ Ok(())
349
354
  }
350
355
 
351
356
  #[wasm_bindgen(js_name=getSignature)]
352
357
  pub fn get_signature(&self) -> Buffer {
353
- Buffer::from_bytes_owned(self.0.get_signature().to_vec())
358
+ Buffer::from_bytes_owned(self.0.signature().to_vec())
354
359
  }
355
360
  #[wasm_bindgen(js_name=setSignature)]
356
361
  pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
357
- self.0.signature = BinaryData::new(signature.unwrap_or(vec![]))
362
+ self.0
363
+ .set_signature(BinaryData::new(signature.unwrap_or(vec![])))
358
364
  }
359
365
  }
@@ -7,7 +7,6 @@ use dpp::identity::state_transition::validate_public_key_signatures::PublicKeysS
7
7
  use dpp::identity::validation::{
8
8
  PublicKeysValidator, RequiredPurposeAndSecurityLevelValidator, PUBLIC_KEY_SCHEMA_FOR_TRANSITION,
9
9
  };
10
- use dpp::state_transition::state_transition_execution_context::StateTransitionExecutionContext;
11
10
 
12
11
  use dpp::version::{ProtocolVersionValidator, COMPATIBILITY_MAP, LATEST_VERSION};
13
12
  use dpp::ProtocolError;
@@ -1,8 +1,8 @@
1
1
  pub use identity_create_transition::*;
2
2
 
3
- pub mod apply_identity_create_transition;
3
+ // pub mod apply_identity_create_transition;
4
4
  pub mod identity_create_transition;
5
- pub mod identity_create_transition_basic_validator;
6
- pub mod identity_create_transition_state_validator;
5
+ // pub mod identity_create_transition_basic_validator;
6
+ // pub mod identity_create_transition_state_validator;
7
7
 
8
8
  mod to_object;
@@ -1,8 +1,8 @@
1
1
  use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
2
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
2
+ use dpp::state_transition::identity_create_transition::accessors::IdentityCreateTransitionAccessorsV0;
3
+ use dpp::state_transition::public_key_in_creation::IdentityPublicKeyInCreation;
3
4
  use dpp::{
4
- identifier::Identifier,
5
- identity::state_transition::identity_create_transition::IdentityCreateTransition,
5
+ identifier::Identifier, state_transition::identity_create_transition::IdentityCreateTransition,
6
6
  state_transition::StateTransitionLike,
7
7
  };
8
8
  use serde::Deserialize;
@@ -17,28 +17,26 @@ pub struct ToObjectOptions {
17
17
  #[derive(Default)]
18
18
  pub struct ToObject {
19
19
  pub transition_type: u8,
20
- pub protocol_version: u32,
21
20
  pub identity_id: Identifier,
22
21
  pub asset_lock_proof: AssetLockProof,
23
- pub public_keys: Vec<IdentityPublicKeyInCreationWithWitness>,
22
+ pub public_keys: Vec<IdentityPublicKeyInCreation>,
24
23
  pub signature: Option<Vec<u8>>,
25
24
  }
26
25
 
27
26
  pub fn to_object_struct(
28
27
  transition: &IdentityCreateTransition,
29
- options: ToObjectOptions,
28
+ options: &ToObjectOptions,
30
29
  ) -> ToObject {
31
30
  let mut to_object = ToObject {
32
- transition_type: transition.get_type() as u8,
33
- protocol_version: transition.get_protocol_version(),
34
- public_keys: transition.get_public_keys().to_owned(),
35
- asset_lock_proof: transition.get_asset_lock_proof().to_owned(),
36
- identity_id: transition.get_identity_id().to_owned(),
31
+ transition_type: transition.state_transition_type() as u8,
32
+ public_keys: transition.public_keys().to_owned(),
33
+ asset_lock_proof: transition.asset_lock_proof().to_owned(),
34
+ identity_id: transition.identity_id().to_owned(),
37
35
  signature: None,
38
36
  };
39
37
 
40
38
  if !options.skip_signature.unwrap_or(false) {
41
- to_object.signature = Some(transition.get_signature().to_vec());
39
+ to_object.signature = Some(transition.signature().to_vec());
42
40
  }
43
41
 
44
42
  to_object
@@ -0,0 +1,31 @@
1
+ use dpp::identity::state_transition::identity_credit_transfer_transition::apply_identity_credit_transfer::ApplyIdentityCreditTransferTransition;
2
+ use std::sync::Arc;
3
+ use wasm_bindgen::prelude::*;
4
+
5
+ use crate::identity::state_transition::identity_credit_transfer_transition::transition::IdentityCreditTransferTransitionWasm;
6
+ use crate::{
7
+ state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper},
8
+ StateTransitionExecutionContextWasm,
9
+ };
10
+
11
+ #[wasm_bindgen(js_name=applyIdentityCreditTransferTransition)]
12
+ pub async fn apply_identity_credit_transfer_transition_wasm(
13
+ state_repository: ExternalStateRepositoryLike,
14
+ state_transition: &IdentityCreditTransferTransitionWasm,
15
+ execution_context: &StateTransitionExecutionContextWasm,
16
+ ) -> Result<(), JsValue> {
17
+ let wrapped_state_repository =
18
+ Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository));
19
+
20
+ let instance = ApplyIdentityCreditTransferTransition::new(wrapped_state_repository);
21
+
22
+ instance
23
+ .apply(
24
+ &state_transition.to_owned().into(),
25
+ &execution_context.to_owned().into(),
26
+ )
27
+ .await
28
+ .map_err(|e| JsValue::from_str(&e.to_string()))?;
29
+
30
+ Ok(())
31
+ }
@@ -0,0 +1,66 @@
1
+ use dpp::identity::state_transition::identity_credit_transfer_transition::validation::basic::identity_credit_transfer_basic::IdentityCreditTransferTransitionBasicValidator;
2
+
3
+ use dpp::version::{ProtocolVersionValidator, COMPATIBILITY_MAP, LATEST_VERSION};
4
+ use dpp::ProtocolError;
5
+
6
+ use wasm_bindgen::prelude::*;
7
+
8
+ use crate::errors::from_dpp_err;
9
+ use crate::utils::ToSerdeJSONExt;
10
+ use crate::validation::ValidationResultWasm;
11
+
12
+ #[wasm_bindgen(js_name=IdentityCreditTransferTransitionBasicValidator)]
13
+ pub struct IdentityCreditTransferTransitionBasicValidatorWasm(
14
+ IdentityCreditTransferTransitionBasicValidator,
15
+ );
16
+
17
+ impl From<IdentityCreditTransferTransitionBasicValidator>
18
+ for IdentityCreditTransferTransitionBasicValidatorWasm
19
+ {
20
+ fn from(validator: IdentityCreditTransferTransitionBasicValidator) -> Self {
21
+ Self(validator)
22
+ }
23
+ }
24
+
25
+ #[wasm_bindgen(js_class=IdentityCreditTransferTransitionBasicValidator)]
26
+ impl IdentityCreditTransferTransitionBasicValidatorWasm {
27
+ #[wasm_bindgen(constructor)]
28
+ pub fn new() -> Result<IdentityCreditTransferTransitionBasicValidatorWasm, JsValue> {
29
+ let protocol_version_validator = ProtocolVersionValidator::new(
30
+ LATEST_VERSION,
31
+ LATEST_VERSION,
32
+ COMPATIBILITY_MAP.clone(),
33
+ );
34
+
35
+ let validator =
36
+ IdentityCreditTransferTransitionBasicValidator::new(protocol_version_validator)
37
+ .map_err(|e| from_dpp_err(ProtocolError::Generic(e.to_string())))?;
38
+
39
+ Ok(validator.into())
40
+ }
41
+
42
+ #[wasm_bindgen]
43
+ pub async fn validate(
44
+ mut self,
45
+ raw_state_transition: JsValue,
46
+ ) -> Result<ValidationResultWasm, JsValue> {
47
+ let current_protocol_version =
48
+ js_sys::Reflect::get(&raw_state_transition, &"protocolVersion".into())
49
+ .map(|v| v.as_f64().unwrap_or(LATEST_VERSION as f64) as u32)
50
+ .unwrap_or(LATEST_VERSION);
51
+
52
+ self.0
53
+ .protocol_version_validator()
54
+ .set_current_protocol_version(current_protocol_version);
55
+
56
+ let state_transition_object = raw_state_transition.with_serde_to_platform_value()?;
57
+
58
+ let validation_result = self
59
+ .0
60
+ .validate(&state_transition_object)
61
+ .await
62
+ .map_err(|e| from_dpp_err(e.into()))?;
63
+
64
+ Ok(validation_result.map(|_| JsValue::undefined()).into())
65
+ }
66
+ }
@@ -0,0 +1,44 @@
1
+ use crate::errors::from_dpp_err;
2
+ use crate::state_repository::{ExternalStateRepositoryLike, ExternalStateRepositoryLikeWrapper};
3
+ use crate::validation::ValidationResultWasm;
4
+ use crate::{IdentityCreditTransferTransitionWasm, StateTransitionExecutionContextWasm};
5
+ use dpp::identity::state_transition::identity_credit_transfer_transition::validation::state::IdentityCreditTransferTransitionStateValidator;
6
+ use dpp::identity::state_transition::identity_credit_transfer_transition::IdentityCreditTransferTransition;
7
+ use wasm_bindgen::prelude::*;
8
+ use wasm_bindgen::JsValue;
9
+
10
+ #[wasm_bindgen(js_name=IdentityCreditTransferTransitionStateValidator)]
11
+ pub struct IdentityCreditTransferTransitionStateValidatorWasm(
12
+ IdentityCreditTransferTransitionStateValidator<ExternalStateRepositoryLikeWrapper>,
13
+ );
14
+
15
+ #[wasm_bindgen(js_class=IdentityCreditTransferTransitionStateValidator)]
16
+ impl IdentityCreditTransferTransitionStateValidatorWasm {
17
+ #[wasm_bindgen(constructor)]
18
+ pub fn new(
19
+ state_repository: ExternalStateRepositoryLike,
20
+ ) -> Result<IdentityCreditTransferTransitionStateValidatorWasm, JsValue> {
21
+ let state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository);
22
+
23
+ let validator = IdentityCreditTransferTransitionStateValidator::new(state_repository);
24
+
25
+ Ok(Self(validator))
26
+ }
27
+
28
+ #[wasm_bindgen]
29
+ pub async fn validate(
30
+ &self,
31
+ state_transition: &IdentityCreditTransferTransitionWasm,
32
+ execution_context: &StateTransitionExecutionContextWasm,
33
+ ) -> Result<ValidationResultWasm, JsValue> {
34
+ let state_transition: IdentityCreditTransferTransition = state_transition.to_owned().into();
35
+
36
+ let validation_result = self
37
+ .0
38
+ .validate(&state_transition, &execution_context.to_owned().into())
39
+ .await
40
+ .map_err(from_dpp_err)?;
41
+
42
+ Ok(validation_result.map(|_| JsValue::undefined()).into())
43
+ }
44
+ }
@@ -0,0 +1,8 @@
1
+ pub use transition::*;
2
+
3
+ // pub mod apply_identity_credit_transfer_transition;
4
+ // pub mod identity_credit_transfer_transition_basic_validator;
5
+ // pub mod identity_credit_transfer_transition_state_validator;
6
+ pub mod transition;
7
+
8
+ mod to_object;
@@ -0,0 +1,49 @@
1
+ use dpp::identity::KeyID;
2
+
3
+ use dpp::state_transition::identity_credit_transfer_transition::accessors::IdentityCreditTransferTransitionAccessorsV0;
4
+ use dpp::state_transition::identity_credit_transfer_transition::IdentityCreditTransferTransition;
5
+ use dpp::state_transition::StateTransitionIdentitySigned;
6
+ use dpp::{identifier::Identifier, state_transition::StateTransitionLike};
7
+ use serde::Deserialize;
8
+ use std::default::Default;
9
+
10
+ #[derive(Deserialize, Default)]
11
+ #[serde(rename_all = "camelCase")]
12
+ pub struct ToObjectOptions {
13
+ pub skip_signature: Option<bool>,
14
+ }
15
+
16
+ #[derive(Default)]
17
+ pub struct ToObject {
18
+ pub transition_type: u8,
19
+ pub identity_id: Identifier,
20
+ pub recipient_id: Identifier,
21
+ pub amount: u64,
22
+ pub signature: Option<Vec<u8>>,
23
+ pub signature_public_key_id: Option<KeyID>,
24
+ }
25
+
26
+ pub fn to_object_struct(
27
+ transition: &IdentityCreditTransferTransition,
28
+ options: ToObjectOptions,
29
+ ) -> ToObject {
30
+ let mut to_object = ToObject {
31
+ transition_type: transition.state_transition_type() as u8,
32
+ identity_id: transition.identity_id(),
33
+ recipient_id: transition.recipient_id(),
34
+ amount: transition.amount(),
35
+ ..ToObject::default()
36
+ };
37
+
38
+ if !options.skip_signature.unwrap_or(false) {
39
+ let signature = Some(transition.signature().to_vec());
40
+ if let Some(signature) = &signature {
41
+ if !signature.is_empty() {
42
+ to_object.signature_public_key_id = Some(transition.signature_public_key_id())
43
+ }
44
+ }
45
+ to_object.signature = signature;
46
+ }
47
+
48
+ to_object
49
+ }