@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.
- package/Cargo.toml +22 -2
- package/dist/errors/patchConsensusErrors.js +94 -115
- package/dist/wasm/wasm_dpp.d.ts +2136 -4354
- package/dist/wasm/wasm_dpp.js +17748 -2769
- package/dist/wasm/wasm_dpp_bg.js +1 -1
- package/lib/dpp.ts +1 -1
- package/lib/errors/patchConsensusErrors.ts +94 -93
- package/lib/test/bootstrap.js +5 -0
- package/lib/test/fixtures/getDataContractFixture.js +2 -4
- package/lib/test/fixtures/getDocumentsFixture.js +4 -4
- package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +13 -19
- package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +7 -12
- package/lib/test/fixtures/getIdentityFixture.js +21 -32
- package/lib/test/fixtures/getIdentityTopUpTransitionFixture.js +7 -10
- package/lib/test/fixtures/getIdentityUpdateTransitionFixture.js +13 -28
- package/lib/test/fixtures/getPrivateAndPublicKeyForSigningFixture.js +7 -9
- package/lib/wasm/wasm_dpp.d.ts +2136 -4354
- package/package.json +4 -4
- package/src/dash_platform_protocol.rs +172 -195
- package/src/data_contract/data_contract.rs +255 -203
- package/src/data_contract/data_contract_facade.rs +24 -46
- package/src/data_contract/errors/mod.rs +1 -0
- package/src/data_contract/mod.rs +2 -2
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +82 -87
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +74 -80
- package/src/data_contract_factory/data_contract_factory.rs +28 -81
- package/src/document/document_facade.rs +74 -81
- package/src/document/errors/document_already_exists_error.rs +6 -6
- package/src/document/errors/document_no_revision_error.rs +1 -0
- package/src/document/errors/document_not_provided_error.rs +6 -6
- package/src/document/errors/invalid_document_action_error.rs +11 -7
- package/src/document/errors/invalid_initial_revision_error.rs +4 -4
- package/src/document/errors/mismatch_owners_ids_error.rs +5 -8
- package/src/document/errors/mod.rs +5 -0
- package/src/document/errors/revision_absent_error.rs +6 -6
- package/src/document/errors/trying_to_delete_immutable_document_error.rs +19 -0
- package/src/document/errors/trying_to_replace_immutable_document_error.rs +4 -4
- package/src/document/extended_document.rs +76 -76
- package/src/document/factory.rs +127 -123
- package/src/document/generate_document_id.rs +2 -2
- package/src/document/mod.rs +162 -148
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +50 -48
- package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +14 -14
- package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +50 -38
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +165 -153
- package/src/document/state_transition/document_batch_transition/mod.rs +230 -217
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -10
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -11
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -10
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -10
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -8
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -10
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -10
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -10
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -10
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -10
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -10
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -10
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -10
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -10
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -10
- package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -10
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -10
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -10
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -10
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -10
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -10
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -10
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -10
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -10
- package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -10
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +1 -10
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -10
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -10
- package/src/errors/consensus/basic/json_schema_error.rs +1 -9
- package/src/errors/consensus/basic/mod.rs +2 -0
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -10
- package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +2 -11
- package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +1 -10
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -10
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -10
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -10
- package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -10
- package/src/errors/consensus/consensus_error.rs +30 -21
- package/src/errors/consensus/deserialize.rs +2 -2
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -3
- package/src/errors/consensus/signature/basic_bls_error.rs +1 -10
- package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -10
- package/src/errors/consensus/signature/identity_not_found_error.rs +4 -3
- package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -10
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -3
- package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +1 -12
- package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +1 -10
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -2
- package/src/errors/consensus/state/data_contract/mod.rs +3 -1
- package/src/errors/consensus/state/document/document_already_present_error.rs +1 -10
- package/src/errors/consensus/state/document/document_not_found_error.rs +1 -10
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -10
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -10
- package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +1 -10
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -10
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -10
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -13
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -10
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -10
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -10
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -10
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -10
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -10
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -10
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -10
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -10
- package/src/errors/consensus/value_error.rs +1 -10
- package/src/errors/from.rs +12 -8
- package/src/errors/mod.rs +7 -7
- package/src/identity/factory_utils.rs +10 -10
- package/src/identity/identity.rs +275 -0
- package/src/identity/identity_facade.rs +69 -70
- package/src/identity/identity_factory.rs +57 -55
- package/src/identity/identity_public_key/mod.rs +86 -62
- package/src/identity/mod.rs +25 -256
- package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +0 -1
- package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +3 -1
- package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +0 -1
- package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +3 -1
- package/src/identity/state_transition/asset_lock_proof/mod.rs +112 -116
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +66 -52
- package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +0 -1
- package/src/identity/state_transition/identity_create_transition/mod.rs +3 -3
- package/src/identity/state_transition/identity_create_transition/to_object.rs +9 -11
- package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +3 -3
- package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +10 -13
- package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +72 -39
- package/src/identity/state_transition/identity_public_key_transitions.rs +81 -66
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +64 -51
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +0 -2
- package/src/identity/state_transition/identity_topup_transition/mod.rs +3 -3
- package/src/identity/state_transition/identity_topup_transition/to_object.rs +8 -12
- package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +95 -92
- package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
- package/src/identity/state_transition/identity_update_transition/to_object.rs +14 -18
- package/src/identity/state_transition/mod.rs +2 -2
- package/src/lib.rs +9 -9
- package/src/metadata.rs +3 -3
- package/src/protocol_version.rs +2 -2
- package/src/state_transition/errors/invalid_state_transition_error.rs +9 -9
- package/src/state_transition/fee/operations/pre_calculated_operation.rs +2 -1
- package/src/state_transition/mod.rs +137 -139
- package/src/state_transition/state_transition_facade.rs +1 -2
- package/src/state_transition/state_transition_factory.rs +139 -159
- package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
- package/src/state_transition/validation/validate_state_transition_identity_signature.rs +3 -4
- package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
- package/src/utils.rs +4 -2
- package/src/validation/validation_result.rs +1 -1
- package/test/integration/dataContract/DataContractFacade.spec.js +11 -15
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +1 -1
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +1 -1
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +1 -1
- package/test/integration/document/Document.spec.js +3 -3
- package/test/integration/document/DocumentFacade.spec.js +34 -33
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +1 -1
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +1 -1
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +1 -1
- package/test/integration/document/validation/validateDocumentFactory.spec.js +1 -1
- package/test/integration/identity/IdentityFacade.spec.js +29 -58
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +2 -2
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +2 -2
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +2 -2
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +4 -3
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +1 -1
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +2 -2
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +1 -1
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +39 -48
- package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
- package/test/unit/DashPlatformProtocol.spec.js +4 -18
- package/test/unit/dataContract/DataContract.spec.js +84 -123
- package/test/unit/dataContract/DataContractFactory.spec.js +1 -1
- package/test/unit/dataContract/createDataContract.spec.js +1 -1
- package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +14 -14
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +7 -8
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +1 -1
- package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +1 -1
- package/test/unit/document/Document.spec.js +18 -10
- package/test/unit/document/DocumentFactory.spec.js +10 -23
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +4 -4
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
- package/test/unit/identity/Identity.spec.js +34 -74
- package/test/unit/identity/IdentityFactory.spec.js +55 -68
- package/test/unit/identity/IdentityPublicKey.spec.js +30 -47
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +23 -55
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +7 -28
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +4 -4
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +19 -36
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +3 -3
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
- package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +14 -23
- package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
- package/test/unit/stateTransition/StateTransitionFactory.spec.js +13 -18
- package/test/unit/stateTransition/createStateTransitionFactory.spec.js +1 -1
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +1 -1
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +1 -1
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +1 -1
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +2 -2
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +1 -1
- package/test/unit/version/validateProtocolVersionFactory.spec.js +1 -1
- package/test-d/index.test-d.ts +2 -2
- package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +0 -45
- package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +0 -49
- package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs
CHANGED
|
@@ -1,34 +1,36 @@
|
|
|
1
|
-
use crate::utils::
|
|
1
|
+
use crate::utils::WithJsError;
|
|
2
2
|
|
|
3
|
-
use std::convert::TryInto;
|
|
4
3
|
use std::default::Default;
|
|
5
4
|
|
|
5
|
+
use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
|
|
6
|
+
use crate::errors::from_dpp_err;
|
|
7
|
+
use dpp::identity::KeyType;
|
|
8
|
+
use dpp::platform_value::BinaryData;
|
|
9
|
+
use dpp::serialization::ValueConvertible;
|
|
10
|
+
use dpp::state_transition::identity_topup_transition::fields::IDENTIFIER_FIELDS;
|
|
11
|
+
use dpp::version::PlatformVersion;
|
|
12
|
+
use serde_json::Value as JsonValue;
|
|
6
13
|
use wasm_bindgen::prelude::*;
|
|
7
14
|
|
|
8
15
|
use crate::identifier::IdentifierWrapper;
|
|
9
16
|
|
|
10
17
|
use crate::{
|
|
11
18
|
buffer::Buffer,
|
|
12
|
-
create_asset_lock_proof_from_wasm_instance,
|
|
13
|
-
errors::RustConversionError,
|
|
14
19
|
identity::state_transition::asset_lock_proof::{
|
|
15
20
|
ChainAssetLockProofWasm, InstantAssetLockProofWasm,
|
|
16
21
|
},
|
|
17
|
-
with_js_error,
|
|
22
|
+
utils, with_js_error,
|
|
18
23
|
};
|
|
19
24
|
|
|
20
|
-
use crate::
|
|
21
|
-
|
|
22
|
-
use dpp::identity::KeyType;
|
|
25
|
+
use crate::identity::state_transition::create_asset_lock_proof_from_wasm_instance;
|
|
23
26
|
use dpp::platform_value::string_encoding::Encoding;
|
|
24
|
-
use dpp::platform_value::{string_encoding,
|
|
25
|
-
use dpp::
|
|
27
|
+
use dpp::platform_value::{string_encoding, ReplacementType, Value};
|
|
28
|
+
use dpp::serialization::PlatformSerializable;
|
|
29
|
+
use dpp::state_transition::identity_topup_transition::accessors::IdentityTopUpTransitionAccessorsV0;
|
|
30
|
+
use dpp::state_transition::identity_topup_transition::IdentityTopUpTransition;
|
|
26
31
|
use dpp::state_transition::StateTransition;
|
|
27
32
|
use dpp::{
|
|
28
|
-
identifier::Identifier,
|
|
29
|
-
identity::state_transition::{
|
|
30
|
-
asset_lock_proof::AssetLockProof, identity_topup_transition::IdentityTopUpTransition,
|
|
31
|
-
},
|
|
33
|
+
identifier::Identifier, identity::state_transition::asset_lock_proof::AssetLockProof,
|
|
32
34
|
state_transition::StateTransitionLike,
|
|
33
35
|
};
|
|
34
36
|
|
|
@@ -51,23 +53,20 @@ impl From<IdentityTopUpTransitionWasm> for IdentityTopUpTransition {
|
|
|
51
53
|
#[wasm_bindgen(js_class = IdentityTopUpTransition)]
|
|
52
54
|
impl IdentityTopUpTransitionWasm {
|
|
53
55
|
#[wasm_bindgen(constructor)]
|
|
54
|
-
pub fn new(
|
|
55
|
-
let
|
|
56
|
-
|
|
57
|
-
let identity_topup_transition =
|
|
58
|
-
IdentityTopUpTransition::from_raw_object(raw_state_transition)
|
|
59
|
-
.map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
|
|
56
|
+
pub fn new(platform_version: u32) -> Result<IdentityTopUpTransitionWasm, JsValue> {
|
|
57
|
+
let platform_version =
|
|
58
|
+
&PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
|
|
60
59
|
|
|
61
|
-
|
|
60
|
+
IdentityTopUpTransition::default_versioned(&platform_version)
|
|
61
|
+
.map(Into::into)
|
|
62
|
+
.map_err(from_dpp_err)
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
#[wasm_bindgen(js_name=setAssetLockProof)]
|
|
65
66
|
pub fn set_asset_lock_proof(&mut self, asset_lock_proof: JsValue) -> Result<(), JsValue> {
|
|
66
67
|
let asset_lock_proof = create_asset_lock_proof_from_wasm_instance(&asset_lock_proof)?;
|
|
67
68
|
|
|
68
|
-
self.0
|
|
69
|
-
.set_asset_lock_proof(asset_lock_proof)
|
|
70
|
-
.map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
|
|
69
|
+
self.0.set_asset_lock_proof(asset_lock_proof);
|
|
71
70
|
|
|
72
71
|
Ok(())
|
|
73
72
|
}
|
|
@@ -79,7 +78,7 @@ impl IdentityTopUpTransitionWasm {
|
|
|
79
78
|
|
|
80
79
|
#[wasm_bindgen(js_name=getAssetLockProof)]
|
|
81
80
|
pub fn get_asset_lock_proof(&self) -> JsValue {
|
|
82
|
-
let asset_lock_proof = self.0.
|
|
81
|
+
let asset_lock_proof = self.0.asset_lock_proof().to_owned();
|
|
83
82
|
|
|
84
83
|
match asset_lock_proof {
|
|
85
84
|
AssetLockProof::Chain(chain_asset_lock_proof) => {
|
|
@@ -93,7 +92,7 @@ impl IdentityTopUpTransitionWasm {
|
|
|
93
92
|
|
|
94
93
|
#[wasm_bindgen(js_name=getType)]
|
|
95
94
|
pub fn get_type(&self) -> u8 {
|
|
96
|
-
self.0.
|
|
95
|
+
self.0.state_transition_type() as u8
|
|
97
96
|
}
|
|
98
97
|
|
|
99
98
|
#[wasm_bindgen(getter, js_name=identityId)]
|
|
@@ -103,23 +102,28 @@ impl IdentityTopUpTransitionWasm {
|
|
|
103
102
|
|
|
104
103
|
#[wasm_bindgen(js_name=getIdentityId)]
|
|
105
104
|
pub fn get_identity_id(&self) -> IdentifierWrapper {
|
|
106
|
-
(*self.0.
|
|
105
|
+
(*self.0.identity_id()).into()
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
#[wasm_bindgen(js_name=setIdentityId)]
|
|
109
|
+
pub fn set_identity_id(&mut self, identity_id: &IdentifierWrapper) {
|
|
110
|
+
self.0.set_identity_id(identity_id.to_owned().into());
|
|
107
111
|
}
|
|
108
112
|
|
|
109
113
|
#[wasm_bindgen(js_name=getOwnerId)]
|
|
110
114
|
pub fn get_owner_id(&self) -> IdentifierWrapper {
|
|
111
|
-
|
|
115
|
+
self.0.owner_id().to_owned().into()
|
|
112
116
|
}
|
|
113
117
|
|
|
114
118
|
#[wasm_bindgen(js_name=toObject)]
|
|
115
119
|
pub fn to_object(&self, options: JsValue) -> Result<JsValue, JsValue> {
|
|
116
120
|
let opts: super::to_object::ToObjectOptions = if options.is_object() {
|
|
117
|
-
with_js_error!(serde_wasm_bindgen::from_value(options))?
|
|
121
|
+
with_js_error!(serde_wasm_bindgen::from_value(options.clone()))?
|
|
118
122
|
} else {
|
|
119
123
|
Default::default()
|
|
120
124
|
};
|
|
121
125
|
|
|
122
|
-
let object = super::to_object::to_object_struct(&self.0, opts);
|
|
126
|
+
let object = super::to_object::to_object_struct(&self.0, &opts);
|
|
123
127
|
let js_object = js_sys::Object::new();
|
|
124
128
|
|
|
125
129
|
js_sys::Reflect::set(
|
|
@@ -128,11 +132,11 @@ impl IdentityTopUpTransitionWasm {
|
|
|
128
132
|
&object.transition_type.into(),
|
|
129
133
|
)?;
|
|
130
134
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
)?;
|
|
135
|
+
let version = match self.0 {
|
|
136
|
+
IdentityTopUpTransition::V0(_) => "0",
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
|
|
136
140
|
|
|
137
141
|
if let Some(signature) = object.signature {
|
|
138
142
|
let signature_value: JsValue = if signature.is_empty() {
|
|
@@ -170,15 +174,16 @@ impl IdentityTopUpTransitionWasm {
|
|
|
170
174
|
|
|
171
175
|
#[wasm_bindgen(js_name=toBuffer)]
|
|
172
176
|
pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
|
|
173
|
-
let bytes =
|
|
174
|
-
|
|
175
|
-
|
|
177
|
+
let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityTopUp(
|
|
178
|
+
self.0.clone(),
|
|
179
|
+
))
|
|
180
|
+
.with_js_error()?;
|
|
176
181
|
Ok(Buffer::from_bytes(&bytes))
|
|
177
182
|
}
|
|
178
183
|
|
|
179
184
|
#[wasm_bindgen(js_name=toJSON)]
|
|
180
185
|
pub fn to_json(&self) -> Result<JsValue, JsValue> {
|
|
181
|
-
let object = super::to_object::to_object_struct(&self.0, Default::default());
|
|
186
|
+
let object = super::to_object::to_object_struct(&self.0, &Default::default());
|
|
182
187
|
let js_object = js_sys::Object::new();
|
|
183
188
|
|
|
184
189
|
js_sys::Reflect::set(
|
|
@@ -187,12 +192,6 @@ impl IdentityTopUpTransitionWasm {
|
|
|
187
192
|
&object.transition_type.into(),
|
|
188
193
|
)?;
|
|
189
194
|
|
|
190
|
-
js_sys::Reflect::set(
|
|
191
|
-
&js_object,
|
|
192
|
-
&"protocolVersion".to_owned().into(),
|
|
193
|
-
&object.protocol_version.into(),
|
|
194
|
-
)?;
|
|
195
|
-
|
|
196
195
|
if let Some(signature) = object.signature {
|
|
197
196
|
let signature_value: JsValue = if signature.is_empty() {
|
|
198
197
|
JsValue::undefined()
|
|
@@ -203,6 +202,12 @@ impl IdentityTopUpTransitionWasm {
|
|
|
203
202
|
js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
|
|
204
203
|
}
|
|
205
204
|
|
|
205
|
+
let version = match self.0 {
|
|
206
|
+
IdentityTopUpTransition::V0(_) => "0",
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
|
|
210
|
+
|
|
206
211
|
let asset_lock_proof_json = match object.asset_lock_proof {
|
|
207
212
|
AssetLockProof::Instant(instant_asset_lock_proof) => {
|
|
208
213
|
InstantAssetLockProofWasm::from(instant_asset_lock_proof).to_json()?
|
|
@@ -230,8 +235,8 @@ impl IdentityTopUpTransitionWasm {
|
|
|
230
235
|
}
|
|
231
236
|
|
|
232
237
|
#[wasm_bindgen(js_name=getModifiedDataIds)]
|
|
233
|
-
pub fn
|
|
234
|
-
let ids = self.0.
|
|
238
|
+
pub fn modified_data_ids(&self) -> Vec<JsValue> {
|
|
239
|
+
let ids = self.0.modified_data_ids();
|
|
235
240
|
|
|
236
241
|
ids.into_iter()
|
|
237
242
|
.map(|id| <IdentifierWrapper as std::convert::From<Identifier>>::from(id).into())
|
|
@@ -277,18 +282,26 @@ impl IdentityTopUpTransitionWasm {
|
|
|
277
282
|
BlsAdapter(JsValue::undefined().into())
|
|
278
283
|
};
|
|
279
284
|
|
|
280
|
-
|
|
285
|
+
// TODO: not the best approach because it involves cloning the transition
|
|
286
|
+
// Probably it worth to return `sign_by_private_key` per state transition
|
|
287
|
+
let mut wrapper = StateTransition::IdentityTopUp(self.0.clone());
|
|
288
|
+
wrapper
|
|
281
289
|
.sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
|
|
282
|
-
.with_js_error()
|
|
290
|
+
.with_js_error()?;
|
|
291
|
+
|
|
292
|
+
self.0.set_signature(wrapper.signature().to_owned());
|
|
293
|
+
|
|
294
|
+
Ok(())
|
|
283
295
|
}
|
|
284
296
|
|
|
285
297
|
#[wasm_bindgen(js_name=getSignature)]
|
|
286
298
|
pub fn get_signature(&self) -> Buffer {
|
|
287
|
-
Buffer::from_bytes(self.0.
|
|
299
|
+
Buffer::from_bytes(self.0.signature().as_slice())
|
|
288
300
|
}
|
|
289
301
|
|
|
290
302
|
#[wasm_bindgen(js_name=setSignature)]
|
|
291
303
|
pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
|
|
292
|
-
self.0
|
|
304
|
+
self.0
|
|
305
|
+
.set_signature(BinaryData::new(signature.unwrap_or(vec![])))
|
|
293
306
|
}
|
|
294
307
|
}
|
|
@@ -4,8 +4,6 @@ use dpp::identity::state_transition::asset_lock_proof::{
|
|
|
4
4
|
};
|
|
5
5
|
use dpp::identity::state_transition::identity_topup_transition::validation::basic::IdentityTopUpTransitionBasicValidator;
|
|
6
6
|
|
|
7
|
-
use dpp::state_transition::state_transition_execution_context::StateTransitionExecutionContext;
|
|
8
|
-
|
|
9
7
|
use dpp::version::{ProtocolVersionValidator, COMPATIBILITY_MAP, LATEST_VERSION};
|
|
10
8
|
use dpp::ProtocolError;
|
|
11
9
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
pub use identity_topup_transition::*;
|
|
2
2
|
|
|
3
|
-
pub mod apply_identity_topup_transition;
|
|
3
|
+
// pub mod apply_identity_topup_transition;
|
|
4
4
|
pub mod identity_topup_transition;
|
|
5
|
-
pub mod identity_topup_transition_basic_validator;
|
|
6
|
-
pub mod identity_topup_transition_state_validator;
|
|
5
|
+
// pub mod identity_topup_transition_basic_validator;
|
|
6
|
+
// pub mod identity_topup_transition_state_validator;
|
|
7
7
|
|
|
8
8
|
mod to_object;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
|
|
2
|
-
use dpp::
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
state_transition::StateTransitionLike,
|
|
6
|
-
};
|
|
2
|
+
use dpp::state_transition::identity_topup_transition::accessors::IdentityTopUpTransitionAccessorsV0;
|
|
3
|
+
use dpp::state_transition::identity_topup_transition::IdentityTopUpTransition;
|
|
4
|
+
use dpp::{identifier::Identifier, state_transition::StateTransitionLike};
|
|
7
5
|
use serde::Deserialize;
|
|
8
6
|
use std::default::Default;
|
|
9
7
|
|
|
@@ -16,7 +14,6 @@ pub struct ToObjectOptions {
|
|
|
16
14
|
#[derive(Default)]
|
|
17
15
|
pub struct ToObject {
|
|
18
16
|
pub transition_type: u8,
|
|
19
|
-
pub protocol_version: u32,
|
|
20
17
|
pub identity_id: Identifier,
|
|
21
18
|
pub asset_lock_proof: AssetLockProof,
|
|
22
19
|
pub signature: Option<Vec<u8>>,
|
|
@@ -24,18 +21,17 @@ pub struct ToObject {
|
|
|
24
21
|
|
|
25
22
|
pub fn to_object_struct(
|
|
26
23
|
transition: &IdentityTopUpTransition,
|
|
27
|
-
options: ToObjectOptions,
|
|
24
|
+
options: &ToObjectOptions,
|
|
28
25
|
) -> ToObject {
|
|
29
26
|
let mut to_object = ToObject {
|
|
30
|
-
transition_type: transition.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
asset_lock_proof: transition.get_asset_lock_proof().to_owned(),
|
|
27
|
+
transition_type: transition.state_transition_type() as u8,
|
|
28
|
+
identity_id: *transition.identity_id(),
|
|
29
|
+
asset_lock_proof: transition.asset_lock_proof().to_owned(),
|
|
34
30
|
signature: None,
|
|
35
31
|
};
|
|
36
32
|
|
|
37
33
|
if !options.skip_signature.unwrap_or(false) {
|
|
38
|
-
to_object.signature = Some(transition.
|
|
34
|
+
to_object.signature = Some(transition.signature().to_vec());
|
|
39
35
|
}
|
|
40
36
|
|
|
41
37
|
to_object
|
package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs
CHANGED
|
@@ -1,36 +1,40 @@
|
|
|
1
1
|
use std::convert::TryInto;
|
|
2
2
|
use std::default::Default;
|
|
3
3
|
|
|
4
|
-
use dpp::consensus::signature::SignatureError;
|
|
5
4
|
use serde::{Deserialize, Serialize};
|
|
5
|
+
use serde_json::Value as JsonValue;
|
|
6
6
|
use wasm_bindgen::__rt::Ref;
|
|
7
7
|
use wasm_bindgen::prelude::*;
|
|
8
8
|
|
|
9
9
|
use crate::identifier::IdentifierWrapper;
|
|
10
10
|
|
|
11
11
|
use crate::{
|
|
12
|
-
buffer::Buffer,
|
|
12
|
+
buffer::Buffer,
|
|
13
13
|
identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitnessWasm,
|
|
14
|
-
identity::IdentityPublicKeyWasm, with_js_error,
|
|
14
|
+
identity::IdentityPublicKeyWasm, utils, with_js_error,
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
|
|
18
18
|
|
|
19
19
|
use crate::utils::{generic_of_js_val, WithJsError};
|
|
20
20
|
|
|
21
|
-
use
|
|
22
|
-
use dpp::
|
|
21
|
+
use crate::errors::from_dpp_err;
|
|
22
|
+
use dpp::errors::consensus::signature::SignatureError;
|
|
23
|
+
use dpp::errors::consensus::ConsensusError;
|
|
24
|
+
use dpp::errors::ProtocolError;
|
|
23
25
|
use dpp::identity::{KeyID, KeyType, TimestampMillis};
|
|
24
26
|
use dpp::platform_value::string_encoding::Encoding;
|
|
25
|
-
use dpp::platform_value::{string_encoding, BinaryData, Value};
|
|
27
|
+
use dpp::platform_value::{string_encoding, BinaryData, ReplacementType, Value};
|
|
26
28
|
use dpp::prelude::Revision;
|
|
27
|
-
use dpp::
|
|
28
|
-
use dpp::
|
|
29
|
-
use dpp::
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
use dpp::serialization::PlatformSerializable;
|
|
30
|
+
use dpp::serialization::ValueConvertible;
|
|
31
|
+
use dpp::state_transition::identity_update_transition::accessors::IdentityUpdateTransitionAccessorsV0;
|
|
32
|
+
use dpp::state_transition::identity_update_transition::IdentityUpdateTransition;
|
|
33
|
+
use dpp::state_transition::public_key_in_creation::IdentityPublicKeyInCreation;
|
|
34
|
+
use dpp::state_transition::StateTransition;
|
|
35
|
+
use dpp::state_transition::StateTransitionIdentitySigned;
|
|
36
|
+
use dpp::version::PlatformVersion;
|
|
37
|
+
use dpp::{identifier::Identifier, state_transition::StateTransitionLike};
|
|
34
38
|
|
|
35
39
|
#[wasm_bindgen(js_name=IdentityUpdateTransition)]
|
|
36
40
|
#[derive(Clone)]
|
|
@@ -61,29 +65,23 @@ impl From<IdentityUpdateTransitionWasm> for IdentityUpdateTransition {
|
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
|
|
64
|
-
pub fn js_value_to_identity_update_transition_object(object: JsValue) -> Result<Value, JsValue> {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
68
|
+
// pub fn js_value_to_identity_update_transition_object(object: JsValue) -> Result<Value, JsValue> {
|
|
69
|
+
// let parameters: IdentityUpdateTransitionParams =
|
|
70
|
+
// with_js_error!(serde_wasm_bindgen::from_value(object))?;
|
|
71
|
+
//
|
|
72
|
+
// platform_value::to_value(parameters).map_err(|e| e.to_string().into())
|
|
73
|
+
// }
|
|
70
74
|
|
|
71
75
|
#[wasm_bindgen(js_class = IdentityUpdateTransition)]
|
|
72
76
|
impl IdentityUpdateTransitionWasm {
|
|
73
77
|
#[wasm_bindgen(constructor)]
|
|
74
|
-
pub fn new(
|
|
75
|
-
let
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
IdentityUpdateTransition::clean_value(&mut identity_update_transition_object)
|
|
79
|
-
.map_err(ProtocolError::ValueError)
|
|
80
|
-
.with_js_error()?;
|
|
78
|
+
pub fn new(platform_version: u32) -> Result<IdentityUpdateTransitionWasm, JsValue> {
|
|
79
|
+
let platform_version =
|
|
80
|
+
&PlatformVersion::get(platform_version).map_err(|e| JsValue::from(e.to_string()))?;
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
Ok(identity_update_transition.into())
|
|
82
|
+
IdentityUpdateTransition::default_versioned(&platform_version)
|
|
83
|
+
.map(Into::into)
|
|
84
|
+
.map_err(from_dpp_err)
|
|
87
85
|
}
|
|
88
86
|
|
|
89
87
|
#[wasm_bindgen(js_name=setPublicKeysToAdd)]
|
|
@@ -114,7 +112,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
114
112
|
#[wasm_bindgen(js_name=getPublicKeysToAdd)]
|
|
115
113
|
pub fn get_public_keys_add(&self) -> Vec<JsValue> {
|
|
116
114
|
self.0
|
|
117
|
-
.
|
|
115
|
+
.public_keys_to_add()
|
|
118
116
|
.iter()
|
|
119
117
|
.map(|key| IdentityPublicKeyWithWitnessWasm::from(key.to_owned()).into())
|
|
120
118
|
.collect()
|
|
@@ -128,7 +126,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
128
126
|
#[wasm_bindgen(js_name=getPublicKeyIdsToDisable)]
|
|
129
127
|
pub fn get_public_key_ids_to_disable(&self) -> Vec<JsValue> {
|
|
130
128
|
self.0
|
|
131
|
-
.
|
|
129
|
+
.public_key_ids_to_disable()
|
|
132
130
|
.iter()
|
|
133
131
|
.map(|key| JsValue::from_f64(key.to_owned() as f64))
|
|
134
132
|
.collect()
|
|
@@ -150,7 +148,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
150
148
|
#[wasm_bindgen(js_name=getPublicKeysDisabledAt)]
|
|
151
149
|
pub fn get_public_keys_disabled_at(&self) -> Option<js_sys::Date> {
|
|
152
150
|
self.0
|
|
153
|
-
.
|
|
151
|
+
.public_keys_disabled_at()
|
|
154
152
|
.map(|timestamp| js_sys::Date::new(&JsValue::from_f64(timestamp as f64)))
|
|
155
153
|
}
|
|
156
154
|
|
|
@@ -166,7 +164,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
166
164
|
|
|
167
165
|
#[wasm_bindgen(js_name=getType)]
|
|
168
166
|
pub fn get_type(&self) -> u8 {
|
|
169
|
-
self.0.
|
|
167
|
+
self.0.state_transition_type() as u8
|
|
170
168
|
}
|
|
171
169
|
|
|
172
170
|
#[wasm_bindgen(getter, js_name=identityId)]
|
|
@@ -176,7 +174,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
176
174
|
|
|
177
175
|
#[wasm_bindgen(js_name=getIdentityId)]
|
|
178
176
|
pub fn get_identity_id(&self) -> IdentifierWrapper {
|
|
179
|
-
|
|
177
|
+
self.0.identity_id().to_owned().into()
|
|
180
178
|
}
|
|
181
179
|
|
|
182
180
|
#[wasm_bindgen(js_name=setIdentityId)]
|
|
@@ -186,7 +184,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
186
184
|
|
|
187
185
|
#[wasm_bindgen(js_name=getOwnerId)]
|
|
188
186
|
pub fn get_owner_id(&self) -> IdentifierWrapper {
|
|
189
|
-
(
|
|
187
|
+
StateTransitionLike::owner_id(&self.0).to_owned().into()
|
|
190
188
|
}
|
|
191
189
|
|
|
192
190
|
#[wasm_bindgen(js_name=toObject)]
|
|
@@ -197,7 +195,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
197
195
|
Default::default()
|
|
198
196
|
};
|
|
199
197
|
|
|
200
|
-
let object = super::to_object::to_object_struct(&self.0, opts);
|
|
198
|
+
let object = super::to_object::to_object_struct(&self.0, &opts);
|
|
201
199
|
let js_object = js_sys::Object::new();
|
|
202
200
|
|
|
203
201
|
js_sys::Reflect::set(
|
|
@@ -206,11 +204,11 @@ impl IdentityUpdateTransitionWasm {
|
|
|
206
204
|
&object.transition_type.into(),
|
|
207
205
|
)?;
|
|
208
206
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
)?;
|
|
207
|
+
let version = match self.0 {
|
|
208
|
+
IdentityUpdateTransition::V0(_) => "0",
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
|
|
214
212
|
|
|
215
213
|
js_sys::Reflect::set(
|
|
216
214
|
&js_object,
|
|
@@ -227,33 +225,28 @@ impl IdentityUpdateTransitionWasm {
|
|
|
227
225
|
|
|
228
226
|
js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
|
|
229
227
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
)?;
|
|
236
|
-
} else {
|
|
237
|
-
js_sys::Reflect::set(
|
|
238
|
-
&js_object,
|
|
239
|
-
&"signaturePublicKeyId".to_owned().into(),
|
|
240
|
-
&JsValue::undefined(),
|
|
241
|
-
)?;
|
|
242
|
-
}
|
|
228
|
+
js_sys::Reflect::set(
|
|
229
|
+
&js_object,
|
|
230
|
+
&"signaturePublicKeyId".to_owned().into(),
|
|
231
|
+
&JsValue::from(object.signature_public_key_id),
|
|
232
|
+
)?;
|
|
243
233
|
}
|
|
244
234
|
|
|
245
235
|
if let Some(timestamp) = object.public_keys_disabled_at {
|
|
246
236
|
js_sys::Reflect::set(
|
|
247
237
|
&js_object,
|
|
248
238
|
&"publicKeysDisabledAt".to_owned().into(),
|
|
249
|
-
&(timestamp as
|
|
239
|
+
&js_sys::Date::new(&JsValue::from_f64(timestamp as f64)).into(),
|
|
250
240
|
)?;
|
|
251
241
|
}
|
|
252
242
|
|
|
253
243
|
if let Some(public_keys_to_add) = object.public_keys_to_add {
|
|
254
244
|
let keys_objects = public_keys_to_add
|
|
255
245
|
.into_iter()
|
|
256
|
-
.map(|key|
|
|
246
|
+
.map(|key| {
|
|
247
|
+
IdentityPublicKeyWithWitnessWasm::from(key)
|
|
248
|
+
.to_object(opts.skip_signature.unwrap_or(false))
|
|
249
|
+
})
|
|
257
250
|
.collect::<Result<js_sys::Array, _>>()?;
|
|
258
251
|
|
|
259
252
|
js_sys::Reflect::set(
|
|
@@ -287,15 +280,16 @@ impl IdentityUpdateTransitionWasm {
|
|
|
287
280
|
|
|
288
281
|
#[wasm_bindgen(js_name=toBuffer)]
|
|
289
282
|
pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
|
|
290
|
-
let bytes =
|
|
291
|
-
|
|
292
|
-
|
|
283
|
+
let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityUpdate(
|
|
284
|
+
self.0.clone(),
|
|
285
|
+
))
|
|
286
|
+
.with_js_error()?;
|
|
293
287
|
Ok(Buffer::from_bytes(&bytes))
|
|
294
288
|
}
|
|
295
289
|
|
|
296
290
|
#[wasm_bindgen(js_name=toJSON)]
|
|
297
291
|
pub fn to_json(&self) -> Result<JsValue, JsValue> {
|
|
298
|
-
let object = super::to_object::to_object_struct(&self.0, Default::default());
|
|
292
|
+
let object = super::to_object::to_object_struct(&self.0, &Default::default());
|
|
299
293
|
let js_object = js_sys::Object::new();
|
|
300
294
|
|
|
301
295
|
js_sys::Reflect::set(
|
|
@@ -304,11 +298,11 @@ impl IdentityUpdateTransitionWasm {
|
|
|
304
298
|
&object.transition_type.into(),
|
|
305
299
|
)?;
|
|
306
300
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
)?;
|
|
301
|
+
let version = match self.0 {
|
|
302
|
+
IdentityUpdateTransition::V0(_) => "0",
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
js_sys::Reflect::set(&js_object, &"$version".to_owned().into(), &version.into())?;
|
|
312
306
|
|
|
313
307
|
js_sys::Reflect::set(
|
|
314
308
|
&js_object,
|
|
@@ -325,26 +319,18 @@ impl IdentityUpdateTransitionWasm {
|
|
|
325
319
|
|
|
326
320
|
js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
|
|
327
321
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
)?;
|
|
334
|
-
} else {
|
|
335
|
-
js_sys::Reflect::set(
|
|
336
|
-
&js_object,
|
|
337
|
-
&"signaturePublicKeyId".to_owned().into(),
|
|
338
|
-
&JsValue::undefined(),
|
|
339
|
-
)?;
|
|
340
|
-
}
|
|
322
|
+
js_sys::Reflect::set(
|
|
323
|
+
&js_object,
|
|
324
|
+
&"signaturePublicKeyId".to_owned().into(),
|
|
325
|
+
&object.signature_public_key_id.into(),
|
|
326
|
+
)?;
|
|
341
327
|
}
|
|
342
328
|
|
|
343
329
|
if let Some(timestamp) = object.public_keys_disabled_at {
|
|
344
330
|
js_sys::Reflect::set(
|
|
345
331
|
&js_object,
|
|
346
332
|
&"publicKeysDisabledAt".to_owned().into(),
|
|
347
|
-
&(timestamp as
|
|
333
|
+
&JsValue::from_f64(timestamp as f64),
|
|
348
334
|
)?;
|
|
349
335
|
}
|
|
350
336
|
|
|
@@ -386,8 +372,8 @@ impl IdentityUpdateTransitionWasm {
|
|
|
386
372
|
}
|
|
387
373
|
|
|
388
374
|
#[wasm_bindgen(js_name=getModifiedDataIds)]
|
|
389
|
-
pub fn
|
|
390
|
-
let ids = self.0.
|
|
375
|
+
pub fn modified_data_ids(&self) -> Vec<JsValue> {
|
|
376
|
+
let ids = self.0.modified_data_ids();
|
|
391
377
|
|
|
392
378
|
ids.into_iter()
|
|
393
379
|
.map(|id| <IdentifierWrapper as std::convert::From<Identifier>>::from(id).into())
|
|
@@ -433,9 +419,16 @@ impl IdentityUpdateTransitionWasm {
|
|
|
433
419
|
BlsAdapter(JsValue::undefined().into())
|
|
434
420
|
};
|
|
435
421
|
|
|
436
|
-
|
|
422
|
+
// TODO: not the best approach because it involves cloning the transition
|
|
423
|
+
// Probably it worth to return `sign_by_private_key` per state transition
|
|
424
|
+
let mut wrapper = StateTransition::IdentityUpdate(self.0.clone());
|
|
425
|
+
wrapper
|
|
437
426
|
.sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
|
|
438
|
-
.with_js_error()
|
|
427
|
+
.with_js_error()?;
|
|
428
|
+
|
|
429
|
+
self.0.set_signature(wrapper.signature().to_owned());
|
|
430
|
+
|
|
431
|
+
Ok(())
|
|
439
432
|
}
|
|
440
433
|
|
|
441
434
|
#[wasm_bindgen(js_name=setSignaturePublicKeyId)]
|
|
@@ -445,17 +438,18 @@ impl IdentityUpdateTransitionWasm {
|
|
|
445
438
|
|
|
446
439
|
#[wasm_bindgen(js_name=getSignature)]
|
|
447
440
|
pub fn get_signature(&self) -> Buffer {
|
|
448
|
-
Buffer::from_bytes_owned(self.0.
|
|
441
|
+
Buffer::from_bytes_owned(self.0.signature().to_vec())
|
|
449
442
|
}
|
|
450
443
|
|
|
451
444
|
#[wasm_bindgen(js_name=setSignature)]
|
|
452
445
|
pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
|
|
453
|
-
self.0
|
|
446
|
+
self.0
|
|
447
|
+
.set_signature(BinaryData::new(signature.unwrap_or(vec![])))
|
|
454
448
|
}
|
|
455
449
|
|
|
456
450
|
#[wasm_bindgen(js_name=getRevision)]
|
|
457
451
|
pub fn get_revision(&self) -> u32 {
|
|
458
|
-
self.0.
|
|
452
|
+
self.0.revision() as u32
|
|
459
453
|
}
|
|
460
454
|
|
|
461
455
|
#[wasm_bindgen(js_name=setRevision)]
|
|
@@ -471,13 +465,23 @@ impl IdentityUpdateTransitionWasm {
|
|
|
471
465
|
bls: JsBlsAdapter,
|
|
472
466
|
) -> Result<(), JsValue> {
|
|
473
467
|
let bls_adapter = BlsAdapter(bls);
|
|
474
|
-
|
|
468
|
+
// TODO: come up with a better way to set signature to the binding.
|
|
469
|
+
let mut state_transition = StateTransition::IdentityUpdate(self.0.clone());
|
|
470
|
+
state_transition
|
|
475
471
|
.sign(
|
|
476
472
|
&identity_public_key.to_owned().into(),
|
|
477
473
|
&private_key,
|
|
478
474
|
&bls_adapter,
|
|
479
475
|
)
|
|
480
|
-
.with_js_error()
|
|
476
|
+
.with_js_error()?;
|
|
477
|
+
|
|
478
|
+
let signature = state_transition.signature().to_owned();
|
|
479
|
+
let signature_public_key_id = state_transition.signature_public_key_id().unwrap_or(0);
|
|
480
|
+
|
|
481
|
+
self.0.set_signature(signature);
|
|
482
|
+
self.0.set_signature_public_key_id(signature_public_key_id);
|
|
483
|
+
|
|
484
|
+
Ok(())
|
|
481
485
|
}
|
|
482
486
|
|
|
483
487
|
#[wasm_bindgen(js_name=verifySignature)]
|
|
@@ -488,8 +492,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
488
492
|
) -> Result<bool, JsValue> {
|
|
489
493
|
let bls_adapter = BlsAdapter(bls);
|
|
490
494
|
|
|
491
|
-
let verification_result = self
|
|
492
|
-
.0
|
|
495
|
+
let verification_result = StateTransition::IdentityUpdate(self.0.clone())
|
|
493
496
|
.verify_signature(&identity_public_key.to_owned().into(), &bls_adapter);
|
|
494
497
|
|
|
495
498
|
match verification_result {
|