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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/Cargo.toml +22 -2
  2. package/dist/errors/patchConsensusErrors.js +94 -115
  3. package/dist/wasm/wasm_dpp.d.ts +2136 -4354
  4. package/dist/wasm/wasm_dpp.js +17748 -2769
  5. package/dist/wasm/wasm_dpp_bg.js +1 -1
  6. package/lib/dpp.ts +1 -1
  7. package/lib/errors/patchConsensusErrors.ts +94 -93
  8. package/lib/test/bootstrap.js +5 -0
  9. package/lib/test/fixtures/getDataContractFixture.js +2 -4
  10. package/lib/test/fixtures/getDocumentsFixture.js +4 -4
  11. package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +13 -19
  12. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +7 -12
  13. package/lib/test/fixtures/getIdentityFixture.js +21 -32
  14. package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
  15. package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
  16. package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
  17. package/lib/wasm/wasm_dpp.d.ts +2136 -4354
  18. package/package.json +4 -4
  19. package/src/dash_platform_protocol.rs +172 -195
  20. package/src/data_contract/data_contract.rs +255 -203
  21. package/src/data_contract/data_contract_facade.rs +24 -46
  22. package/src/data_contract/errors/mod.rs +1 -0
  23. package/src/data_contract/mod.rs +2 -2
  24. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +82 -87
  25. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +74 -80
  26. package/src/data_contract_factory/data_contract_factory.rs +28 -81
  27. package/src/document/document_facade.rs +74 -81
  28. package/src/document/errors/document_already_exists_error.rs +6 -6
  29. package/src/document/errors/document_no_revision_error.rs +1 -0
  30. package/src/document/errors/document_not_provided_error.rs +6 -6
  31. package/src/document/errors/invalid_document_action_error.rs +11 -7
  32. package/src/document/errors/invalid_initial_revision_error.rs +4 -4
  33. package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
  34. package/src/document/errors/mod.rs +5 -0
  35. package/src/document/errors/revision_absent_error.rs +6 -6
  36. package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
  37. package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
  38. package/src/document/extended_document.rs +76 -76
  39. package/src/document/factory.rs +127 -123
  40. package/src/document/generate_document_id.rs +2 -2
  41. package/src/document/mod.rs +162 -148
  42. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
  43. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
  44. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
  45. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
  46. package/src/document/state_transition/document_batch_transition/mod.rs +230 -217
  47. package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -10
  48. package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -10
  49. package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -11
  50. package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -10
  51. package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -10
  52. package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -10
  53. package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -10
  54. package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -10
  55. package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -10
  56. package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -10
  57. package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -10
  58. package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -10
  59. package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -10
  60. package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -10
  61. package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -10
  62. package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -10
  63. package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -10
  64. package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -10
  65. package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -8
  66. package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -10
  67. package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -10
  68. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -10
  69. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -10
  70. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -10
  71. package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -10
  72. package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -10
  73. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -10
  74. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -10
  75. package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -10
  76. package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -10
  77. package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -10
  78. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -10
  79. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -10
  80. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -10
  81. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -10
  82. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -10
  83. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -10
  84. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -10
  85. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -10
  86. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -10
  87. package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -10
  88. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -10
  89. package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -10
  90. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -10
  91. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -10
  92. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -10
  93. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -10
  94. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -10
  95. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -10
  96. package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -10
  97. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -10
  98. package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -10
  99. package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -10
  100. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -10
  101. package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -10
  102. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -10
  103. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +1 -10
  104. package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -10
  105. package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -10
  106. package/src/errors/consensus/basic/json_schema_error.rs +1 -9
  107. package/src/errors/consensus/basic/mod.rs +2 -0
  108. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -10
  109. package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
  110. package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -10
  111. package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -10
  112. package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -10
  113. package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -10
  114. package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
  115. package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -10
  116. package/src/errors/consensus/consensus_error.rs +30 -21
  117. package/src/errors/consensus/deserialize.rs +2 -2
  118. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -3
  119. package/src/errors/consensus/signature/basic_bls_error.rs +1 -10
  120. package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -10
  121. package/src/errors/consensus/signature/identity_not_found_error.rs +4 -3
  122. package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -10
  123. package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -3
  124. package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +1 -12
  125. package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +1 -10
  126. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -2
  127. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -2
  128. package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -2
  129. package/src/errors/consensus/state/data_contract/mod.rs +3 -1
  130. package/src/errors/consensus/state/document/document_already_present_error.rs +1 -10
  131. package/src/errors/consensus/state/document/document_not_found_error.rs +1 -10
  132. package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -10
  133. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -10
  134. package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +1 -10
  135. package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -10
  136. package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -10
  137. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -13
  138. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -10
  139. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -10
  140. package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -10
  141. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -10
  142. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -10
  143. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -10
  144. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -10
  145. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -10
  146. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -10
  147. package/src/errors/consensus/value_error.rs +1 -10
  148. package/src/errors/from.rs +12 -8
  149. package/src/errors/mod.rs +7 -7
  150. package/src/identity/factory_utils.rs +10 -10
  151. package/src/identity/identity.rs +275 -0
  152. package/src/identity/identity_facade.rs +69 -70
  153. package/src/identity/identity_factory.rs +57 -55
  154. package/src/identity/identity_public_key/mod.rs +86 -62
  155. package/src/identity/mod.rs +25 -256
  156. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
  157. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
  158. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
  159. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
  160. package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
  161. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +66 -52
  162. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
  163. package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
  164. package/src/identity/state_transition/identity_create_transition/to_object.rs +9 -11
  165. package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +3 -3
  166. package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +10 -13
  167. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +72 -39
  168. package/src/identity/state_transition/identity_public_key_transitions.rs +81 -66
  169. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +64 -51
  170. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
  171. package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
  172. package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
  173. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +95 -92
  174. package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
  175. package/src/identity/state_transition/identity_update_transition/to_object.rs +14 -18
  176. package/src/identity/state_transition/mod.rs +2 -2
  177. package/src/lib.rs +9 -9
  178. package/src/metadata.rs +3 -3
  179. package/src/protocol_version.rs +2 -2
  180. package/src/state_transition/errors/invalid_state_transition_error.rs +9 -9
  181. package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
  182. package/src/state_transition/mod.rs +137 -139
  183. package/src/state_transition/state_transition_facade.rs +1 -2
  184. package/src/state_transition/state_transition_factory.rs +139 -159
  185. package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
  186. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +3 -4
  187. package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
  188. package/src/utils.rs +4 -2
  189. package/src/validation/validation_result.rs +1 -1
  190. package/test/integration/dataContract/DataContractFacade.spec.js +11 -15
  191. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +1 -1
  192. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +1 -1
  193. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +1 -1
  194. package/test/integration/document/Document.spec.js +3 -3
  195. package/test/integration/document/DocumentFacade.spec.js +34 -33
  196. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +1 -1
  197. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +1 -1
  198. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +1 -1
  199. package/test/integration/document/validation/validateDocumentFactory.spec.js +1 -1
  200. package/test/integration/identity/IdentityFacade.spec.js +29 -58
  201. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +2 -2
  202. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +1 -1
  203. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
  204. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +2 -2
  205. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
  206. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +1 -1
  207. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +2 -2
  208. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +1 -1
  209. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +4 -3
  210. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +1 -1
  211. package/test/integration/identity/validation/validateIdentityFactory.spec.js +2 -2
  212. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +1 -1
  213. package/test/integration/stateTransition/StateTransitionFacade.spec.js +39 -48
  214. package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
  215. package/test/unit/DashPlatformProtocol.spec.js +4 -18
  216. package/test/unit/dataContract/DataContract.spec.js +84 -123
  217. package/test/unit/dataContract/DataContractFactory.spec.js +1 -1
  218. package/test/unit/dataContract/createDataContract.spec.js +1 -1
  219. package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
  220. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +14 -14
  221. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
  222. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +1 -1
  223. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +7 -8
  224. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
  225. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +1 -1
  226. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +1 -1
  227. package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +1 -1
  228. package/test/unit/document/Document.spec.js +18 -10
  229. package/test/unit/document/DocumentFactory.spec.js +10 -23
  230. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
  231. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +4 -4
  232. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +1 -1
  233. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
  234. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
  235. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
  236. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
  237. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
  238. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +1 -1
  239. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
  240. package/test/unit/identity/Identity.spec.js +34 -74
  241. package/test/unit/identity/IdentityFactory.spec.js +55 -68
  242. package/test/unit/identity/IdentityPublicKey.spec.js +30 -47
  243. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +23 -55
  244. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +2 -2
  245. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +2 -2
  246. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +7 -28
  247. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +4 -4
  248. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +2 -2
  249. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +19 -36
  250. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
  251. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
  252. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +14 -23
  253. package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
  254. package/test/unit/stateTransition/StateTransitionFactory.spec.js +13 -18
  255. package/test/unit/stateTransition/createStateTransitionFactory.spec.js +1 -1
  256. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +1 -1
  257. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +1 -1
  258. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +1 -1
  259. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +2 -2
  260. package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
  261. package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
  262. package/test-d/index.test-d.ts +2 -2
  263. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
  264. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
  265. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
@@ -1,47 +1,26 @@
1
- const varint = require('varint');
2
-
3
1
  const { hash: hashFunction } = require('@dashevo/dpp/lib/util/hash');
4
2
  const { expect } = require('chai');
5
3
  const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
6
- const { default: loadWasmDpp } = require('../../..');
7
- const { getLatestProtocolVersion } = require('../../..');
4
+ const {
5
+ Identity, Metadata, IdentityPublicKey, KeyPurpose, KeyType, KeySecurityLevel,
6
+ Identifier,
7
+ } = require('../../..');
8
8
 
9
9
  describe('Identity', () => {
10
10
  let rawIdentity;
11
11
  let identity;
12
12
  let metadataFixture;
13
- let Identity;
14
- let Metadata;
15
- let IdentityPublicKey;
16
- let KeyPurpose;
17
- let KeyType;
18
- let KeySecurityLevel;
19
-
20
- before(async () => {
21
- ({
22
- Identity, Metadata, IdentityPublicKey, KeyPurpose, KeyType, KeySecurityLevel,
23
- } = await loadWasmDpp());
24
- });
25
13
 
26
14
  beforeEach(async () => {
27
- rawIdentity = {
28
- protocolVersion: getLatestProtocolVersion(),
29
- id: await generateRandomIdentifierAsync(),
30
- publicKeys: [
31
- {
32
- id: 0,
33
- type: KeyType.ECDSA_SECP256K1,
34
- data: Buffer.alloc(36).fill('a'),
35
- purpose: KeyPurpose.AUTHENTICATION,
36
- securityLevel: KeySecurityLevel.MASTER,
37
- readOnly: false,
38
- },
39
- ],
40
- balance: 0,
41
- revision: 0,
42
- };
43
-
44
- identity = new Identity(rawIdentity);
15
+ identity = new Identity(1);
16
+ identity.setId(await generateRandomIdentifierAsync());
17
+
18
+ const publicKey = new IdentityPublicKey(1);
19
+ publicKey.setData(Buffer.alloc(36).fill('a'));
20
+
21
+ identity.setPublicKeys([publicKey]);
22
+
23
+ rawIdentity = identity.toObject();
45
24
 
46
25
  metadataFixture = new Metadata({
47
26
  blockHeight: 42,
@@ -60,14 +39,11 @@ describe('Identity', () => {
60
39
  });
61
40
  });
62
41
 
63
- afterEach(() => {
64
- });
65
-
66
42
  describe('#constructor', () => {
67
43
  it('should set variables from raw model', () => {
68
44
  const instance = identity;
69
45
 
70
- expect(instance.getId().toBuffer()).to.deep.equal(rawIdentity.id.toBuffer());
46
+ expect(instance.getId()).to.deep.equal(rawIdentity.id);
71
47
  expect(
72
48
  instance.getPublicKeys().map((pk) => pk.toObject()),
73
49
  ).to.deep.equal(
@@ -78,7 +54,7 @@ describe('Identity', () => {
78
54
 
79
55
  describe('#getId', () => {
80
56
  it('should return set id', () => {
81
- expect(identity.getId().toBuffer()).to.deep.equal(rawIdentity.id.toBuffer());
57
+ expect(identity.getId()).to.deep.equal(rawIdentity.id);
82
58
  });
83
59
  });
84
60
 
@@ -99,15 +75,19 @@ describe('Identity', () => {
99
75
 
100
76
  it('should set public keys', () => {
101
77
  const rawKey = {
78
+ $version: '0',
102
79
  id: 2,
103
80
  type: KeyType.ECDSA_SECP256K1,
104
81
  data: Buffer.alloc(36).fill('a'),
105
82
  purpose: KeyPurpose.AUTHENTICATION,
106
83
  securityLevel: KeySecurityLevel.MASTER,
107
84
  readOnly: false,
85
+ disabledAt: null,
108
86
  };
109
87
 
110
- const ipk = new IdentityPublicKey(rawKey);
88
+ const ipk = new IdentityPublicKey(1);
89
+ ipk.setData(Buffer.alloc(36).fill('a'));
90
+ ipk.setId(2);
111
91
 
112
92
  identity.setPublicKeys([ipk]);
113
93
  expect(identity.getPublicKeys()).length(1);
@@ -136,7 +116,7 @@ describe('Identity', () => {
136
116
  it('should return buffer', () => {
137
117
  const result = identity.toBuffer();
138
118
  expect(result).to.be.instanceOf(Buffer);
139
- expect(result).to.have.length(87);
119
+ expect(result).to.have.length(81);
140
120
  });
141
121
  });
142
122
 
@@ -153,12 +133,6 @@ describe('Identity', () => {
153
133
  it('should return the same has as JS Identity', () => {
154
134
  const expectedHash = hashFunction(identity.toBuffer());
155
135
  const result = identity.hash();
156
-
157
- const identityDataToEncode = identity.toObject();
158
- delete identityDataToEncode.protocolVersion;
159
-
160
- varint.encode(identity.getProtocolVersion());
161
-
162
136
  expect(result).to.deep.equal(expectedHash);
163
137
  });
164
138
  });
@@ -166,10 +140,6 @@ describe('Identity', () => {
166
140
  describe('#toObject', () => {
167
141
  it('should return plain object representation', () => {
168
142
  const identityObject = identity.toObject();
169
-
170
- // We can't compare Identifier directly - it needs to be converted into a Buffer
171
- rawIdentity.id = rawIdentity.id.toBuffer();
172
-
173
143
  expect(identityObject).to.deep.equal(rawIdentity);
174
144
  });
175
145
  });
@@ -179,16 +149,18 @@ describe('Identity', () => {
179
149
  const jsonIdentity = identity.toJSON();
180
150
 
181
151
  expect(jsonIdentity).to.deep.equal({
182
- protocolVersion: getLatestProtocolVersion(),
183
- id: rawIdentity.id.toString(),
152
+ $version: '0',
153
+ id: Identifier.from(rawIdentity.id).toString(),
184
154
  publicKeys: [
185
155
  {
156
+ $version: '0',
186
157
  id: 0,
187
158
  type: KeyType.ECDSA_SECP256K1,
188
159
  data: rawIdentity.publicKeys[0].data.toString('base64'),
189
160
  purpose: KeyPurpose.AUTHENTICATION,
190
161
  securityLevel: KeySecurityLevel.MASTER,
191
162
  readOnly: false,
163
+ disabledAt: null,
192
164
  },
193
165
  ],
194
166
  balance: 0,
@@ -260,27 +232,15 @@ describe('Identity', () => {
260
232
 
261
233
  describe('#getPublicKeyMaxId', () => {
262
234
  it('should get the biggest public key ID', () => {
263
- const key = new IdentityPublicKey({
264
- id: 99,
265
- type: KeyType.ECDSA_SECP256K1,
266
- data: Buffer.alloc(36).fill('a'),
267
- purpose: KeyPurpose.AUTHENTICATION,
268
- securityLevel: KeySecurityLevel.MASTER,
269
- signature: Buffer.alloc(36).fill('a'),
270
- readOnly: false,
271
- });
272
- identity.addPublicKeys(
273
- key,
274
- new IdentityPublicKey({
275
- id: 50,
276
- type: KeyType.ECDSA_SECP256K1,
277
- data: Buffer.alloc(36).fill('a'),
278
- purpose: KeyPurpose.AUTHENTICATION,
279
- securityLevel: KeySecurityLevel.MASTER,
280
- signature: Buffer.alloc(36).fill('a'),
281
- readOnly: false,
282
- }),
283
- );
235
+ const key1 = new IdentityPublicKey(1);
236
+ key1.setId(99);
237
+ key1.setData(Buffer.alloc(36).fill('a'));
238
+
239
+ const key2 = new IdentityPublicKey(1);
240
+ key2.setId(50);
241
+ key2.setData(Buffer.alloc(36).fill('a'));
242
+
243
+ identity.addPublicKeys([key1, key2]);
284
244
 
285
245
  const maxId = identity.getPublicKeyMaxId();
286
246
 
@@ -1,9 +1,13 @@
1
1
  const getInstantAssetLockProofFixture = require('../../../lib/test/fixtures/getInstantAssetLockProofFixture');
2
2
  const getIdentityFixture = require('../../../lib/test/fixtures/getIdentityFixture');
3
3
  const getChainAssetLockProofFixture = require('../../../lib/test/fixtures/getChainAssetLockProofFixture');
4
- const { default: loadWasmDpp } = require('../../..');
5
- const { IdentityPublicKey, SerializedObjectParsingError } = require('../../..');
6
- const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
4
+ const {
5
+ Identity, IdentityFactory,
6
+ InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
7
+ IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
8
+ InvalidIdentityError, UnsupportedProtocolVersionError,
9
+ } = require('../../..');
10
+ const { SerializedObjectParsingError } = require('../../..');
7
11
 
8
12
  describe('IdentityFactory', () => {
9
13
  let factory;
@@ -12,47 +16,17 @@ describe('IdentityFactory', () => {
12
16
  let chainAssetLockProof;
13
17
  let fakeTime;
14
18
 
15
- let Identity;
16
- let IdentityFactory;
17
- let IdentityValidator;
18
- let InstantAssetLockProof;
19
- let IdentityCreateTransition;
20
- let IdentityTopUpTransition;
21
- let IdentityUpdateTransition;
22
- let IdentityPublicKeyWithWitness;
23
- let InvalidIdentityError;
24
- let UnsupportedProtocolVersionError;
25
- let ChainAssetLockProof;
26
-
27
- before(async () => {
28
- ({
29
- Identity, IdentityFactory, IdentityValidator,
30
- InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
31
- IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
32
- InvalidIdentityError, UnsupportedProtocolVersionError,
33
- } = await loadWasmDpp());
34
- });
35
-
36
- beforeEach(async function () {
37
- // const instantAssetLockProofJS = ;
38
- // const chainAssetLockProofJS = ;
19
+ beforeEach(async function beforeEach() {
39
20
  instantAssetLockProof = await getInstantAssetLockProofFixture();
40
21
  chainAssetLockProof = new ChainAssetLockProof(getChainAssetLockProofFixture().toObject());
41
22
 
42
- const blsAdapter = await getBlsAdapterMock();
43
-
44
- const identityValidator = new IdentityValidator(blsAdapter);
23
+ // const blsAdapter = await getBlsAdapterMock();
45
24
 
46
- factory = new IdentityFactory(
47
- 1,
48
- identityValidator,
49
- );
25
+ // const identityValidator = new IdentityValidator(blsAdapter);
50
26
 
51
- const identityObject = (await getIdentityFixture()).toObject();
52
- identityObject.id = instantAssetLockProof.createIdentifier();
27
+ factory = new IdentityFactory(1);
53
28
 
54
- identity = new Identity(identityObject);
55
- identity.setAssetLockProof(instantAssetLockProof);
29
+ identity = await getIdentityFixture(instantAssetLockProof.createIdentifier());
56
30
  identity.setBalance(0);
57
31
 
58
32
  fakeTime = this.sinonSandbox.useFakeTimers(new Date());
@@ -64,15 +38,12 @@ describe('IdentityFactory', () => {
64
38
 
65
39
  describe('#create', () => {
66
40
  it('should create Identity from asset lock transaction, output index, proof and public keys', () => {
67
- const publicKeys = identity
68
- .getPublicKeys()
69
- .map((identityPublicKey) => ({
70
- ...identityPublicKey.toObject(),
71
- readonly: true,
72
- }));
41
+ const publicKeys = identity.getPublicKeys();
42
+ publicKeys.forEach((key) => key.setReadOnly(true));
43
+ identity.setPublicKeys(publicKeys);
73
44
 
74
45
  const result = factory.create(
75
- instantAssetLockProof,
46
+ instantAssetLockProof.createIdentifier(),
76
47
  publicKeys,
77
48
  );
78
49
 
@@ -81,7 +52,8 @@ describe('IdentityFactory', () => {
81
52
  });
82
53
  });
83
54
 
84
- describe('#createFromObject', () => {
55
+ // TODO(versioning): re-check. Not used anymore
56
+ describe.skip('#createFromObject', () => {
85
57
  it('should skip validation if options is set', () => {
86
58
  const identityObject = identity.toObject();
87
59
  identityObject.protocolVersion = 100;
@@ -89,7 +61,8 @@ describe('IdentityFactory', () => {
89
61
  expect(result).to.exist();
90
62
  });
91
63
 
92
- it('should throw an error if validation have failed', () => {
64
+ // TODO(versioning): restore
65
+ it.skip('should throw an error if validation have failed', () => {
93
66
  const identityObject = identity.toObject();
94
67
  identityObject.protocolVersion = 3;
95
68
 
@@ -126,7 +99,8 @@ describe('IdentityFactory', () => {
126
99
  expect(result.toObject()).to.deep.equal(rawIdentity);
127
100
  });
128
101
 
129
- it('should throw InvalidIdentityError if the decoding fails with consensus error', () => {
102
+ // TODO(versioning): restore
103
+ it.skip('should throw InvalidIdentityError if the decoding fails with consensus error', () => {
130
104
  try {
131
105
  // Mess up protocol version
132
106
  serializedIdentity[0] = 3;
@@ -141,7 +115,8 @@ describe('IdentityFactory', () => {
141
115
  }
142
116
  });
143
117
 
144
- it('should throw an error if decoding fails with any other error', () => {
118
+ // TODO(versioning): restore
119
+ it.skip('should throw an error if decoding fails with any other error', () => {
145
120
  try {
146
121
  serializedIdentity = serializedIdentity.slice(4);
147
122
  factory.createFromBuffer(serializedIdentity);
@@ -172,7 +147,11 @@ describe('IdentityFactory', () => {
172
147
 
173
148
  describe('#createIdentityCreateTransition', () => {
174
149
  it('should create IdentityCreateTransition from Identity model', () => {
175
- const stateTransition = factory.createIdentityCreateTransition(identity);
150
+ const stateTransition = factory.createIdentityCreateTransition(
151
+ identity,
152
+ instantAssetLockProof,
153
+ 1,
154
+ );
176
155
 
177
156
  expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
178
157
  const keysToExpect = stateTransition.getPublicKeys()
@@ -182,8 +161,14 @@ describe('IdentityFactory', () => {
182
161
  return keyObject;
183
162
  });
184
163
 
164
+ const actualKeys = identity.getPublicKeys().map((key) => {
165
+ const keyObject = key.toObject();
166
+ delete keyObject.disabledAt;
167
+ return keyObject;
168
+ });
169
+
185
170
  expect(keysToExpect)
186
- .to.deep.equal(identity.getPublicKeys().map((key) => key.toObject()));
171
+ .to.deep.equal(actualKeys);
187
172
  expect(stateTransition.getAssetLockProof().toObject())
188
173
  .to.deep.equal(instantAssetLockProof.toObject());
189
174
  });
@@ -191,13 +176,14 @@ describe('IdentityFactory', () => {
191
176
 
192
177
  describe('createChainAssetLockProof', () => {
193
178
  it('should create IdentityCreateTransition from Identity model', async () => {
194
- const identityObject = (await getIdentityFixture()).toObject();
195
- identityObject.id = chainAssetLockProof.createIdentifier();
196
- identity = new Identity(identityObject);
197
- identity.setAssetLockProof(chainAssetLockProof);
179
+ identity = await getIdentityFixture(chainAssetLockProof.createIdentifier());
198
180
  identity.setBalance(0);
199
181
 
200
- const stateTransition = factory.createIdentityCreateTransition(identity);
182
+ const stateTransition = factory.createIdentityCreateTransition(
183
+ identity,
184
+ chainAssetLockProof,
185
+ 1,
186
+ );
201
187
 
202
188
  expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
203
189
  const keysToExpect = stateTransition.getPublicKeys()
@@ -207,8 +193,14 @@ describe('IdentityFactory', () => {
207
193
  return keyObject;
208
194
  });
209
195
 
196
+ const actualKeys = identity.getPublicKeys().map((key) => {
197
+ const keyObject = key.toObject();
198
+ delete keyObject.disabledAt;
199
+ return keyObject;
200
+ });
201
+
210
202
  expect(keysToExpect)
211
- .to.deep.equal(identity.getPublicKeys().map((key) => key.toObject()));
203
+ .to.deep.equal(actualKeys);
212
204
 
213
205
  expect(stateTransition.getAssetLockProof().toObject())
214
206
  .to.deep.equal(chainAssetLockProof.toObject());
@@ -234,15 +226,10 @@ describe('IdentityFactory', () => {
234
226
  it('should create IdentityUpdateTransition', () => {
235
227
  const revision = 1;
236
228
  const disablePublicKeys = [identity.getPublicKeyById(0)];
237
- const addPublicKeys = [new IdentityPublicKeyWithWitness({
238
- id: 0,
239
- type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
240
- data: Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'),
241
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
242
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
243
- readOnly: false,
244
- signature: Buffer.alloc(0),
245
- })];
229
+ const key = new IdentityPublicKeyWithWitness(1);
230
+ key.setData(Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'));
231
+
232
+ const addPublicKeys = [key];
246
233
 
247
234
  const stateTransition = factory
248
235
  .createIdentityUpdateTransition(
@@ -256,8 +243,8 @@ describe('IdentityFactory', () => {
256
243
  expect(stateTransition).to.be.instanceOf(IdentityUpdateTransition);
257
244
  expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(identity.getId().toBuffer());
258
245
  expect(stateTransition.getRevision()).to.deep.equal(revision);
259
- expect(stateTransition.getPublicKeysToAdd().map((key) => key.toObject()))
260
- .to.deep.equal(addPublicKeys.map((key) => key.toObject()));
246
+ expect(stateTransition.getPublicKeysToAdd().map((k) => k.toObject()))
247
+ .to.deep.equal(addPublicKeys.map((k) => k.toObject()));
261
248
  expect(stateTransition.getPublicKeyIdsToDisable()).to.deep.equal([0]);
262
249
  expect(stateTransition.getPublicKeysDisabledAt()).to.deep.equal(new Date());
263
250
  });
@@ -1,31 +1,30 @@
1
- const { default: loadWasmDpp } = require('@dashevo/wasm-dpp');
1
+ const { IdentityPublicKey } = require('@dashevo/wasm-dpp');
2
2
 
3
3
  describe('IdentityPublicKey', () => {
4
4
  let rawPublicKey;
5
5
  let publicKey;
6
- let IdentityPublicKey;
7
6
 
8
- beforeEach(async () => {
9
- ({ IdentityPublicKey } = await loadWasmDpp());
7
+ beforeEach(() => {
8
+ const keyData = Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64');
10
9
 
11
10
  rawPublicKey = {
12
11
  id: 0,
13
12
  type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
14
- data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
13
+ data: keyData,
15
14
  purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
16
15
  securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
17
16
  readOnly: false,
18
17
  };
19
- publicKey = new IdentityPublicKey(rawPublicKey);
18
+
19
+ publicKey = new IdentityPublicKey(1);
20
+ publicKey.setData(keyData);
20
21
  });
21
22
 
22
23
  describe('#constructor', () => {
23
24
  it('should set variables from raw model', () => {
24
- const instance = new IdentityPublicKey(rawPublicKey);
25
-
26
- expect(instance.getId()).to.equal(rawPublicKey.id);
27
- expect(instance.getType()).to.equal(rawPublicKey.type);
28
- expect(instance.getData()).to.deep.equal(rawPublicKey.data);
25
+ expect(publicKey.getId()).to.equal(rawPublicKey.id);
26
+ expect(publicKey.getType()).to.equal(rawPublicKey.type);
27
+ expect(publicKey.getData()).to.deep.equal(rawPublicKey.data);
29
28
  });
30
29
  });
31
30
 
@@ -145,17 +144,9 @@ describe('IdentityPublicKey', () => {
145
144
  });
146
145
 
147
146
  it('should return data in case ECDSA_HASH160', () => {
148
- rawPublicKey = {
149
- id: 0,
150
- type: IdentityPublicKey.TYPES.ECDSA_HASH160,
151
- data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTdi', 'base64'),
152
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
153
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
154
- readOnly: false,
155
- disabledAt: 123,
156
- };
157
-
158
- publicKey = new IdentityPublicKey(rawPublicKey);
147
+ publicKey = new IdentityPublicKey(1);
148
+ publicKey.setType(IdentityPublicKey.TYPES.ECDSA_HASH160);
149
+ publicKey.setData(Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTdi', 'base64'));
159
150
 
160
151
  const result = publicKey.hash();
161
152
 
@@ -165,17 +156,9 @@ describe('IdentityPublicKey', () => {
165
156
  });
166
157
 
167
158
  it('should return original public key hash in case BLS12_381', () => {
168
- rawPublicKey = {
169
- id: 0,
170
- type: IdentityPublicKey.TYPES.BLS12_381,
171
- data: Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'),
172
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
173
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
174
- readOnly: false,
175
- disabledAt: 123,
176
- };
177
-
178
- publicKey = new IdentityPublicKey(rawPublicKey);
159
+ publicKey = new IdentityPublicKey(1);
160
+ publicKey.setType(IdentityPublicKey.TYPES.BLS12_381);
161
+ publicKey.setData(Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'));
179
162
 
180
163
  const result = publicKey.hash();
181
164
 
@@ -185,17 +168,9 @@ describe('IdentityPublicKey', () => {
185
168
  });
186
169
 
187
170
  it('should return data in case BIP13_SCRIPT_HASH', () => {
188
- rawPublicKey = {
189
- id: 0,
190
- type: IdentityPublicKey.TYPES.BIP13_SCRIPT_HASH,
191
- data: Buffer.from('54c557e07dde5bb6cb791c7a540e0a4796f5e97e', 'hex'),
192
- purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
193
- securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
194
- readOnly: false,
195
- disabledAt: 123,
196
- };
197
-
198
- publicKey = new IdentityPublicKey(rawPublicKey);
171
+ publicKey = new IdentityPublicKey(1);
172
+ publicKey.setType(IdentityPublicKey.TYPES.BIP13_SCRIPT_HASH);
173
+ publicKey.setData(Buffer.from('54c557e07dde5bb6cb791c7a540e0a4796f5e97e', 'hex'));
199
174
 
200
175
  const result = publicKey.hash();
201
176
 
@@ -207,28 +182,36 @@ describe('IdentityPublicKey', () => {
207
182
 
208
183
  describe('#toJSON', () => {
209
184
  it('should return JSON representation', () => {
185
+ const now = new Date();
186
+ publicKey.setDisabledAt(now);
187
+
210
188
  const jsonPublicKey = publicKey.toJSON();
211
189
 
212
190
  expect(jsonPublicKey).to.deep.equal({
191
+ $version: '0',
213
192
  id: 0,
214
193
  type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
215
194
  data: 'AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH',
216
195
  purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
217
196
  securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
218
197
  readOnly: false,
198
+ disabledAt: now.getTime(),
219
199
  });
220
200
  });
201
+ });
221
202
 
222
- it('should return JSON representation with optional properties', () => {
203
+ describe('#toObject', () => {
204
+ it('should return object representation', () => {
223
205
  const now = new Date();
224
206
  publicKey.setDisabledAt(now);
225
207
 
226
- const jsonPublicKey = publicKey.toJSON();
208
+ const jsonPublicKey = publicKey.toObject();
227
209
 
228
210
  expect(jsonPublicKey).to.deep.equal({
211
+ $version: '0',
229
212
  id: 0,
230
213
  type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
231
- data: 'AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH',
214
+ data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
232
215
  purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
233
216
  securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
234
217
  readOnly: false,