@dashevo/wasm-dpp 0.24.0-dev.12 → 0.24.0-dev.14

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 (245) hide show
  1. package/.mocharc.yml +1 -1
  2. package/Cargo.toml +5 -2
  3. package/README.md +5 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.LICENSE.txt +9 -0
  6. package/dist/wasm/wasm_dpp.d.ts +3397 -1237
  7. package/karma.conf.js +5 -0
  8. package/lib/identifier/patchIdentifier.ts +5 -4
  9. package/lib/index.ts +1 -1
  10. package/lib/test/bootstrap.js +5 -0
  11. package/lib/test/fixtures/getDataContractFixture.js +267 -0
  12. package/lib/test/fixtures/getDocumentsFixture.js +43 -0
  13. package/lib/test/mocks/createStateRepositoryMock.js +64 -0
  14. package/lib/test/mocks/getBlsAdapterMock.js +51 -0
  15. package/package.json +11 -8
  16. package/src/bls_adapter.rs +17 -1
  17. package/src/buffer.rs +3 -0
  18. package/src/dash_platform_protocol.rs +107 -10
  19. package/src/data_contract/data_contract.rs +59 -10
  20. package/src/data_contract/data_contract_facade.rs +128 -0
  21. package/src/data_contract/errors/invalid_data_contract.rs +16 -16
  22. package/src/data_contract/errors/invalid_document_type.rs +8 -8
  23. package/src/data_contract/errors/mod.rs +10 -16
  24. package/src/data_contract/index.rs +56 -1
  25. package/src/data_contract/mod.rs +4 -0
  26. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
  27. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +41 -10
  28. package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +35 -4
  29. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +1 -1
  30. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +20 -7
  31. package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +47 -11
  32. package/src/data_contract_factory/data_contract_factory.rs +19 -17
  33. package/src/data_trigger/data_trigger_execution_context.rs +95 -0
  34. package/src/data_trigger/data_trigger_execution_result.rs +48 -0
  35. package/src/data_trigger/execute_data_triggers_factory.rs +60 -0
  36. package/src/data_trigger/get_data_triggers_factory.rs +65 -0
  37. package/src/data_trigger/mod.rs +121 -0
  38. package/src/document/document_facade.rs +125 -0
  39. package/src/document/errors/invalid_document_error.rs +10 -9
  40. package/src/document/errors/invalid_initial_revision_error.rs +1 -1
  41. package/src/document/errors/mismatch_owners_ids_error.rs +14 -4
  42. package/src/document/errors/mod.rs +17 -13
  43. package/src/document/errors/no_documents_supplied_error.rs +4 -4
  44. package/src/document/factory.rs +257 -0
  45. package/src/document/fetch_and_validate_data_contract.rs +77 -0
  46. package/src/document/generate_document_id.rs +17 -0
  47. package/src/document/mod.rs +311 -37
  48. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +22 -0
  49. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +253 -1
  50. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +60 -1
  51. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +263 -0
  52. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +302 -3
  53. package/src/document/state_transition/document_batch_transition/mod.rs +378 -0
  54. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_id.rs +40 -0
  55. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_indices.rs +50 -0
  56. package/src/document/state_transition/document_batch_transition/validation/basic/mod.rs +8 -0
  57. package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +34 -0
  58. package/src/document/state_transition/document_batch_transition/validation/basic/validate_partial_compound_indices.rs +39 -0
  59. package/src/document/state_transition/document_batch_transition/validation/mod.rs +2 -0
  60. package/src/document/state_transition/document_batch_transition/validation/state/fetch_documents.rs +43 -0
  61. package/src/document/state_transition/document_batch_transition/validation/state/mod.rs +3 -0
  62. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +27 -0
  63. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_uniqueness_by_indices.rs +47 -0
  64. package/src/document/validator.rs +52 -0
  65. package/src/errors/compatible_protocol_version_is_not_defined_error.rs +24 -0
  66. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
  67. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
  68. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
  69. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +15 -1
  70. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +16 -2
  71. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
  72. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
  73. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +6 -2
  74. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +5 -2
  75. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +3 -3
  76. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +2 -2
  77. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +29 -0
  78. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +4 -3
  79. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
  80. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
  81. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +4 -3
  82. package/src/errors/consensus/basic/identity/mod.rs +2 -0
  83. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
  84. package/src/errors/consensus/basic/json_schema_error.rs +8 -2
  85. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
  86. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +9 -9
  87. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +4 -4
  88. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +35 -0
  89. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +34 -0
  90. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +10 -7
  91. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +2 -3
  92. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +7 -3
  93. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -3
  94. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +7 -4
  95. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +2 -1
  96. package/src/errors/consensus/state/identity/mod.rs +4 -0
  97. package/src/errors/consensus_error.rs +218 -268
  98. package/src/errors/data_contract_not_present_error.rs +23 -0
  99. package/src/errors/dpp_error.rs +17 -0
  100. package/src/errors/from.rs +22 -0
  101. package/src/errors/js_conversion.rs +52 -5
  102. package/src/errors/mod.rs +6 -0
  103. package/src/errors/protocol_error.rs +14 -3
  104. package/src/identifier/errors.rs +30 -0
  105. package/src/identifier/mod.rs +95 -11
  106. package/src/identity/errors/asset_lock_output_not_found_error.rs +11 -0
  107. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +20 -0
  108. package/src/identity/errors/invalid_identity_error.rs +32 -0
  109. package/src/identity/errors/mod.rs +9 -0
  110. package/src/identity/errors/unknown_asset_lock_proof_type_error.rs +26 -0
  111. package/src/identity/factory_utils.rs +87 -0
  112. package/src/identity/identity_facade.rs +194 -20
  113. package/src/identity/identity_factory.rs +209 -0
  114. package/src/identity/identity_public_key/mod.rs +51 -40
  115. package/src/identity/mod.rs +31 -17
  116. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +132 -0
  117. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +72 -0
  118. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +4 -0
  119. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +177 -0
  120. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +72 -0
  121. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +4 -0
  122. package/src/identity/state_transition/asset_lock_proof/mod.rs +269 -0
  123. package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +26 -0
  124. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +337 -0
  125. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +153 -0
  126. package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +37 -0
  127. package/src/identity/state_transition/identity_create_transition/mod.rs +8 -0
  128. package/src/identity/state_transition/identity_create_transition/to_object.rs +45 -0
  129. package/src/identity/state_transition/identity_public_key_transitions.rs +207 -0
  130. package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +31 -0
  131. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +278 -0
  132. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +113 -0
  133. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +37 -0
  134. package/src/identity/state_transition/identity_topup_transition/mod.rs +8 -0
  135. package/src/identity/state_transition/identity_topup_transition/to_object.rs +42 -0
  136. package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +24 -0
  137. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +55 -0
  138. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +448 -0
  139. package/src/identity/state_transition/identity_update_transition/identity_update_transition_basic_validator.rs +94 -0
  140. package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +53 -0
  141. package/src/identity/state_transition/identity_update_transition/mod.rs +9 -0
  142. package/src/identity/state_transition/identity_update_transition/to_object.rs +66 -0
  143. package/src/identity/state_transition/mod.rs +12 -0
  144. package/src/identity/state_transition/validate_public_key_signatures.rs +61 -0
  145. package/src/identity/validation/identity_validator.rs +50 -0
  146. package/src/identity/validation/mod.rs +2 -0
  147. package/src/identity/validation/public_keys_validator.rs +14 -13
  148. package/src/identity_public_key/public_keys_validator.rs +44 -0
  149. package/src/lib.rs +6 -0
  150. package/src/lodash.rs +7 -0
  151. package/src/metadata.rs +54 -10
  152. package/src/state_repository.rs +598 -101
  153. package/src/state_transition/conversion.rs +104 -0
  154. package/src/state_transition/errors/invalid_state_transition_error.rs +32 -0
  155. package/src/state_transition/errors/mod.rs +1 -0
  156. package/src/state_transition/mod.rs +46 -0
  157. package/src/state_transition/state_transition_facade.rs +263 -0
  158. package/src/state_transition/state_transition_factory.rs +216 -0
  159. package/src/state_transition/validation/mod.rs +1 -0
  160. package/src/state_transition/validation/validate_state_transition_key_signature.rs +62 -0
  161. package/src/utils.rs +210 -8
  162. package/src/validation/json_schema_validator.rs +41 -0
  163. package/src/validation/mod.rs +2 -0
  164. package/src/validation/validation_result.rs +29 -5
  165. package/src/version/mod.rs +2 -0
  166. package/src/version/protocol_version.rs +103 -0
  167. package/test/integration/dataContract/DataContractFacade.spec.js +46 -30
  168. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +45 -127
  169. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +91 -139
  170. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +577 -503
  171. package/test/integration/document/Document.spec.js +55 -29
  172. package/test/integration/document/DocumentFacade.spec.js +51 -64
  173. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +38 -16
  174. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +341 -396
  175. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +116 -218
  176. package/test/integration/document/validation/validateDocumentFactory.spec.js +123 -171
  177. package/test/integration/identity/IdentityFacade.spec.js +52 -27
  178. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +185 -164
  179. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +84 -114
  180. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +120 -137
  181. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +106 -91
  182. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +50 -16
  183. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +78 -86
  184. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +74 -30
  185. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +93 -147
  186. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +65 -77
  187. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +60 -23
  188. package/test/integration/identity/validation/validateIdentityFactory.spec.js +46 -114
  189. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +9 -3
  190. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +12 -8
  191. package/test/integration/stateTransition/StateTransitionFacade.spec.js +95 -233
  192. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +53 -0
  193. package/test/unit/Identifier.spec.js +36 -36
  194. package/test/unit/Metadata.spec.js +17 -3
  195. package/test/unit/dataContract/DataContract.spec.js +9 -4
  196. package/test/unit/dataContract/createDataContract.spec.js +0 -1
  197. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +3 -3
  198. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
  199. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +2 -2
  200. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -3
  201. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
  202. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +25 -31
  203. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +3 -3
  204. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +2 -0
  205. package/test/unit/decodeProtocolEntityFactory.spec.js +2 -2
  206. package/test/unit/document/Document.spec.js +147 -155
  207. package/test/unit/document/DocumentFactory.spec.js +153 -153
  208. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +59 -14
  209. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +131 -62
  210. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +144 -56
  211. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +38 -8
  212. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +11 -7
  213. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +29 -18
  214. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +38 -29
  215. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +53 -91
  216. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +357 -493
  217. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +133 -72
  218. package/test/unit/identity/Identity.spec.js +26 -9
  219. package/test/unit/identity/IdentityFactory.spec.js +81 -89
  220. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +73 -30
  221. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +38 -38
  222. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +34 -25
  223. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +36 -16
  224. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +85 -50
  225. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +24 -6
  226. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +44 -22
  227. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +58 -103
  228. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +63 -0
  229. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +90 -0
  230. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +18 -3
  231. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +38 -11
  232. package/test/unit/stateTransition/StateTransitionFactory.spec.js +49 -101
  233. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +23 -25
  234. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +73 -46
  235. package/test/unit/version/validateProtocolVersionFactory.spec.js +45 -27
  236. package/wasm/package.json +5 -0
  237. package/wasm/wasm_dpp.d.ts +3397 -1237
  238. package/wasm/wasm_dpp.js +7158 -1384
  239. package/wasm/wasm_dpp_bg.js +1 -1
  240. package/wasm/wasm_dpp_bg.wasm +0 -0
  241. package/wasm/wasm_dpp_bg.wasm.d.ts +777 -389
  242. package/webpack.config.js +9 -0
  243. package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +0 -22
  244. package/test/integration/stateTransition/calculateStateTransitionFeeFactory.spec.js +0 -135
  245. package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +0 -54
@@ -1,47 +1,215 @@
1
+ use std::convert::TryInto;
2
+
1
3
  use std::sync::Arc;
2
4
 
3
5
  use wasm_bindgen::prelude::*;
4
6
 
5
7
  use dpp::identity::validation::PublicKeysValidator;
6
- use dpp::identity::IdentityFacade;
8
+ use dpp::identity::{Identity, IdentityFacade};
9
+
10
+ use crate::bls_adapter::BlsAdapter;
11
+ use crate::buffer::Buffer;
12
+ use crate::errors::{from_dpp_err, RustConversionError};
13
+ use crate::identifier::IdentifierWrapper;
14
+ use crate::identity::errors::InvalidIdentityError;
7
15
 
8
- use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
16
+ use crate::utils::ToSerdeJSONExt;
9
17
  use crate::validation::ValidationResultWasm;
18
+ use crate::{
19
+ create_asset_lock_proof_from_wasm_instance, with_js_error, ChainAssetLockProofWasm,
20
+ IdentityCreateTransitionWasm, IdentityTopUpTransitionWasm, IdentityUpdateTransitionWasm,
21
+ IdentityWasm, InstantAssetLockProofWasm,
22
+ };
23
+ use dpp::dashcore::{consensus, InstantLock, Transaction};
24
+
10
25
  use dpp::version::ProtocolVersionValidator;
11
26
  use dpp::NonConsensusError;
27
+ use serde::Deserialize;
12
28
 
29
+ #[derive(Clone)]
13
30
  #[wasm_bindgen(js_name=IdentityFacade)]
14
31
  pub struct IdentityFacadeWasm(IdentityFacade<BlsAdapter>);
15
32
 
16
- #[wasm_bindgen(js_class=IdentityFacade)]
17
33
  impl IdentityFacadeWasm {
18
- #[wasm_bindgen(constructor)]
19
- pub fn new(bls_adapter: JsBlsAdapter) -> IdentityFacadeWasm {
20
- let bls = BlsAdapter(bls_adapter);
21
- // TODO: REMOVE THAT LINE, TAKE IT AS AN ARGUMENT
22
- let protocol_version_validator = ProtocolVersionValidator::default();
23
- let public_keys_validator = PublicKeysValidator::new(bls).unwrap();
34
+ pub fn new(
35
+ protocol_version_validator: Arc<ProtocolVersionValidator>,
36
+ public_keys_validator: Arc<PublicKeysValidator<BlsAdapter>>,
37
+ ) -> IdentityFacadeWasm {
24
38
  let identity_facade = IdentityFacade::new(
25
- Arc::new(protocol_version_validator),
26
- Arc::new(public_keys_validator),
39
+ protocol_version_validator.protocol_version(),
40
+ protocol_version_validator,
41
+ public_keys_validator,
27
42
  )
28
43
  .unwrap();
29
44
 
30
45
  IdentityFacadeWasm(identity_facade)
31
46
  }
47
+ }
32
48
 
33
- #[wasm_bindgen()]
34
- pub fn validate(
49
+ #[wasm_bindgen(js_class=IdentityFacade)]
50
+ impl IdentityFacadeWasm {
51
+ #[wasm_bindgen]
52
+ pub fn create(
35
53
  &self,
36
- raw_identity_object: JsValue,
37
- ) -> Result<ValidationResultWasm, NonConsensusErrorWasm> {
38
- let identity_json = serde_wasm_bindgen::from_value(raw_identity_object)
39
- .expect("unable to serialize identity");
40
- // TODO: handle the case when
54
+ asset_lock_proof: JsValue,
55
+ public_keys: js_sys::Array,
56
+ ) -> Result<IdentityWasm, JsValue> {
57
+ let (asset_lock_proof, public_keys) =
58
+ super::factory_utils::parse_create_args(asset_lock_proof, public_keys)?;
59
+
41
60
  self.0
61
+ .create(asset_lock_proof, public_keys)
62
+ .map(|identity| identity.into())
63
+ .map_err(from_dpp_err)
64
+ }
65
+
66
+ #[wasm_bindgen(js_name=createFromObject)]
67
+ pub fn create_from_object(
68
+ &self,
69
+ identity_object: JsValue,
70
+ options: JsValue,
71
+ ) -> Result<IdentityWasm, JsValue> {
72
+ let options: FromObjectOptions = if options.is_object() {
73
+ with_js_error!(serde_wasm_bindgen::from_value(options))?
74
+ } else {
75
+ Default::default()
76
+ };
77
+
78
+ let raw_identity = identity_object.with_serde_to_json_value()?;
79
+
80
+ let result = self
81
+ .0
82
+ .create_from_object(raw_identity, options.skip_validation.unwrap_or(false));
83
+
84
+ match result {
85
+ Ok(identity) => Ok(identity.into()),
86
+ Err(dpp::ProtocolError::InvalidIdentityError { errors, .. }) => {
87
+ Err(InvalidIdentityError::new(errors, identity_object).into())
88
+ }
89
+ Err(other) => Err(from_dpp_err(other)),
90
+ }
91
+ }
92
+
93
+ #[wasm_bindgen(js_name=createFromBuffer)]
94
+ pub fn create_from_buffer(
95
+ &self,
96
+ buffer: Vec<u8>,
97
+ options: JsValue,
98
+ ) -> Result<IdentityWasm, JsValue> {
99
+ let options: FromObjectOptions = if options.is_object() {
100
+ with_js_error!(serde_wasm_bindgen::from_value(options))?
101
+ } else {
102
+ Default::default()
103
+ };
104
+
105
+ let result = self
106
+ .0
107
+ .create_from_buffer(buffer.clone(), options.skip_validation.unwrap_or(false));
108
+
109
+ match result {
110
+ Ok(identity) => Ok(identity.into()),
111
+ Err(dpp::ProtocolError::InvalidIdentityError { errors, .. }) => {
112
+ Err(InvalidIdentityError::new(errors, Buffer::from_bytes(&buffer).into()).into())
113
+ }
114
+ Err(other) => Err(from_dpp_err(other)),
115
+ }
116
+ }
117
+
118
+ #[wasm_bindgen]
119
+ pub fn validate(&self, identity: IdentityWasm) -> Result<ValidationResultWasm, JsValue> {
120
+ let identity: Identity = identity.into();
121
+ let identity_json = identity.to_object().map_err(from_dpp_err)?;
122
+
123
+ let validation_result = self
124
+ .0
42
125
  .validate(&identity_json)
43
- .map(|res| res.into())
44
- .map_err(|err| err.into())
126
+ .map_err(|e| from_dpp_err(e.into()))?;
127
+ Ok(validation_result.map(|_| JsValue::undefined()).into())
128
+ }
129
+
130
+ #[wasm_bindgen(js_name=createInstantAssetLockProof)]
131
+ pub fn create_instant_asset_lock_proof(
132
+ &self,
133
+ instant_lock: Vec<u8>,
134
+ asset_lock_transaction: Vec<u8>,
135
+ output_index: u32,
136
+ ) -> Result<InstantAssetLockProofWasm, JsValue> {
137
+ let instant_lock: InstantLock =
138
+ consensus::deserialize(&instant_lock).map_err(|e| e.to_string())?;
139
+
140
+ let asset_lock_transaction: Transaction =
141
+ consensus::deserialize(&asset_lock_transaction).map_err(|e| e.to_string())?;
142
+
143
+ Ok(IdentityFacade::<BlsAdapter>::create_instant_lock_proof(
144
+ instant_lock,
145
+ asset_lock_transaction,
146
+ output_index,
147
+ )
148
+ .into())
149
+ }
150
+
151
+ #[wasm_bindgen(js_name=createChainAssetLockProof)]
152
+ pub fn create_chain_asset_lock_proof(
153
+ &self,
154
+ core_chain_locked_height: u32,
155
+ out_point: Vec<u8>,
156
+ ) -> Result<ChainAssetLockProofWasm, JsValue> {
157
+ let out_point: [u8; 36] = out_point.try_into().map_err(|_| {
158
+ RustConversionError::Error(String::from("outPoint must be a 36 byte array"))
159
+ .to_js_value()
160
+ })?;
161
+
162
+ Ok(IdentityFacade::<BlsAdapter>::create_chain_asset_lock_proof(
163
+ core_chain_locked_height,
164
+ out_point,
165
+ )
166
+ .into())
167
+ }
168
+
169
+ #[wasm_bindgen(js_name=createIdentityCreateTransition)]
170
+ pub fn create_identity_create_transition(
171
+ &self,
172
+ identity: &IdentityWasm,
173
+ ) -> Result<IdentityCreateTransitionWasm, JsValue> {
174
+ self.0
175
+ .create_identity_create_transition(Identity::from(identity.to_owned()))
176
+ .map(Into::into)
177
+ .map_err(from_dpp_err)
178
+ }
179
+
180
+ #[wasm_bindgen(js_name=createIdentityTopUpTransition)]
181
+ pub fn create_identity_topup_transition(
182
+ &self,
183
+ identity_id: &IdentifierWrapper,
184
+ asset_lock_proof: &JsValue,
185
+ ) -> Result<IdentityTopUpTransitionWasm, JsValue> {
186
+ let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(asset_lock_proof)?;
187
+
188
+ self.0
189
+ .create_identity_topup_transition(identity_id.to_owned().into(), asset_lock_proof)
190
+ .map(Into::into)
191
+ .map_err(from_dpp_err)
192
+ }
193
+
194
+ #[wasm_bindgen(js_name=createIdentityUpdateTransition)]
195
+ pub fn create_identity_update_transition(
196
+ &self,
197
+ identity: &IdentityWasm,
198
+ public_keys: &JsValue,
199
+ ) -> Result<IdentityUpdateTransitionWasm, JsValue> {
200
+ let (add_public_keys, disable_public_keys) =
201
+ super::factory_utils::parse_create_identity_update_transition_keys(public_keys)?;
202
+ let now = js_sys::Date::now() as u64;
203
+
204
+ self.0
205
+ .create_identity_update_transition(
206
+ identity.to_owned().into(),
207
+ add_public_keys,
208
+ disable_public_keys,
209
+ Some(now),
210
+ )
211
+ .map(Into::into)
212
+ .map_err(from_dpp_err)
45
213
  }
46
214
  }
47
215
 
@@ -53,3 +221,9 @@ impl From<NonConsensusError> for NonConsensusErrorWasm {
53
221
  Self(err)
54
222
  }
55
223
  }
224
+
225
+ #[derive(Deserialize, Default)]
226
+ #[serde(rename_all = "camelCase")]
227
+ pub struct FromObjectOptions {
228
+ pub skip_validation: Option<bool>,
229
+ }
@@ -0,0 +1,209 @@
1
+ use crate::bls_adapter::BlsAdapter;
2
+ use crate::buffer::Buffer;
3
+ use crate::errors::{from_dpp_err, RustConversionError};
4
+ use crate::identifier::IdentifierWrapper;
5
+ use crate::identity::errors::InvalidIdentityError;
6
+ use crate::identity::validation::IdentityValidatorWasm;
7
+
8
+ use crate::{
9
+ create_asset_lock_proof_from_wasm_instance, utils, with_js_error, ChainAssetLockProofWasm,
10
+ IdentityCreateTransitionWasm, IdentityTopUpTransitionWasm, IdentityUpdateTransitionWasm,
11
+ IdentityWasm, InstantAssetLockProofWasm,
12
+ };
13
+ use dpp::dashcore::{consensus, InstantLock, Transaction};
14
+ use dpp::identity::factory::IdentityFactory;
15
+
16
+ use dpp::prelude::Identity;
17
+
18
+ use serde::Deserialize;
19
+ use serde_json::Value;
20
+ use std::convert::TryInto;
21
+
22
+ use std::sync::Arc;
23
+
24
+ use wasm_bindgen::prelude::wasm_bindgen;
25
+ use wasm_bindgen::JsValue;
26
+
27
+ #[wasm_bindgen(js_name=IdentityFactory)]
28
+ pub struct IdentityFactoryWasm(IdentityFactory<BlsAdapter>);
29
+
30
+ impl From<IdentityFactory<BlsAdapter>> for IdentityFactoryWasm {
31
+ fn from(factory: IdentityFactory<BlsAdapter>) -> Self {
32
+ Self(factory)
33
+ }
34
+ }
35
+
36
+ #[wasm_bindgen(js_class=IdentityFactory)]
37
+ impl IdentityFactoryWasm {
38
+ #[wasm_bindgen(constructor)]
39
+ pub fn new(
40
+ protocol_version: u32,
41
+ identity_validator: IdentityValidatorWasm,
42
+ ) -> Result<IdentityFactoryWasm, JsValue> {
43
+ let factory = IdentityFactory::new(protocol_version, Arc::new(identity_validator.into()));
44
+ Ok(factory.into())
45
+ }
46
+
47
+ #[wasm_bindgen]
48
+ pub fn create(
49
+ &self,
50
+ asset_lock_proof: JsValue,
51
+ public_keys: js_sys::Array,
52
+ ) -> Result<IdentityWasm, JsValue> {
53
+ let (asset_lock_proof, public_keys) =
54
+ super::factory_utils::parse_create_args(asset_lock_proof, public_keys)?;
55
+
56
+ self.0
57
+ .create(asset_lock_proof, public_keys)
58
+ .map(|identity| identity.into())
59
+ .map_err(from_dpp_err)
60
+ }
61
+
62
+ #[wasm_bindgen(js_name=createFromObject)]
63
+ pub fn create_from_object(
64
+ &self,
65
+ identity_object: JsValue,
66
+ options: JsValue,
67
+ ) -> Result<IdentityWasm, JsValue> {
68
+ let options: FromObjectOptions = if options.is_object() {
69
+ with_js_error!(serde_wasm_bindgen::from_value(options))?
70
+ } else {
71
+ Default::default()
72
+ };
73
+
74
+ let identity_json = utils::stringify(&identity_object)?;
75
+ let raw_identity: Value =
76
+ serde_json::from_str(&identity_json).map_err(|e| e.to_string())?;
77
+
78
+ let result = self
79
+ .0
80
+ .create_from_object(raw_identity, options.skip_validation.unwrap_or(false));
81
+
82
+ match result {
83
+ Ok(identity) => Ok(identity.into()),
84
+ Err(dpp::ProtocolError::InvalidIdentityError { errors, .. }) => {
85
+ Err(InvalidIdentityError::new(errors, identity_object).into())
86
+ }
87
+ Err(other) => Err(from_dpp_err(other)),
88
+ }
89
+ }
90
+
91
+ #[wasm_bindgen(js_name=createFromBuffer)]
92
+ pub fn create_from_buffer(
93
+ &self,
94
+ buffer: Vec<u8>,
95
+ options: JsValue,
96
+ ) -> Result<IdentityWasm, JsValue> {
97
+ let options: FromObjectOptions = if options.is_object() {
98
+ with_js_error!(serde_wasm_bindgen::from_value(options))?
99
+ } else {
100
+ Default::default()
101
+ };
102
+
103
+ let result = self
104
+ .0
105
+ .create_from_buffer(buffer.clone(), options.skip_validation.unwrap_or(false));
106
+
107
+ match result {
108
+ Ok(identity) => Ok(identity.into()),
109
+ Err(dpp::ProtocolError::InvalidIdentityError { errors, .. }) => {
110
+ Err(InvalidIdentityError::new(errors, Buffer::from_bytes(&buffer).into()).into())
111
+ }
112
+ Err(other) => Err(from_dpp_err(other)),
113
+ }
114
+ }
115
+
116
+ #[wasm_bindgen(js_name=createInstantAssetLockProof)]
117
+ pub fn create_instant_asset_lock_proof(
118
+ &self,
119
+ instant_lock: Vec<u8>,
120
+ asset_lock_transaction: Vec<u8>,
121
+ output_index: u32,
122
+ ) -> Result<InstantAssetLockProofWasm, JsValue> {
123
+ let instant_lock: InstantLock =
124
+ consensus::deserialize(&instant_lock).map_err(|e| e.to_string())?;
125
+
126
+ let asset_lock_transaction: Transaction =
127
+ consensus::deserialize(&asset_lock_transaction).map_err(|e| e.to_string())?;
128
+
129
+ Ok(IdentityFactory::<BlsAdapter>::create_instant_lock_proof(
130
+ instant_lock,
131
+ asset_lock_transaction,
132
+ output_index,
133
+ )
134
+ .into())
135
+ }
136
+
137
+ #[wasm_bindgen(js_name=createChainAssetLockProof)]
138
+ pub fn create_chain_asset_lock_proof(
139
+ &self,
140
+ core_chain_locked_height: u32,
141
+ out_point: Vec<u8>,
142
+ ) -> Result<ChainAssetLockProofWasm, JsValue> {
143
+ let out_point: [u8; 36] = out_point.try_into().map_err(|_| {
144
+ RustConversionError::Error(String::from("outPoint must be a 36 byte array"))
145
+ .to_js_value()
146
+ })?;
147
+
148
+ Ok(
149
+ IdentityFactory::<BlsAdapter>::create_chain_asset_lock_proof(
150
+ core_chain_locked_height,
151
+ out_point,
152
+ )
153
+ .into(),
154
+ )
155
+ }
156
+
157
+ #[wasm_bindgen(js_name=createIdentityCreateTransition)]
158
+ pub fn create_identity_create_transition(
159
+ &self,
160
+ identity: &IdentityWasm,
161
+ ) -> Result<IdentityCreateTransitionWasm, JsValue> {
162
+ self.0
163
+ .create_identity_create_transition(Identity::from(identity.to_owned()))
164
+ .map(Into::into)
165
+ .map_err(from_dpp_err)
166
+ }
167
+
168
+ #[wasm_bindgen(js_name=createIdentityTopUpTransition)]
169
+ pub fn create_identity_topup_transition(
170
+ &self,
171
+ identity_id: &IdentifierWrapper,
172
+ asset_lock_proof: &JsValue,
173
+ ) -> Result<IdentityTopUpTransitionWasm, JsValue> {
174
+ let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(asset_lock_proof)?;
175
+
176
+ self.0
177
+ .create_identity_topup_transition(identity_id.to_owned().into(), asset_lock_proof)
178
+ .map(Into::into)
179
+ .map_err(from_dpp_err)
180
+ }
181
+
182
+ #[wasm_bindgen(js_name=createIdentityUpdateTransition)]
183
+ pub fn create_identity_update_transition(
184
+ &self,
185
+ identity: &IdentityWasm,
186
+ public_keys: &JsValue,
187
+ ) -> Result<IdentityUpdateTransitionWasm, JsValue> {
188
+ let (add_public_keys, disable_public_keys) =
189
+ super::factory_utils::parse_create_identity_update_transition_keys(public_keys)?;
190
+
191
+ let now = js_sys::Date::now() as u64;
192
+
193
+ self.0
194
+ .create_identity_update_transition(
195
+ identity.to_owned().into(),
196
+ add_public_keys,
197
+ disable_public_keys,
198
+ Some(now),
199
+ )
200
+ .map(Into::into)
201
+ .map_err(from_dpp_err)
202
+ }
203
+ }
204
+
205
+ #[derive(Deserialize, Default)]
206
+ #[serde(rename_all = "camelCase")]
207
+ pub struct FromObjectOptions {
208
+ pub skip_validation: Option<bool>,
209
+ }
@@ -4,8 +4,9 @@ use std::convert::{TryFrom, TryInto};
4
4
  use wasm_bindgen::prelude::*;
5
5
 
6
6
  use crate::errors::from_dpp_err;
7
+ use crate::utils::Inner;
7
8
  use crate::{buffer::Buffer, utils};
8
- use dpp::identity::IdentityPublicKey;
9
+ use dpp::identity::{IdentityPublicKey, KeyID};
9
10
 
10
11
  mod purpose;
11
12
  pub use purpose::*;
@@ -33,89 +34,84 @@ impl IdentityPublicKeyWasm {
33
34
  }
34
35
 
35
36
  #[wasm_bindgen(js_name=getId)]
36
- pub fn get_id(&self) -> u32 {
37
- self.0.get_id() as u32
37
+ pub fn get_id(&self) -> KeyID {
38
+ self.0.id
38
39
  }
39
40
 
40
41
  #[wasm_bindgen(js_name=setId)]
41
- pub fn set_id(&mut self, id: u32) {
42
- self.0.set_id(id.into());
42
+ pub fn set_id(&mut self, id: KeyID) {
43
+ self.0.id = id;
43
44
  }
44
45
 
45
46
  #[wasm_bindgen(js_name=getType)]
46
47
  pub fn get_type(&self) -> u8 {
47
- self.0.get_type() as u8
48
+ self.0.key_type as u8
48
49
  }
49
50
 
50
51
  #[wasm_bindgen(js_name=setType)]
51
52
  pub fn set_type(&mut self, key_type: u8) -> Result<(), JsValue> {
52
- self.0.set_type(
53
- key_type
54
- .try_into()
55
- .map_err(|e: anyhow::Error| e.to_string())?,
56
- );
53
+ self.0.key_type = key_type
54
+ .try_into()
55
+ .map_err(|e: anyhow::Error| e.to_string())?;
57
56
  Ok(())
58
57
  }
59
58
 
60
59
  #[wasm_bindgen(js_name=setData)]
61
60
  pub fn set_data(&mut self, data: Vec<u8>) -> Result<(), JsValue> {
62
- self.0.set_data(data);
61
+ self.0.data = data;
63
62
  Ok(())
64
63
  }
65
64
 
66
65
  #[wasm_bindgen(js_name=getData)]
67
66
  pub fn get_data(&self) -> Vec<u8> {
68
- self.0.get_data().to_vec()
67
+ self.0.data.clone()
69
68
  }
70
69
 
71
70
  #[wasm_bindgen(js_name=setPurpose)]
72
71
  pub fn set_purpose(&mut self, purpose: u8) -> Result<(), JsValue> {
73
- self.0.set_purpose(
74
- purpose
75
- .try_into()
76
- .map_err(|e: anyhow::Error| e.to_string())?,
77
- );
72
+ self.0.purpose = purpose
73
+ .try_into()
74
+ .map_err(|e: anyhow::Error| e.to_string())?;
78
75
  Ok(())
79
76
  }
80
77
 
81
78
  #[wasm_bindgen(js_name=getPurpose)]
82
79
  pub fn get_purpose(&self) -> u8 {
83
- self.0.get_purpose() as u8
80
+ self.0.purpose as u8
84
81
  }
85
82
 
86
83
  #[wasm_bindgen(js_name=setSecurityLevel)]
87
- pub fn set_security_level(&mut self, purpose: u8) -> Result<(), JsValue> {
88
- self.0.set_security_level(
89
- purpose
90
- .try_into()
91
- .map_err(|e: anyhow::Error| e.to_string())?,
92
- );
84
+ pub fn set_security_level(&mut self, security_level: u8) -> Result<(), JsValue> {
85
+ self.0.security_level = security_level
86
+ .try_into()
87
+ .map_err(|e: anyhow::Error| e.to_string())?;
93
88
  Ok(())
94
89
  }
95
90
 
96
91
  #[wasm_bindgen(js_name=getSecurityLevel)]
97
92
  pub fn get_security_level(&self) -> u8 {
98
- self.0.get_security_level() as u8
93
+ self.0.security_level as u8
99
94
  }
100
95
 
101
96
  #[wasm_bindgen(js_name=setReadOnly)]
102
- pub fn set_readonly(&mut self, purpose: bool) {
103
- self.0.set_readonly(purpose);
97
+ pub fn set_read_only(&mut self, read_only: bool) {
98
+ self.0.read_only = read_only;
104
99
  }
105
100
 
106
101
  #[wasm_bindgen(js_name=isReadOnly)]
107
- pub fn is_readonly(&self) -> bool {
108
- self.0.get_readonly()
102
+ pub fn is_read_only(&self) -> bool {
103
+ self.0.read_only
109
104
  }
110
105
 
111
106
  #[wasm_bindgen(js_name=setDisabledAt)]
112
107
  pub fn set_disabled_at(&mut self, timestamp: u32) {
108
+ // TODO: It's not gonna work, must be BigInt
113
109
  self.0.set_disabled_at(timestamp as u64);
114
110
  }
115
111
 
116
112
  #[wasm_bindgen(js_name=getDisabledAt)]
117
- pub fn get_disabled_at(&self) -> Option<u32> {
118
- self.0.get_disabled_at().map(|timestamp| timestamp as u32)
113
+ pub fn get_disabled_at(&self) -> Option<f64> {
114
+ self.0.disabled_at.map(|timestamp| timestamp as f64)
119
115
  }
120
116
 
121
117
  #[wasm_bindgen(js_name=hash)]
@@ -136,34 +132,49 @@ impl IdentityPublicKeyWasm {
136
132
  }
137
133
 
138
134
  #[wasm_bindgen(js_name=toObject)]
139
- pub fn to_object(&self, some_option: Option<bool>) -> Result<JsValue, JsValue> {
135
+ pub fn to_object(&self) -> Result<JsValue, JsValue> {
140
136
  let val = self
141
137
  .0
142
- .to_raw_json_object(some_option.unwrap_or(false))
138
+ .to_raw_json_object()
143
139
  .map_err(|e| from_dpp_err(e.into()))?;
144
140
 
145
- let data_buffer = Buffer::from_bytes(self.0.get_data());
146
- let signature_buffer = Buffer::from_bytes(self.0.get_signature());
141
+ let data_buffer = Buffer::from_bytes(self.0.data.as_slice());
147
142
 
148
143
  let json = val.to_string();
149
144
  let js_object = js_sys::JSON::parse(&json)?;
150
145
 
151
146
  js_sys::Reflect::set(
152
147
  &js_object,
153
- &"data".to_owned().into(),
154
- &JsValue::from(data_buffer),
148
+ &JsValue::from_str("type"),
149
+ &JsValue::from(self.get_type()),
155
150
  )?;
156
151
 
157
152
  js_sys::Reflect::set(
158
153
  &js_object,
159
- &"signature".to_owned().into(),
160
- &JsValue::from(signature_buffer),
154
+ &JsValue::from_str("data"),
155
+ &JsValue::from(data_buffer),
161
156
  )?;
162
157
 
163
158
  Ok(js_object)
164
159
  }
165
160
  }
166
161
 
162
+ impl Inner for IdentityPublicKeyWasm {
163
+ type InnerItem = IdentityPublicKey;
164
+
165
+ fn into_inner(self) -> IdentityPublicKey {
166
+ self.0
167
+ }
168
+
169
+ fn inner(&self) -> &IdentityPublicKey {
170
+ &self.0
171
+ }
172
+
173
+ fn inner_mut(&mut self) -> &mut IdentityPublicKey {
174
+ &mut self.0
175
+ }
176
+ }
177
+
167
178
  impl From<IdentityPublicKey> for IdentityPublicKeyWasm {
168
179
  fn from(v: IdentityPublicKey) -> Self {
169
180
  IdentityPublicKeyWasm(v)