@dashevo/wasm-dpp 0.25.0-dev.8 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.toml +33 -7
- package/README.md +11 -6
- package/dist/errors/patchConsensusErrors.js +94 -115
- package/dist/wasm/wasm_dpp.d.ts +2213 -4113
- package/dist/wasm/wasm_dpp.js +17748 -2639
- 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 +11 -5
- package/lib/test/fixtures/getDocumentsFixture.js +9 -5
- package/lib/test/fixtures/getIdentityCreateTransitionFixture.js +14 -20
- package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +14 -0
- 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/test/fixtures/js/generateRandomIdentifier.js +1 -0
- package/lib/test/fixtures/js/getChainAssetLockProofFixture.js +1 -0
- package/lib/test/fixtures/js/getDataContractFixture.js +1 -0
- package/lib/test/fixtures/js/getDocumentTransitionsFixture.js +1 -0
- package/lib/test/fixtures/js/getDocumentsFixture.js +1 -0
- package/lib/test/fixtures/js/getInstantAssetLockProofFixture.js +1 -0
- package/lib/test/mocks/createStateRepositoryMock.js +1 -0
- package/lib/wasm/wasm_dpp.d.ts +2213 -4113
- package/package.json +6 -6
- package/scripts/build-wasm.sh +30 -29
- package/src/bls_adapter.rs +1 -1
- package/src/dash_platform_protocol.rs +173 -196
- package/src/data_contract/data_contract.rs +309 -199
- package/src/data_contract/data_contract_facade.rs +28 -47
- 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 +92 -79
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +84 -77
- package/src/data_contract_factory/data_contract_factory.rs +43 -83
- package/src/document/document_facade.rs +81 -76
- 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 +140 -119
- package/src/document/generate_document_id.rs +2 -2
- package/src/document/mod.rs +164 -150
- 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 +232 -222
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +2 -9
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +2 -10
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +1 -9
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +1 -9
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +10 -7
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +1 -9
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +1 -9
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -9
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -9
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +1 -9
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +1 -9
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +1 -9
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +1 -9
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +1 -9
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +1 -9
- package/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +1 -9
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +1 -9
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -9
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -9
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +3 -11
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +1 -9
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +2 -10
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +1 -9
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +1 -1
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +1 -9
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +1 -9
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +1 -9
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +1 -9
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +1 -9
- package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -9
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +7 -15
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +1 -9
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +1 -9
- 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 -9
- 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 -9
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +1 -9
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +1 -9
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +1 -9
- package/src/errors/consensus/basic/unsupported_version_error.rs +44 -0
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +1 -9
- package/src/errors/consensus/consensus_error.rs +44 -21
- package/src/errors/consensus/deserialize.rs +2 -1
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +5 -2
- package/src/errors/consensus/signature/basic_bls_error.rs +1 -9
- package/src/errors/consensus/signature/basic_ecdsa_error.rs +1 -9
- package/src/errors/consensus/signature/identity_not_found_error.rs +4 -2
- package/src/errors/consensus/signature/signature_should_not_be_present_error.rs +1 -9
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +3 -2
- package/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +42 -0
- package/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +44 -0
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +2 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +2 -1
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +2 -1
- package/src/errors/consensus/state/data_contract/mod.rs +7 -1
- package/src/errors/consensus/state/document/document_already_present_error.rs +1 -9
- package/src/errors/consensus/state/document/document_not_found_error.rs +1 -9
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +1 -9
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +1 -9
- package/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +34 -0
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +1 -9
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +1 -9
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +9 -12
- package/src/errors/consensus/state/document/mod.rs +2 -0
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +1 -9
- package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +1 -9
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +1 -9
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +1 -9
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +1 -9
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +1 -9
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -9
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +1 -9
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +1 -9
- package/src/errors/consensus/value_error.rs +1 -9
- package/src/errors/from.rs +12 -8
- package/src/errors/mod.rs +7 -7
- package/src/errors/value_error.rs +5 -0
- package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +1 -2
- package/src/identity/factory_utils.rs +13 -13
- package/src/identity/identity.rs +275 -0
- package/src/identity/identity_facade.rs +87 -70
- package/src/identity/identity_factory.rs +74 -54
- package/src/identity/identity_public_key/mod.rs +87 -64
- package/src/identity/mod.rs +25 -247
- 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.rs +2 -2
- 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 +71 -65
- 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 +10 -12
- package/src/identity/state_transition/identity_credit_transfer_transition/apply_identity_credit_transfer_transition.rs +31 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_basic_validator.rs +66 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/identity_credit_transfer_transition_state_validator.rs +44 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/mod.rs +8 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/to_object.rs +49 -0
- package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +344 -0
- package/src/identity/state_transition/identity_public_key_transitions.rs +89 -75
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +67 -62
- 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_public_keys_validator.rs +2 -2
- package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +99 -104
- package/src/identity/state_transition/identity_update_transition/mod.rs +4 -4
- package/src/identity/state_transition/identity_update_transition/to_object.rs +15 -19
- package/src/identity/state_transition/mod.rs +5 -2
- package/src/identity/state_transition/transition_types.rs +34 -0
- package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
- package/src/lib.rs +10 -11
- package/src/metadata.rs +3 -3
- package/src/protocol_version.rs +7 -0
- package/src/state_transition/conversion.rs +11 -1
- package/src/state_transition/errors/invalid_state_transition_error.rs +12 -1
- 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 +11 -11
- package/src/state_transition/state_transition_factory.rs +142 -153
- package/src/state_transition/validation/state_transition_fee_validator.rs +1 -1
- package/src/state_transition/validation/validate_state_transition_identity_signature.rs +28 -10
- package/src/state_transition/validation/validate_state_transition_key_signature.rs +1 -1
- package/src/utils.rs +7 -8
- package/src/validation/validation_result.rs +1 -0
- package/test/integration/dataContract/DataContractFacade.spec.js +25 -32
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +6 -6
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +11 -10
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +3 -3
- package/test/integration/document/Document.spec.js +3 -3
- package/test/integration/document/DocumentFacade.spec.js +39 -38
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +6 -7
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +15 -15
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +2 -2
- package/test/integration/document/validation/validateDocumentFactory.spec.js +3 -3
- package/test/integration/identity/IdentityFacade.spec.js +33 -62
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +6 -8
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +4 -7
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +1 -1
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +21 -24
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +2 -2
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +4 -4
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +7 -10
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +4 -5
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +6 -6
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +3 -7
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +7 -6
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +5 -25
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +45 -58
- package/test/integration/util/generateTemporaryEcdsaPrivateKey.spec.js +1 -1
- package/test/unit/DashPlatformProtocol.spec.js +10 -25
- package/test/unit/dataContract/DataContract.spec.js +119 -148
- package/test/unit/dataContract/DataContractFactory.spec.js +42 -31
- package/test/unit/dataContract/createDataContract.spec.js +6 -6
- package/test/unit/dataContract/generateDataContractId.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +34 -26
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +7 -9
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +10 -9
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +28 -19
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +7 -7
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +5 -5
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +11 -10
- package/test/unit/dataContract/validation/validateDataContractPatterns.spec.js +7 -7
- package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +1 -1
- package/test/unit/document/Document.spec.js +31 -20
- package/test/unit/document/DocumentFactory.spec.js +45 -110
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +6 -7
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +11 -12
- 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 +9 -9
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +1 -1
- package/test/unit/identity/Identity.spec.js +46 -81
- package/test/unit/identity/IdentityFactory.spec.js +61 -75
- package/test/unit/identity/IdentityPublicKey.spec.js +34 -48
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +30 -63
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +9 -15
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +5 -9
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +13 -35
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +9 -13
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +5 -9
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +24 -46
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +4 -4
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +1 -1
- package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +130 -0
- package/test/unit/stateTransition/StateTransitionExecutionContext.spec.js +1 -1
- package/test/unit/stateTransition/StateTransitionFactory.spec.js +16 -22
- package/test/unit/stateTransition/createStateTransitionFactory.spec.js +43 -21
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +3 -3
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +5 -17
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +9 -5
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +8 -14
- 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/decode_protocol_entity.rs +0 -25
- package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +0 -25
- package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +0 -148
- package/test/integration/util/generateEntropy.spec.js +0 -17
- package/test/integration/util/serializer.spec.js +0 -24
- package/test/unit/decodeProtocolEntityFactory.spec.js +0 -69
- package/test/unit/identity/errors/InvalidIdentityError.spec.js +0 -46
- package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +0 -51
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
|
-
use crate::errors::from_dpp_err;
|
|
20
19
|
use crate::utils::{generic_of_js_val, WithJsError};
|
|
21
20
|
|
|
22
|
-
use
|
|
23
|
-
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;
|
|
24
25
|
use dpp::identity::{KeyID, KeyType, TimestampMillis};
|
|
25
26
|
use dpp::platform_value::string_encoding::Encoding;
|
|
26
|
-
use dpp::platform_value::{string_encoding, BinaryData, Value};
|
|
27
|
+
use dpp::platform_value::{string_encoding, BinaryData, ReplacementType, Value};
|
|
27
28
|
use dpp::prelude::Revision;
|
|
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)]
|
|
@@ -44,7 +48,7 @@ struct IdentityUpdateTransitionParams {
|
|
|
44
48
|
protocol_version: u32,
|
|
45
49
|
identity_id: Vec<u8>,
|
|
46
50
|
revision: Revision,
|
|
47
|
-
add_public_keys: Option<Vec<
|
|
51
|
+
add_public_keys: Option<Vec<IdentityPublicKeyInCreation>>,
|
|
48
52
|
disable_public_keys: Option<Vec<KeyID>>,
|
|
49
53
|
public_keys_disabled_at: Option<TimestampMillis>,
|
|
50
54
|
}
|
|
@@ -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()?;
|
|
81
|
-
|
|
82
|
-
let identity_update_transition =
|
|
83
|
-
IdentityUpdateTransition::new(identity_update_transition_object)
|
|
84
|
-
.map_err(|e| RustConversionError::Error(e.to_string()).to_js_value())?;
|
|
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()))?;
|
|
85
81
|
|
|
86
|
-
|
|
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)]
|
|
@@ -103,7 +101,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
103
101
|
)?;
|
|
104
102
|
Ok(public_key.clone().into())
|
|
105
103
|
})
|
|
106
|
-
.collect::<Result<Vec<
|
|
104
|
+
.collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
|
|
107
105
|
}
|
|
108
106
|
|
|
109
107
|
self.0.set_public_keys_to_add(keys_to_add);
|
|
@@ -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(
|
|
@@ -286,24 +279,17 @@ impl IdentityUpdateTransitionWasm {
|
|
|
286
279
|
}
|
|
287
280
|
|
|
288
281
|
#[wasm_bindgen(js_name=toBuffer)]
|
|
289
|
-
pub fn to_buffer(&self
|
|
290
|
-
let
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
let buffer = self
|
|
297
|
-
.0
|
|
298
|
-
.to_cbor_buffer(opts.skip_signature.unwrap_or(false))
|
|
299
|
-
.map_err(from_dpp_err)?;
|
|
300
|
-
|
|
301
|
-
Ok(Buffer::from_bytes(&buffer).into())
|
|
282
|
+
pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
|
|
283
|
+
let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::IdentityUpdate(
|
|
284
|
+
self.0.clone(),
|
|
285
|
+
))
|
|
286
|
+
.with_js_error()?;
|
|
287
|
+
Ok(Buffer::from_bytes(&bytes))
|
|
302
288
|
}
|
|
303
289
|
|
|
304
290
|
#[wasm_bindgen(js_name=toJSON)]
|
|
305
291
|
pub fn to_json(&self) -> Result<JsValue, JsValue> {
|
|
306
|
-
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());
|
|
307
293
|
let js_object = js_sys::Object::new();
|
|
308
294
|
|
|
309
295
|
js_sys::Reflect::set(
|
|
@@ -312,11 +298,11 @@ impl IdentityUpdateTransitionWasm {
|
|
|
312
298
|
&object.transition_type.into(),
|
|
313
299
|
)?;
|
|
314
300
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
)?;
|
|
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())?;
|
|
320
306
|
|
|
321
307
|
js_sys::Reflect::set(
|
|
322
308
|
&js_object,
|
|
@@ -333,26 +319,18 @@ impl IdentityUpdateTransitionWasm {
|
|
|
333
319
|
|
|
334
320
|
js_sys::Reflect::set(&js_object, &"signature".to_owned().into(), &signature_value)?;
|
|
335
321
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
)?;
|
|
342
|
-
} else {
|
|
343
|
-
js_sys::Reflect::set(
|
|
344
|
-
&js_object,
|
|
345
|
-
&"signaturePublicKeyId".to_owned().into(),
|
|
346
|
-
&JsValue::undefined(),
|
|
347
|
-
)?;
|
|
348
|
-
}
|
|
322
|
+
js_sys::Reflect::set(
|
|
323
|
+
&js_object,
|
|
324
|
+
&"signaturePublicKeyId".to_owned().into(),
|
|
325
|
+
&object.signature_public_key_id.into(),
|
|
326
|
+
)?;
|
|
349
327
|
}
|
|
350
328
|
|
|
351
329
|
if let Some(timestamp) = object.public_keys_disabled_at {
|
|
352
330
|
js_sys::Reflect::set(
|
|
353
331
|
&js_object,
|
|
354
332
|
&"publicKeysDisabledAt".to_owned().into(),
|
|
355
|
-
&(timestamp as
|
|
333
|
+
&JsValue::from_f64(timestamp as f64),
|
|
356
334
|
)?;
|
|
357
335
|
}
|
|
358
336
|
|
|
@@ -394,8 +372,8 @@ impl IdentityUpdateTransitionWasm {
|
|
|
394
372
|
}
|
|
395
373
|
|
|
396
374
|
#[wasm_bindgen(js_name=getModifiedDataIds)]
|
|
397
|
-
pub fn
|
|
398
|
-
let ids = self.0.
|
|
375
|
+
pub fn modified_data_ids(&self) -> Vec<JsValue> {
|
|
376
|
+
let ids = self.0.modified_data_ids();
|
|
399
377
|
|
|
400
378
|
ids.into_iter()
|
|
401
379
|
.map(|id| <IdentifierWrapper as std::convert::From<Identifier>>::from(id).into())
|
|
@@ -441,9 +419,16 @@ impl IdentityUpdateTransitionWasm {
|
|
|
441
419
|
BlsAdapter(JsValue::undefined().into())
|
|
442
420
|
};
|
|
443
421
|
|
|
444
|
-
|
|
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
|
|
445
426
|
.sign_by_private_key(private_key.as_slice(), key_type, &bls_adapter)
|
|
446
|
-
.with_js_error()
|
|
427
|
+
.with_js_error()?;
|
|
428
|
+
|
|
429
|
+
self.0.set_signature(wrapper.signature().to_owned());
|
|
430
|
+
|
|
431
|
+
Ok(())
|
|
447
432
|
}
|
|
448
433
|
|
|
449
434
|
#[wasm_bindgen(js_name=setSignaturePublicKeyId)]
|
|
@@ -453,17 +438,18 @@ impl IdentityUpdateTransitionWasm {
|
|
|
453
438
|
|
|
454
439
|
#[wasm_bindgen(js_name=getSignature)]
|
|
455
440
|
pub fn get_signature(&self) -> Buffer {
|
|
456
|
-
Buffer::from_bytes_owned(self.0.
|
|
441
|
+
Buffer::from_bytes_owned(self.0.signature().to_vec())
|
|
457
442
|
}
|
|
458
443
|
|
|
459
444
|
#[wasm_bindgen(js_name=setSignature)]
|
|
460
445
|
pub fn set_signature(&mut self, signature: Option<Vec<u8>>) {
|
|
461
|
-
self.0
|
|
446
|
+
self.0
|
|
447
|
+
.set_signature(BinaryData::new(signature.unwrap_or(vec![])))
|
|
462
448
|
}
|
|
463
449
|
|
|
464
450
|
#[wasm_bindgen(js_name=getRevision)]
|
|
465
451
|
pub fn get_revision(&self) -> u32 {
|
|
466
|
-
self.0.
|
|
452
|
+
self.0.revision() as u32
|
|
467
453
|
}
|
|
468
454
|
|
|
469
455
|
#[wasm_bindgen(js_name=setRevision)]
|
|
@@ -479,13 +465,23 @@ impl IdentityUpdateTransitionWasm {
|
|
|
479
465
|
bls: JsBlsAdapter,
|
|
480
466
|
) -> Result<(), JsValue> {
|
|
481
467
|
let bls_adapter = BlsAdapter(bls);
|
|
482
|
-
|
|
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
|
|
483
471
|
.sign(
|
|
484
472
|
&identity_public_key.to_owned().into(),
|
|
485
473
|
&private_key,
|
|
486
474
|
&bls_adapter,
|
|
487
475
|
)
|
|
488
|
-
.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(())
|
|
489
485
|
}
|
|
490
486
|
|
|
491
487
|
#[wasm_bindgen(js_name=verifySignature)]
|
|
@@ -496,8 +492,7 @@ impl IdentityUpdateTransitionWasm {
|
|
|
496
492
|
) -> Result<bool, JsValue> {
|
|
497
493
|
let bls_adapter = BlsAdapter(bls);
|
|
498
494
|
|
|
499
|
-
let verification_result = self
|
|
500
|
-
.0
|
|
495
|
+
let verification_result = StateTransition::IdentityUpdate(self.0.clone())
|
|
501
496
|
.verify_signature(&identity_public_key.to_owned().into(), &bls_adapter);
|
|
502
497
|
|
|
503
498
|
match verification_result {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
pub use identity_update_transition::*;
|
|
2
2
|
|
|
3
|
-
pub mod apply_identity_update_transition;
|
|
4
|
-
pub mod identity_update_public_keys_validator;
|
|
3
|
+
// pub mod apply_identity_update_transition;
|
|
4
|
+
// pub mod identity_update_public_keys_validator;
|
|
5
5
|
pub mod identity_update_transition;
|
|
6
|
-
pub mod identity_update_transition_basic_validator;
|
|
7
|
-
pub mod identity_update_transition_state_validator;
|
|
6
|
+
// pub mod identity_update_transition_basic_validator;
|
|
7
|
+
// pub mod identity_update_transition_state_validator;
|
|
8
8
|
|
|
9
9
|
mod to_object;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
use dpp::identity::KeyID;
|
|
2
|
+
use dpp::state_transition::identity_update_transition::accessors::IdentityUpdateTransitionAccessorsV0;
|
|
3
|
+
use dpp::state_transition::identity_update_transition::IdentityUpdateTransition;
|
|
4
|
+
use dpp::state_transition::public_key_in_creation::IdentityPublicKeyInCreation;
|
|
2
5
|
use dpp::state_transition::StateTransitionIdentitySigned;
|
|
3
|
-
use dpp::{
|
|
4
|
-
identifier::Identifier,
|
|
5
|
-
identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness,
|
|
6
|
-
identity::state_transition::identity_update_transition::identity_update_transition::IdentityUpdateTransition,
|
|
7
|
-
state_transition::StateTransitionLike,
|
|
8
|
-
};
|
|
6
|
+
use dpp::{identifier::Identifier, state_transition::StateTransitionLike};
|
|
9
7
|
use serde::Deserialize;
|
|
10
8
|
use std::default::Default;
|
|
11
9
|
|
|
@@ -18,46 +16,44 @@ pub struct ToObjectOptions {
|
|
|
18
16
|
#[derive(Default)]
|
|
19
17
|
pub struct ToObject {
|
|
20
18
|
pub transition_type: u8,
|
|
21
|
-
pub protocol_version: u32,
|
|
22
19
|
pub revision: u32,
|
|
23
20
|
pub signature: Option<Vec<u8>>,
|
|
24
|
-
pub signature_public_key_id:
|
|
21
|
+
pub signature_public_key_id: KeyID,
|
|
25
22
|
pub public_keys_disabled_at: Option<u64>,
|
|
26
|
-
pub public_keys_to_add: Option<Vec<
|
|
23
|
+
pub public_keys_to_add: Option<Vec<IdentityPublicKeyInCreation>>,
|
|
27
24
|
pub public_key_ids_to_disable: Option<Vec<KeyID>>,
|
|
28
25
|
pub identity_id: Identifier,
|
|
29
26
|
}
|
|
30
27
|
|
|
31
28
|
pub fn to_object_struct(
|
|
32
29
|
transition: &IdentityUpdateTransition,
|
|
33
|
-
options: ToObjectOptions,
|
|
30
|
+
options: &ToObjectOptions,
|
|
34
31
|
) -> ToObject {
|
|
35
32
|
let mut to_object = ToObject {
|
|
36
|
-
transition_type: transition.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
identity_id: transition.get_identity_id().to_owned(),
|
|
33
|
+
transition_type: transition.state_transition_type() as u8,
|
|
34
|
+
revision: transition.revision() as u32,
|
|
35
|
+
identity_id: transition.identity_id().to_owned(),
|
|
40
36
|
..ToObject::default()
|
|
41
37
|
};
|
|
42
38
|
|
|
43
39
|
if !options.skip_signature.unwrap_or(false) {
|
|
44
|
-
let signature = Some(transition.
|
|
40
|
+
let signature = Some(transition.signature().to_vec());
|
|
45
41
|
if let Some(signature) = &signature {
|
|
46
42
|
if !signature.is_empty() {
|
|
47
|
-
to_object.signature_public_key_id = transition.
|
|
43
|
+
to_object.signature_public_key_id = transition.signature_public_key_id()
|
|
48
44
|
}
|
|
49
45
|
}
|
|
50
46
|
to_object.signature = signature;
|
|
51
47
|
}
|
|
52
48
|
|
|
53
|
-
to_object.public_keys_disabled_at = transition.
|
|
49
|
+
to_object.public_keys_disabled_at = transition.public_keys_disabled_at();
|
|
54
50
|
|
|
55
|
-
let public_keys_to_add = transition.
|
|
51
|
+
let public_keys_to_add = transition.public_keys_to_add();
|
|
56
52
|
if !public_keys_to_add.is_empty() {
|
|
57
53
|
to_object.public_keys_to_add = Some(public_keys_to_add.to_owned());
|
|
58
54
|
}
|
|
59
55
|
|
|
60
|
-
let public_key_ids_to_disable = transition.
|
|
56
|
+
let public_key_ids_to_disable = transition.public_key_ids_to_disable();
|
|
61
57
|
if !public_key_ids_to_disable.is_empty() {
|
|
62
58
|
to_object.public_key_ids_to_disable = Some(public_key_ids_to_disable.to_owned());
|
|
63
59
|
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
pub use asset_lock_proof::*;
|
|
2
2
|
pub use identity_create_transition::*;
|
|
3
|
+
pub use identity_credit_transfer_transition::*;
|
|
3
4
|
pub use identity_topup_transition::*;
|
|
4
5
|
pub use identity_update_transition::*;
|
|
5
|
-
pub use validate_public_key_signatures::*;
|
|
6
|
+
// pub use validate_public_key_signatures::*;
|
|
6
7
|
|
|
7
8
|
mod asset_lock_proof;
|
|
8
9
|
mod identity_create_transition;
|
|
10
|
+
mod identity_credit_transfer_transition;
|
|
9
11
|
pub(crate) mod identity_public_key_transitions;
|
|
10
12
|
mod identity_topup_transition;
|
|
11
13
|
mod identity_update_transition;
|
|
12
|
-
mod
|
|
14
|
+
mod transition_types;
|
|
15
|
+
// mod validate_public_key_signatures;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
use dpp::state_transition::StateTransitionType;
|
|
2
|
+
use wasm_bindgen::prelude::*;
|
|
3
|
+
|
|
4
|
+
#[wasm_bindgen(js_name=StateTransitionTypes)]
|
|
5
|
+
#[allow(non_camel_case_types)]
|
|
6
|
+
pub enum StateTransitionTypeWasm {
|
|
7
|
+
DataContractCreate = 0,
|
|
8
|
+
DocumentsBatch = 1,
|
|
9
|
+
IdentityCreate = 2,
|
|
10
|
+
IdentityTopUp = 3,
|
|
11
|
+
DataContractUpdate = 4,
|
|
12
|
+
IdentityUpdate = 5,
|
|
13
|
+
IdentityCreditWithdrawal = 6,
|
|
14
|
+
IdentityCreditTransfer = 7,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
impl From<StateTransitionType> for StateTransitionTypeWasm {
|
|
18
|
+
fn from(state_transition_type: StateTransitionType) -> Self {
|
|
19
|
+
match state_transition_type {
|
|
20
|
+
StateTransitionType::DataContractCreate => StateTransitionTypeWasm::DataContractCreate,
|
|
21
|
+
StateTransitionType::DocumentsBatch => StateTransitionTypeWasm::DocumentsBatch,
|
|
22
|
+
StateTransitionType::IdentityCreate => StateTransitionTypeWasm::IdentityCreate,
|
|
23
|
+
StateTransitionType::IdentityTopUp => StateTransitionTypeWasm::IdentityTopUp,
|
|
24
|
+
StateTransitionType::DataContractUpdate => StateTransitionTypeWasm::DataContractUpdate,
|
|
25
|
+
StateTransitionType::IdentityUpdate => StateTransitionTypeWasm::IdentityUpdate,
|
|
26
|
+
StateTransitionType::IdentityCreditWithdrawal => {
|
|
27
|
+
StateTransitionTypeWasm::IdentityCreditWithdrawal
|
|
28
|
+
}
|
|
29
|
+
StateTransitionType::IdentityCreditTransfer => {
|
|
30
|
+
StateTransitionTypeWasm::IdentityCreditTransfer
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -10,7 +10,7 @@ use dpp::identity::state_transition::validate_public_key_signatures::{
|
|
|
10
10
|
PublicKeysSignaturesValidator, TPublicKeysSignaturesValidator,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
use dpp::identity::state_transition::identity_public_key_transitions::
|
|
13
|
+
use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
|
|
14
14
|
|
|
15
15
|
use crate::errors::from_dpp_err;
|
|
16
16
|
use dpp::platform_value::Value;
|
|
@@ -44,7 +44,7 @@ impl PublicKeysSignaturesValidatorWasm {
|
|
|
44
44
|
let public_keys = raw_public_keys
|
|
45
45
|
.into_iter()
|
|
46
46
|
.map(|raw_key| {
|
|
47
|
-
let parsed_key:
|
|
47
|
+
let parsed_key: IdentityPublicKeyInCreation =
|
|
48
48
|
IdentityPublicKeyWithWitnessWasm::new(raw_key)?.into();
|
|
49
49
|
parsed_key.to_raw_object(false).with_js_error()
|
|
50
50
|
})
|
package/src/lib.rs
CHANGED
|
@@ -2,33 +2,32 @@ extern crate core;
|
|
|
2
2
|
|
|
3
3
|
pub use dash_platform_protocol::*;
|
|
4
4
|
pub use data_contract::*;
|
|
5
|
-
pub use data_contract_factory::*;
|
|
6
|
-
pub use data_trigger::*;
|
|
7
|
-
pub use decode_protocol_entity::decode_protocol_entity;
|
|
5
|
+
// pub use data_contract_factory::*;
|
|
6
|
+
// pub use data_trigger::*;
|
|
8
7
|
pub use document::*;
|
|
9
8
|
pub use identity::*;
|
|
10
9
|
pub use metadata::*;
|
|
11
|
-
pub use state_transition::*;
|
|
10
|
+
// pub use state_transition::*;
|
|
12
11
|
|
|
13
12
|
mod dash_platform_protocol;
|
|
14
13
|
mod data_contract;
|
|
15
14
|
mod data_contract_factory;
|
|
16
|
-
mod data_trigger;
|
|
15
|
+
// mod data_trigger;
|
|
17
16
|
mod document;
|
|
18
17
|
pub mod errors;
|
|
19
18
|
mod identifier;
|
|
20
19
|
mod identity;
|
|
21
20
|
mod metadata;
|
|
22
|
-
mod state_repository;
|
|
21
|
+
// mod state_repository;
|
|
23
22
|
mod state_transition;
|
|
24
|
-
mod version;
|
|
23
|
+
// mod version;
|
|
25
24
|
|
|
26
25
|
mod utils;
|
|
27
26
|
|
|
28
|
-
mod bls_adapter;
|
|
27
|
+
pub mod bls_adapter;
|
|
29
28
|
mod buffer;
|
|
30
|
-
mod decode_protocol_entity;
|
|
31
29
|
mod entropy_generator;
|
|
32
|
-
mod generate_temporary_ecdsa_private_key;
|
|
30
|
+
// mod generate_temporary_ecdsa_private_key;
|
|
33
31
|
mod lodash;
|
|
34
|
-
mod
|
|
32
|
+
mod protocol_version;
|
|
33
|
+
// mod validation;
|
package/src/metadata.rs
CHANGED
|
@@ -12,19 +12,19 @@ use dpp::util::json_value::JsonValueExt;
|
|
|
12
12
|
#[derive(Clone, Debug)]
|
|
13
13
|
pub struct MetadataWasm(Metadata);
|
|
14
14
|
|
|
15
|
-
impl
|
|
15
|
+
impl From<Metadata> for MetadataWasm {
|
|
16
16
|
fn from(v: Metadata) -> Self {
|
|
17
17
|
MetadataWasm(v)
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
impl
|
|
21
|
+
impl From<&MetadataWasm> for Metadata {
|
|
22
22
|
fn from(v: &MetadataWasm) -> Self {
|
|
23
23
|
v.0.clone()
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
impl
|
|
27
|
+
impl Into<Metadata> for MetadataWasm {
|
|
28
28
|
fn into(self) -> Metadata {
|
|
29
29
|
self.0
|
|
30
30
|
}
|
|
@@ -2,7 +2,8 @@ use crate::errors::consensus::consensus_error::from_consensus_error;
|
|
|
2
2
|
use crate::utils::generic_of_js_val;
|
|
3
3
|
use crate::{
|
|
4
4
|
DataContractCreateTransitionWasm, DataContractUpdateTransitionWasm,
|
|
5
|
-
DocumentsBatchTransitionWasm, IdentityCreateTransitionWasm,
|
|
5
|
+
DocumentsBatchTransitionWasm, IdentityCreateTransitionWasm,
|
|
6
|
+
IdentityCreditTransferTransitionWasm, IdentityTopUpTransitionWasm,
|
|
6
7
|
IdentityUpdateTransitionWasm, PreCalculatedOperationWasm, ReadOperationWasm,
|
|
7
8
|
SignatureVerificationOperationWasm,
|
|
8
9
|
};
|
|
@@ -127,6 +128,15 @@ pub fn create_state_transition_from_wasm_instance(
|
|
|
127
128
|
|
|
128
129
|
Ok(StateTransition::IdentityUpdate(st.clone().into()))
|
|
129
130
|
}
|
|
131
|
+
StateTransitionType::IdentityCreditTransfer => {
|
|
132
|
+
let st: Ref<IdentityCreditTransferTransitionWasm> =
|
|
133
|
+
generic_of_js_val::<IdentityCreditTransferTransitionWasm>(
|
|
134
|
+
js_value,
|
|
135
|
+
"IdentityCreditTransferTransition",
|
|
136
|
+
)?;
|
|
137
|
+
|
|
138
|
+
Ok(StateTransition::IdentityCreditTransfer(st.clone().into()))
|
|
139
|
+
}
|
|
130
140
|
_ => Err(JsError::new("Unsupported state transition type").into()),
|
|
131
141
|
}
|
|
132
142
|
}
|