@dashevo/wasm-dpp 0.25.0-dev.9 → 0.25.1
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
|
@@ -1,49 +1,26 @@
|
|
|
1
|
-
const varint = require('varint');
|
|
2
|
-
const JSIdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
3
|
-
const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
|
|
4
|
-
const JSIdentity = require('@dashevo/dpp/lib/identity/Identity');
|
|
5
|
-
|
|
6
1
|
const { hash: hashFunction } = require('@dashevo/dpp/lib/util/hash');
|
|
7
2
|
const { expect } = require('chai');
|
|
8
3
|
const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
|
|
9
|
-
const {
|
|
4
|
+
const {
|
|
5
|
+
Identity, Metadata, IdentityPublicKey, KeyPurpose, KeyType, KeySecurityLevel,
|
|
6
|
+
Identifier,
|
|
7
|
+
} = require('../../..');
|
|
10
8
|
|
|
11
9
|
describe('Identity', () => {
|
|
12
10
|
let rawIdentity;
|
|
13
11
|
let identity;
|
|
14
12
|
let metadataFixture;
|
|
15
|
-
let Identity;
|
|
16
|
-
let Metadata;
|
|
17
|
-
let IdentityPublicKey;
|
|
18
|
-
let KeyPurpose;
|
|
19
|
-
let KeyType;
|
|
20
|
-
let KeySecurityLevel;
|
|
21
|
-
|
|
22
|
-
before(async () => {
|
|
23
|
-
({
|
|
24
|
-
Identity, Metadata, IdentityPublicKey, KeyPurpose, KeyType, KeySecurityLevel,
|
|
25
|
-
} = await loadWasmDpp());
|
|
26
|
-
});
|
|
27
13
|
|
|
28
14
|
beforeEach(async () => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
securityLevel: KeySecurityLevel.MASTER,
|
|
39
|
-
readOnly: false,
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
balance: 0,
|
|
43
|
-
revision: 0,
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
identity = new Identity(rawIdentity);
|
|
15
|
+
identity = new Identity(1);
|
|
16
|
+
identity.setId(await generateRandomIdentifierAsync());
|
|
17
|
+
|
|
18
|
+
const publicKey = new IdentityPublicKey(1);
|
|
19
|
+
publicKey.setData(Buffer.alloc(36).fill('a'));
|
|
20
|
+
|
|
21
|
+
identity.setPublicKeys([publicKey]);
|
|
22
|
+
|
|
23
|
+
rawIdentity = identity.toObject();
|
|
47
24
|
|
|
48
25
|
metadataFixture = new Metadata({
|
|
49
26
|
blockHeight: 42,
|
|
@@ -62,14 +39,11 @@ describe('Identity', () => {
|
|
|
62
39
|
});
|
|
63
40
|
});
|
|
64
41
|
|
|
65
|
-
afterEach(() => {
|
|
66
|
-
});
|
|
67
|
-
|
|
68
42
|
describe('#constructor', () => {
|
|
69
43
|
it('should set variables from raw model', () => {
|
|
70
44
|
const instance = identity;
|
|
71
45
|
|
|
72
|
-
expect(instance.getId()
|
|
46
|
+
expect(instance.getId()).to.deep.equal(rawIdentity.id);
|
|
73
47
|
expect(
|
|
74
48
|
instance.getPublicKeys().map((pk) => pk.toObject()),
|
|
75
49
|
).to.deep.equal(
|
|
@@ -80,7 +54,7 @@ describe('Identity', () => {
|
|
|
80
54
|
|
|
81
55
|
describe('#getId', () => {
|
|
82
56
|
it('should return set id', () => {
|
|
83
|
-
expect(identity.getId()
|
|
57
|
+
expect(identity.getId()).to.deep.equal(rawIdentity.id);
|
|
84
58
|
});
|
|
85
59
|
});
|
|
86
60
|
|
|
@@ -101,15 +75,20 @@ describe('Identity', () => {
|
|
|
101
75
|
|
|
102
76
|
it('should set public keys', () => {
|
|
103
77
|
const rawKey = {
|
|
78
|
+
$version: '0',
|
|
104
79
|
id: 2,
|
|
105
80
|
type: KeyType.ECDSA_SECP256K1,
|
|
106
81
|
data: Buffer.alloc(36).fill('a'),
|
|
107
82
|
purpose: KeyPurpose.AUTHENTICATION,
|
|
108
83
|
securityLevel: KeySecurityLevel.MASTER,
|
|
109
84
|
readOnly: false,
|
|
85
|
+
disabledAt: null,
|
|
86
|
+
contractBounds: null,
|
|
110
87
|
};
|
|
111
88
|
|
|
112
|
-
const ipk = new
|
|
89
|
+
const ipk = new IdentityPublicKey(1);
|
|
90
|
+
ipk.setData(Buffer.alloc(36).fill('a'));
|
|
91
|
+
ipk.setId(2);
|
|
113
92
|
|
|
114
93
|
identity.setPublicKeys([ipk]);
|
|
115
94
|
expect(identity.getPublicKeys()).length(1);
|
|
@@ -135,14 +114,19 @@ describe('Identity', () => {
|
|
|
135
114
|
});
|
|
136
115
|
|
|
137
116
|
describe('#toBuffer', () => {
|
|
138
|
-
it('should return
|
|
139
|
-
// Due to browser polyfill, we got two different versions of buffers, and makes
|
|
140
|
-
// the compatibility test to fail in karma, so hence this hack here.
|
|
141
|
-
rawIdentity.id = Buffer.from(rawIdentity.id.toBuffer());
|
|
142
|
-
const oldIdentity = new JSIdentity(rawIdentity);
|
|
117
|
+
it('should return buffer', () => {
|
|
143
118
|
const result = identity.toBuffer();
|
|
119
|
+
expect(result).to.be.instanceOf(Buffer);
|
|
120
|
+
expect(result).to.have.length(82);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
144
123
|
|
|
145
|
-
|
|
124
|
+
describe('#fromBuffer', () => {
|
|
125
|
+
it('should re-create identity from buffer', () => {
|
|
126
|
+
const buffer = identity.toBuffer();
|
|
127
|
+
const recoveredIdentity = Identity.fromBuffer(buffer);
|
|
128
|
+
expect(recoveredIdentity.toObject())
|
|
129
|
+
.to.be.deep.equal(identity.toObject());
|
|
146
130
|
});
|
|
147
131
|
});
|
|
148
132
|
|
|
@@ -150,12 +134,6 @@ describe('Identity', () => {
|
|
|
150
134
|
it('should return the same has as JS Identity', () => {
|
|
151
135
|
const expectedHash = hashFunction(identity.toBuffer());
|
|
152
136
|
const result = identity.hash();
|
|
153
|
-
|
|
154
|
-
const identityDataToEncode = identity.toObject();
|
|
155
|
-
delete identityDataToEncode.protocolVersion;
|
|
156
|
-
|
|
157
|
-
varint.encode(identity.getProtocolVersion());
|
|
158
|
-
|
|
159
137
|
expect(result).to.deep.equal(expectedHash);
|
|
160
138
|
});
|
|
161
139
|
});
|
|
@@ -163,10 +141,6 @@ describe('Identity', () => {
|
|
|
163
141
|
describe('#toObject', () => {
|
|
164
142
|
it('should return plain object representation', () => {
|
|
165
143
|
const identityObject = identity.toObject();
|
|
166
|
-
|
|
167
|
-
// We can't compare Identifier directly - it needs to be converted into a Buffer
|
|
168
|
-
rawIdentity.id = rawIdentity.id.toBuffer();
|
|
169
|
-
|
|
170
144
|
expect(identityObject).to.deep.equal(rawIdentity);
|
|
171
145
|
});
|
|
172
146
|
});
|
|
@@ -176,16 +150,19 @@ describe('Identity', () => {
|
|
|
176
150
|
const jsonIdentity = identity.toJSON();
|
|
177
151
|
|
|
178
152
|
expect(jsonIdentity).to.deep.equal({
|
|
179
|
-
|
|
180
|
-
id: rawIdentity.id.toString(),
|
|
153
|
+
$version: '0',
|
|
154
|
+
id: Identifier.from(rawIdentity.id).toString(),
|
|
181
155
|
publicKeys: [
|
|
182
156
|
{
|
|
157
|
+
$version: '0',
|
|
183
158
|
id: 0,
|
|
184
159
|
type: KeyType.ECDSA_SECP256K1,
|
|
185
160
|
data: rawIdentity.publicKeys[0].data.toString('base64'),
|
|
186
161
|
purpose: KeyPurpose.AUTHENTICATION,
|
|
187
162
|
securityLevel: KeySecurityLevel.MASTER,
|
|
188
163
|
readOnly: false,
|
|
164
|
+
disabledAt: null,
|
|
165
|
+
contractBounds: null,
|
|
189
166
|
},
|
|
190
167
|
],
|
|
191
168
|
balance: 0,
|
|
@@ -257,27 +234,15 @@ describe('Identity', () => {
|
|
|
257
234
|
|
|
258
235
|
describe('#getPublicKeyMaxId', () => {
|
|
259
236
|
it('should get the biggest public key ID', () => {
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
identity.addPublicKeys(
|
|
270
|
-
key,
|
|
271
|
-
new IdentityPublicKey({
|
|
272
|
-
id: 50,
|
|
273
|
-
type: KeyType.ECDSA_SECP256K1,
|
|
274
|
-
data: Buffer.alloc(36).fill('a'),
|
|
275
|
-
purpose: KeyPurpose.AUTHENTICATION,
|
|
276
|
-
securityLevel: KeySecurityLevel.MASTER,
|
|
277
|
-
signature: Buffer.alloc(36).fill('a'),
|
|
278
|
-
readOnly: false,
|
|
279
|
-
}),
|
|
280
|
-
);
|
|
237
|
+
const key1 = new IdentityPublicKey(1);
|
|
238
|
+
key1.setId(99);
|
|
239
|
+
key1.setData(Buffer.alloc(36).fill('a'));
|
|
240
|
+
|
|
241
|
+
const key2 = new IdentityPublicKey(1);
|
|
242
|
+
key2.setId(50);
|
|
243
|
+
key2.setData(Buffer.alloc(36).fill('a'));
|
|
244
|
+
|
|
245
|
+
identity.addPublicKeys([key1, key2]);
|
|
281
246
|
|
|
282
247
|
const maxId = identity.getPublicKeyMaxId();
|
|
283
248
|
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
|
|
1
|
+
const getInstantAssetLockProofFixture = require('../../../lib/test/fixtures/getInstantAssetLockProofFixture');
|
|
2
|
+
const getIdentityFixture = require('../../../lib/test/fixtures/getIdentityFixture');
|
|
4
3
|
const getChainAssetLockProofFixture = require('../../../lib/test/fixtures/getChainAssetLockProofFixture');
|
|
5
|
-
const {
|
|
6
|
-
|
|
4
|
+
const {
|
|
5
|
+
Identity, IdentityFactory,
|
|
6
|
+
InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
|
|
7
|
+
IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
|
|
8
|
+
InvalidIdentityError, UnsupportedProtocolVersionError,
|
|
9
|
+
} = require('../../..');
|
|
10
|
+
const { SerializedObjectParsingError } = require('../../..');
|
|
7
11
|
|
|
8
12
|
describe('IdentityFactory', () => {
|
|
9
13
|
let factory;
|
|
@@ -12,48 +16,17 @@ describe('IdentityFactory', () => {
|
|
|
12
16
|
let chainAssetLockProof;
|
|
13
17
|
let fakeTime;
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
let InstantAssetLockProof;
|
|
19
|
-
let IdentityCreateTransition;
|
|
20
|
-
let IdentityTopUpTransition;
|
|
21
|
-
let IdentityUpdateTransition;
|
|
22
|
-
let IdentityPublicKeyWithWitness;
|
|
23
|
-
let InvalidIdentityError;
|
|
24
|
-
let PlatformValueError;
|
|
25
|
-
let UnsupportedProtocolVersionError;
|
|
26
|
-
let ChainAssetLockProof;
|
|
27
|
-
|
|
28
|
-
before(async () => {
|
|
29
|
-
({
|
|
30
|
-
Identity, IdentityFactory, IdentityValidator,
|
|
31
|
-
InstantAssetLockProof, ChainAssetLockProof, IdentityUpdateTransition,
|
|
32
|
-
IdentityCreateTransition, IdentityTopUpTransition, IdentityPublicKeyWithWitness,
|
|
33
|
-
InvalidIdentityError, UnsupportedProtocolVersionError, PlatformValueError,
|
|
34
|
-
} = await loadWasmDpp());
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
beforeEach(async function () {
|
|
38
|
-
const instantAssetLockProofJS = getInstantAssetLockProofFixture();
|
|
39
|
-
const chainAssetLockProofJS = getChainAssetLockProofFixture();
|
|
40
|
-
instantAssetLockProof = new InstantAssetLockProof(instantAssetLockProofJS.toObject());
|
|
41
|
-
chainAssetLockProof = new ChainAssetLockProof(chainAssetLockProofJS.toObject());
|
|
42
|
-
|
|
43
|
-
const blsAdapter = await getBlsAdapterMock();
|
|
19
|
+
beforeEach(async function beforeEach() {
|
|
20
|
+
instantAssetLockProof = await getInstantAssetLockProofFixture();
|
|
21
|
+
chainAssetLockProof = new ChainAssetLockProof(getChainAssetLockProofFixture().toObject());
|
|
44
22
|
|
|
45
|
-
const
|
|
23
|
+
// const blsAdapter = await getBlsAdapterMock();
|
|
46
24
|
|
|
47
|
-
|
|
48
|
-
1,
|
|
49
|
-
identityValidator,
|
|
50
|
-
);
|
|
25
|
+
// const identityValidator = new IdentityValidator(blsAdapter);
|
|
51
26
|
|
|
52
|
-
|
|
53
|
-
identityObject.id = instantAssetLockProof.createIdentifier();
|
|
27
|
+
factory = new IdentityFactory(1);
|
|
54
28
|
|
|
55
|
-
identity =
|
|
56
|
-
identity.setAssetLockProof(instantAssetLockProof);
|
|
29
|
+
identity = await getIdentityFixture(instantAssetLockProof.createIdentifier());
|
|
57
30
|
identity.setBalance(0);
|
|
58
31
|
|
|
59
32
|
fakeTime = this.sinonSandbox.useFakeTimers(new Date());
|
|
@@ -65,15 +38,12 @@ describe('IdentityFactory', () => {
|
|
|
65
38
|
|
|
66
39
|
describe('#create', () => {
|
|
67
40
|
it('should create Identity from asset lock transaction, output index, proof and public keys', () => {
|
|
68
|
-
const publicKeys = identity
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
...identityPublicKey.toObject(),
|
|
72
|
-
readonly: true,
|
|
73
|
-
}));
|
|
41
|
+
const publicKeys = identity.getPublicKeys();
|
|
42
|
+
publicKeys.forEach((key) => key.setReadOnly(true));
|
|
43
|
+
identity.setPublicKeys(publicKeys);
|
|
74
44
|
|
|
75
45
|
const result = factory.create(
|
|
76
|
-
instantAssetLockProof,
|
|
46
|
+
instantAssetLockProof.createIdentifier(),
|
|
77
47
|
publicKeys,
|
|
78
48
|
);
|
|
79
49
|
|
|
@@ -82,7 +52,8 @@ describe('IdentityFactory', () => {
|
|
|
82
52
|
});
|
|
83
53
|
});
|
|
84
54
|
|
|
85
|
-
|
|
55
|
+
// TODO(versioning): re-check. Not used anymore
|
|
56
|
+
describe.skip('#createFromObject', () => {
|
|
86
57
|
it('should skip validation if options is set', () => {
|
|
87
58
|
const identityObject = identity.toObject();
|
|
88
59
|
identityObject.protocolVersion = 100;
|
|
@@ -90,7 +61,8 @@ describe('IdentityFactory', () => {
|
|
|
90
61
|
expect(result).to.exist();
|
|
91
62
|
});
|
|
92
63
|
|
|
93
|
-
|
|
64
|
+
// TODO(versioning): restore
|
|
65
|
+
it.skip('should throw an error if validation have failed', () => {
|
|
94
66
|
const identityObject = identity.toObject();
|
|
95
67
|
identityObject.protocolVersion = 3;
|
|
96
68
|
|
|
@@ -127,7 +99,8 @@ describe('IdentityFactory', () => {
|
|
|
127
99
|
expect(result.toObject()).to.deep.equal(rawIdentity);
|
|
128
100
|
});
|
|
129
101
|
|
|
130
|
-
|
|
102
|
+
// TODO(versioning): restore
|
|
103
|
+
it.skip('should throw InvalidIdentityError if the decoding fails with consensus error', () => {
|
|
131
104
|
try {
|
|
132
105
|
// Mess up protocol version
|
|
133
106
|
serializedIdentity[0] = 3;
|
|
@@ -142,14 +115,15 @@ describe('IdentityFactory', () => {
|
|
|
142
115
|
}
|
|
143
116
|
});
|
|
144
117
|
|
|
145
|
-
|
|
118
|
+
// TODO(versioning): restore
|
|
119
|
+
it.skip('should throw an error if decoding fails with any other error', () => {
|
|
146
120
|
try {
|
|
147
121
|
serializedIdentity = serializedIdentity.slice(4);
|
|
148
122
|
factory.createFromBuffer(serializedIdentity);
|
|
149
123
|
|
|
150
124
|
expect.fail('should throw an error');
|
|
151
125
|
} catch (e) {
|
|
152
|
-
expect(e).to.be.instanceOf(
|
|
126
|
+
expect(e).to.be.instanceOf(SerializedObjectParsingError);
|
|
153
127
|
}
|
|
154
128
|
});
|
|
155
129
|
});
|
|
@@ -173,7 +147,11 @@ describe('IdentityFactory', () => {
|
|
|
173
147
|
|
|
174
148
|
describe('#createIdentityCreateTransition', () => {
|
|
175
149
|
it('should create IdentityCreateTransition from Identity model', () => {
|
|
176
|
-
const stateTransition = factory.createIdentityCreateTransition(
|
|
150
|
+
const stateTransition = factory.createIdentityCreateTransition(
|
|
151
|
+
identity,
|
|
152
|
+
instantAssetLockProof,
|
|
153
|
+
1,
|
|
154
|
+
);
|
|
177
155
|
|
|
178
156
|
expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
|
|
179
157
|
const keysToExpect = stateTransition.getPublicKeys()
|
|
@@ -183,22 +161,29 @@ describe('IdentityFactory', () => {
|
|
|
183
161
|
return keyObject;
|
|
184
162
|
});
|
|
185
163
|
|
|
164
|
+
const actualKeys = identity.getPublicKeys().map((key) => {
|
|
165
|
+
const keyObject = key.toObject();
|
|
166
|
+
delete keyObject.disabledAt;
|
|
167
|
+
return keyObject;
|
|
168
|
+
});
|
|
169
|
+
|
|
186
170
|
expect(keysToExpect)
|
|
187
|
-
.to.deep.equal(
|
|
171
|
+
.to.deep.equal(actualKeys);
|
|
188
172
|
expect(stateTransition.getAssetLockProof().toObject())
|
|
189
173
|
.to.deep.equal(instantAssetLockProof.toObject());
|
|
190
174
|
});
|
|
191
175
|
});
|
|
192
176
|
|
|
193
177
|
describe('createChainAssetLockProof', () => {
|
|
194
|
-
it('should create IdentityCreateTransition from Identity model', () => {
|
|
195
|
-
|
|
196
|
-
identityObject.id = chainAssetLockProof.createIdentifier();
|
|
197
|
-
identity = new Identity(identityObject);
|
|
198
|
-
identity.setAssetLockProof(chainAssetLockProof);
|
|
178
|
+
it('should create IdentityCreateTransition from Identity model', async () => {
|
|
179
|
+
identity = await getIdentityFixture(chainAssetLockProof.createIdentifier());
|
|
199
180
|
identity.setBalance(0);
|
|
200
181
|
|
|
201
|
-
const stateTransition = factory.createIdentityCreateTransition(
|
|
182
|
+
const stateTransition = factory.createIdentityCreateTransition(
|
|
183
|
+
identity,
|
|
184
|
+
chainAssetLockProof,
|
|
185
|
+
1,
|
|
186
|
+
);
|
|
202
187
|
|
|
203
188
|
expect(stateTransition).to.be.instanceOf(IdentityCreateTransition);
|
|
204
189
|
const keysToExpect = stateTransition.getPublicKeys()
|
|
@@ -208,8 +193,14 @@ describe('IdentityFactory', () => {
|
|
|
208
193
|
return keyObject;
|
|
209
194
|
});
|
|
210
195
|
|
|
196
|
+
const actualKeys = identity.getPublicKeys().map((key) => {
|
|
197
|
+
const keyObject = key.toObject();
|
|
198
|
+
delete keyObject.disabledAt;
|
|
199
|
+
return keyObject;
|
|
200
|
+
});
|
|
201
|
+
|
|
211
202
|
expect(keysToExpect)
|
|
212
|
-
.to.deep.equal(
|
|
203
|
+
.to.deep.equal(actualKeys);
|
|
213
204
|
|
|
214
205
|
expect(stateTransition.getAssetLockProof().toObject())
|
|
215
206
|
.to.deep.equal(chainAssetLockProof.toObject());
|
|
@@ -235,15 +226,10 @@ describe('IdentityFactory', () => {
|
|
|
235
226
|
it('should create IdentityUpdateTransition', () => {
|
|
236
227
|
const revision = 1;
|
|
237
228
|
const disablePublicKeys = [identity.getPublicKeyById(0)];
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
243
|
-
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
244
|
-
readOnly: false,
|
|
245
|
-
signature: Buffer.alloc(0),
|
|
246
|
-
})];
|
|
229
|
+
const key = new IdentityPublicKeyWithWitness(1);
|
|
230
|
+
key.setData(Buffer.from('AuryIuMtRrl/VviQuyLD1l4nmxi9ogPzC9LT7tdpo0di', 'base64'));
|
|
231
|
+
|
|
232
|
+
const addPublicKeys = [key];
|
|
247
233
|
|
|
248
234
|
const stateTransition = factory
|
|
249
235
|
.createIdentityUpdateTransition(
|
|
@@ -257,8 +243,8 @@ describe('IdentityFactory', () => {
|
|
|
257
243
|
expect(stateTransition).to.be.instanceOf(IdentityUpdateTransition);
|
|
258
244
|
expect(stateTransition.getIdentityId().toBuffer()).to.deep.equal(identity.getId().toBuffer());
|
|
259
245
|
expect(stateTransition.getRevision()).to.deep.equal(revision);
|
|
260
|
-
expect(stateTransition.getPublicKeysToAdd().map((
|
|
261
|
-
.to.deep.equal(addPublicKeys.map((
|
|
246
|
+
expect(stateTransition.getPublicKeysToAdd().map((k) => k.toObject()))
|
|
247
|
+
.to.deep.equal(addPublicKeys.map((k) => k.toObject()));
|
|
262
248
|
expect(stateTransition.getPublicKeyIdsToDisable()).to.deep.equal([0]);
|
|
263
249
|
expect(stateTransition.getPublicKeysDisabledAt()).to.deep.equal(new Date());
|
|
264
250
|
});
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const { IdentityPublicKey } = require('@dashevo/wasm-dpp');
|
|
2
2
|
|
|
3
3
|
describe('IdentityPublicKey', () => {
|
|
4
4
|
let rawPublicKey;
|
|
5
5
|
let publicKey;
|
|
6
|
-
let IdentityPublicKey;
|
|
7
6
|
|
|
8
|
-
beforeEach(
|
|
9
|
-
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
const keyData = Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64');
|
|
10
9
|
|
|
11
10
|
rawPublicKey = {
|
|
12
11
|
id: 0,
|
|
13
12
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
14
|
-
data:
|
|
13
|
+
data: keyData,
|
|
15
14
|
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
16
15
|
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
17
16
|
readOnly: false,
|
|
17
|
+
contractBounds: null,
|
|
18
18
|
};
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
publicKey = new IdentityPublicKey(1);
|
|
21
|
+
publicKey.setData(keyData);
|
|
20
22
|
});
|
|
21
23
|
|
|
22
24
|
describe('#constructor', () => {
|
|
23
25
|
it('should set variables from raw model', () => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
expect(
|
|
27
|
-
expect(instance.getType()).to.equal(rawPublicKey.type);
|
|
28
|
-
expect(instance.getData()).to.deep.equal(rawPublicKey.data);
|
|
26
|
+
expect(publicKey.getId()).to.equal(rawPublicKey.id);
|
|
27
|
+
expect(publicKey.getType()).to.equal(rawPublicKey.type);
|
|
28
|
+
expect(publicKey.getData()).to.deep.equal(rawPublicKey.data);
|
|
29
29
|
});
|
|
30
30
|
});
|
|
31
31
|
|
|
@@ -145,37 +145,21 @@ describe('IdentityPublicKey', () => {
|
|
|
145
145
|
});
|
|
146
146
|
|
|
147
147
|
it('should return data in case ECDSA_HASH160', () => {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
|
|
152
|
-
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
153
|
-
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
154
|
-
readOnly: false,
|
|
155
|
-
disabledAt: 123,
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
publicKey = new IdentityPublicKey(rawPublicKey);
|
|
148
|
+
publicKey = new IdentityPublicKey(1);
|
|
149
|
+
publicKey.setType(IdentityPublicKey.TYPES.ECDSA_HASH160);
|
|
150
|
+
publicKey.setData(Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTdi', 'base64'));
|
|
159
151
|
|
|
160
152
|
const result = publicKey.hash();
|
|
161
153
|
|
|
162
|
-
const expectedHash = Buffer.from('
|
|
154
|
+
const expectedHash = Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTdg=', 'base64');
|
|
163
155
|
|
|
164
156
|
expect(result).to.deep.equal(expectedHash);
|
|
165
157
|
});
|
|
166
158
|
|
|
167
159
|
it('should return original public key hash in case BLS12_381', () => {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
data: Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'),
|
|
172
|
-
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
173
|
-
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
174
|
-
readOnly: false,
|
|
175
|
-
disabledAt: 123,
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
publicKey = new IdentityPublicKey(rawPublicKey);
|
|
160
|
+
publicKey = new IdentityPublicKey(1);
|
|
161
|
+
publicKey.setType(IdentityPublicKey.TYPES.BLS12_381);
|
|
162
|
+
publicKey.setData(Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'));
|
|
179
163
|
|
|
180
164
|
const result = publicKey.hash();
|
|
181
165
|
|
|
@@ -185,17 +169,9 @@ describe('IdentityPublicKey', () => {
|
|
|
185
169
|
});
|
|
186
170
|
|
|
187
171
|
it('should return data in case BIP13_SCRIPT_HASH', () => {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
data: Buffer.from('54c557e07dde5bb6cb791c7a540e0a4796f5e97e', 'hex'),
|
|
192
|
-
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
193
|
-
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
194
|
-
readOnly: false,
|
|
195
|
-
disabledAt: 123,
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
publicKey = new IdentityPublicKey(rawPublicKey);
|
|
172
|
+
publicKey = new IdentityPublicKey(1);
|
|
173
|
+
publicKey.setType(IdentityPublicKey.TYPES.BIP13_SCRIPT_HASH);
|
|
174
|
+
publicKey.setData(Buffer.from('54c557e07dde5bb6cb791c7a540e0a4796f5e97e', 'hex'));
|
|
199
175
|
|
|
200
176
|
const result = publicKey.hash();
|
|
201
177
|
|
|
@@ -207,32 +183,42 @@ describe('IdentityPublicKey', () => {
|
|
|
207
183
|
|
|
208
184
|
describe('#toJSON', () => {
|
|
209
185
|
it('should return JSON representation', () => {
|
|
186
|
+
const now = new Date();
|
|
187
|
+
publicKey.setDisabledAt(now);
|
|
188
|
+
|
|
210
189
|
const jsonPublicKey = publicKey.toJSON();
|
|
211
190
|
|
|
212
191
|
expect(jsonPublicKey).to.deep.equal({
|
|
192
|
+
$version: '0',
|
|
213
193
|
id: 0,
|
|
214
194
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
215
195
|
data: 'AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH',
|
|
216
196
|
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
217
197
|
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
218
198
|
readOnly: false,
|
|
199
|
+
disabledAt: now.getTime(),
|
|
200
|
+
contractBounds: null,
|
|
219
201
|
});
|
|
220
202
|
});
|
|
203
|
+
});
|
|
221
204
|
|
|
222
|
-
|
|
205
|
+
describe('#toObject', () => {
|
|
206
|
+
it('should return object representation', () => {
|
|
223
207
|
const now = new Date();
|
|
224
208
|
publicKey.setDisabledAt(now);
|
|
225
209
|
|
|
226
|
-
const jsonPublicKey = publicKey.
|
|
210
|
+
const jsonPublicKey = publicKey.toObject();
|
|
227
211
|
|
|
228
212
|
expect(jsonPublicKey).to.deep.equal({
|
|
213
|
+
$version: '0',
|
|
229
214
|
id: 0,
|
|
230
215
|
type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
|
|
231
|
-
data: 'AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH',
|
|
216
|
+
data: Buffer.from('AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH', 'base64'),
|
|
232
217
|
purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
|
|
233
218
|
securityLevel: IdentityPublicKey.SECURITY_LEVELS.MASTER,
|
|
234
219
|
readOnly: false,
|
|
235
220
|
disabledAt: now.getTime(),
|
|
221
|
+
contractBounds: null,
|
|
236
222
|
});
|
|
237
223
|
});
|
|
238
224
|
});
|