@dashevo/wasm-dpp 0.23.0-dev.15 → 0.24.0-dev.11
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/.eslintignore +1 -0
- package/Cargo.toml +25 -0
- package/README.md +21 -6
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.LICENSE.txt +8 -0
- package/dist/lib/patchIdentifier.d.ts +2 -0
- package/dist/wasm/wasm_dpp.d.ts +2850 -0
- package/index.ts +30 -0
- package/karma.conf.js +6 -3
- package/lib/patchIdentifier.ts +37 -0
- package/lib/test/.eslintrc +9 -0
- package/lib/test/bootstrap.js +27 -0
- package/lib/test/expect/expectError.js +34 -0
- package/lib/test/karma/loader.js +6 -0
- package/lib/test/utils/generateRandomIdentifierAsync.js +14 -0
- package/package.json +31 -55
- package/scripts/build.sh +69 -0
- package/scripts/clean.sh +4 -0
- package/src/bls_adapter.rs +71 -0
- package/src/buffer.rs +15 -0
- package/src/dash_platform_protocol.rs +26 -0
- package/src/data_contract/data_contract.rs +290 -0
- package/src/data_contract/errors/data_contract_already_exists.rs +1 -0
- package/src/data_contract/errors/invalid_data_contract.rs +29 -0
- package/src/data_contract/errors/invalid_document_type.rs +33 -0
- package/src/data_contract/errors/mod.rs +37 -0
- package/src/data_contract/index.rs +61 -0
- package/src/data_contract/mod.rs +10 -0
- package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +44 -0
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +138 -0
- package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +24 -0
- package/src/data_contract/state_transition/mod.rs +3 -0
- package/src/data_contract_factory/data_contract_factory.rs +155 -0
- package/src/data_contract_factory/mod.rs +1 -0
- package/src/document/errors/document_already_exists_error.rs +28 -0
- package/src/document/errors/document_not_provided_error.rs +28 -0
- package/src/document/errors/invalid_action_name_error.rs +24 -0
- package/src/document/errors/invalid_document_action_error.rs +28 -0
- package/src/document/errors/invalid_document_error.rs +32 -0
- package/src/document/errors/invalid_initial_revision_error.rs +25 -0
- package/src/document/errors/mismatch_owners_ids_error.rs +27 -0
- package/src/document/errors/mod.rs +55 -0
- package/src/document/errors/no_documents_supplied_error.rs +22 -0
- package/src/document/mod.rs +158 -0
- package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +22 -0
- package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +22 -0
- package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +22 -0
- package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +24 -0
- package/src/document/state_transition/document_batch_transition/mod.rs +1 -0
- package/src/document/state_transition/mod.rs +1 -0
- package/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +26 -0
- package/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +66 -0
- package/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +43 -0
- package/src/errors/consensus/basic/data_contract/index_error/duplicate_index_error.rs +39 -0
- package/src/errors/consensus/basic/data_contract/index_error/invalid_compound_index_error.rs +39 -0
- package/src/errors/consensus/basic/data_contract/index_error/invalid_index_property_type_error.rs +59 -0
- package/src/errors/consensus/basic/data_contract/index_error/invalid_indexed_property_constraint_error.rs +67 -0
- package/src/errors/consensus/basic/data_contract/index_error/mod.rs +15 -0
- package/src/errors/consensus/basic/data_contract/index_error/system_property_index_already_present_error.rs +51 -0
- package/src/errors/consensus/basic/data_contract/index_error/undefined_index_property_error.rs +51 -0
- package/src/errors/consensus/basic/data_contract/index_error/unique_indices_limit_reached_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +37 -0
- package/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +36 -0
- package/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +26 -0
- package/src/errors/consensus/basic/data_contract/mod.rs +25 -0
- package/src/errors/consensus/basic/decode/mod.rs +5 -0
- package/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +29 -0
- package/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +29 -0
- package/src/errors/consensus/basic/document/data_contract_not_present_error.rs +32 -0
- package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +36 -0
- package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +40 -0
- package/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +26 -0
- package/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +38 -0
- package/src/errors/consensus/basic/document/invalid_document_type_error.rs +39 -0
- package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +20 -0
- package/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +20 -0
- package/src/errors/consensus/basic/document/missing_document_type_error.rs +20 -0
- package/src/errors/consensus/basic/document/mod.rs +19 -0
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +32 -0
- package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +32 -0
- package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +38 -0
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +31 -0
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +37 -0
- package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +29 -0
- package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +33 -0
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +34 -0
- package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +34 -0
- package/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +60 -0
- package/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_output_script_error.rs +32 -0
- package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +29 -0
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +39 -0
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +42 -0
- package/src/errors/consensus/basic/identity/invalid_identity_public_key_type_error.rs +30 -0
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +22 -0
- package/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +24 -0
- package/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +22 -0
- package/src/errors/consensus/basic/identity/missing_public_key_error.rs +29 -0
- package/src/errors/consensus/basic/identity/mod.rs +45 -0
- package/src/errors/consensus/basic/incompatible_protocol_version_error.rs +32 -0
- package/src/errors/consensus/basic/invalid_identifier_error.rs +36 -0
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +41 -0
- package/src/errors/consensus/basic/invalid_state_transition_signature_error.rs +20 -0
- package/src/errors/consensus/basic/json_schema_compilation_error.rs +26 -0
- package/src/errors/consensus/basic/json_schema_error.rs +274 -0
- package/src/errors/consensus/basic/mod.rs +30 -0
- package/src/errors/consensus/basic/public_key_is_disabled_error.rs +30 -0
- package/src/errors/consensus/basic/public_key_security_level_not_met_error.rs +41 -0
- package/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +29 -0
- package/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +20 -0
- package/src/errors/consensus/basic/state_transition/mod.rs +7 -0
- package/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +36 -0
- package/src/errors/consensus/basic/test_consensus_error.rs +21 -0
- package/src/errors/consensus/basic/unsupported_protocol_version_error.rs +32 -0
- package/src/errors/consensus/basic/wrong_public_key_purpose_error.rs +37 -0
- package/src/errors/consensus/fee/balance_is_not_enough_error.rs +32 -0
- package/src/errors/consensus/fee/mod.rs +3 -0
- package/src/errors/consensus/mod.rs +4 -0
- package/src/errors/consensus/signature/identity_not_found_error.rs +29 -0
- package/src/errors/consensus/signature/mod.rs +3 -0
- package/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +31 -0
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_condition_error.rs +74 -0
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_execution_error.rs +82 -0
- package/src/errors/consensus/state/data_contract/data_trigger/data_trigger_invalid_result_error.rs +66 -0
- package/src/errors/consensus/state/data_contract/data_trigger/mod.rs +7 -0
- package/src/errors/consensus/state/data_contract/mod.rs +4 -0
- package/src/errors/consensus/state/document/document_already_present_error.rs +28 -0
- package/src/errors/consensus/state/document/document_not_found_error.rs +28 -0
- package/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +50 -0
- package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +72 -0
- package/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +28 -0
- package/src/errors/consensus/state/document/duplicate_unique_index_error.rs +42 -0
- package/src/errors/consensus/state/document/invalid_document_revision_error.rs +38 -0
- package/src/errors/consensus/state/document/mod.rs +15 -0
- package/src/errors/consensus/state/identity/identity_already_exists_error.rs +28 -0
- package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +49 -0
- package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +31 -0
- package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +28 -0
- package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +28 -0
- package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +38 -0
- package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +26 -0
- package/src/errors/consensus/state/identity/mod.rs +15 -0
- package/src/errors/consensus/state/mod.rs +3 -0
- package/src/errors/consensus_error.rs +612 -0
- package/src/errors/from.rs +24 -0
- package/src/errors/js_conversion.rs +63 -0
- package/src/errors/mod.rs +10 -0
- package/src/errors/public_key_validation_error.rs +23 -0
- package/src/identifier.rs +103 -0
- package/src/identity.rs +253 -0
- package/src/identity_facade.rs +55 -0
- package/src/identity_public_key/key_type.rs +22 -0
- package/src/identity_public_key/mod.rs +192 -0
- package/src/identity_public_key/public_keys_validator.rs +44 -0
- package/src/identity_public_key/purpose.rs +24 -0
- package/src/identity_public_key/security_level.rs +21 -0
- package/src/lib.rs +29 -0
- package/src/metadata.rs +54 -0
- package/src/state_repository.rs +229 -0
- package/src/state_transition/mod.rs +41 -0
- package/src/utils.rs +59 -0
- package/src/validation_result.rs +41 -0
- package/test/integration/DashPlatformProtocol.spec.js +4 -4
- package/test/integration/ajv/keywords/byteArray/addByteArrayKeyword.spec.js +2 -2
- package/test/integration/dataContract/DataContractFacade.spec.js +6 -6
- package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +10 -10
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +14 -14
- package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +22 -22
- package/test/integration/document/Document.spec.js +10 -5
- package/test/integration/document/DocumentFacade.spec.js +11 -11
- package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +5 -5
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +25 -25
- package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +15 -15
- package/test/integration/document/validation/validateDocumentFactory.spec.js +12 -12
- package/test/integration/error/consensus/createConsensusError.spec.js +3 -3
- package/test/integration/identity/IdentityFacade.spec.js +13 -13
- package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +12 -12
- package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +11 -11
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +8 -8
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +24 -39
- package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +7 -7
- package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +29 -35
- package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +8 -8
- package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +11 -11
- package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +10 -10
- package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +7 -7
- package/test/integration/identity/validation/validateIdentityFactory.spec.js +8 -8
- package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +50 -24
- package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +14 -14
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +15 -19
- package/test/integration/stateTransition/calculateStateTransitionFee.spec.js +8 -11
- package/test/integration/util/generateEntropy.spec.js +1 -1
- package/test/integration/util/serializer.spec.js +2 -2
- package/test/unit/DashPlatformProtocol.spec.js +4 -4
- package/test/unit/Identifier.spec.js +2 -2
- package/test/unit/Metadata.spec.js +1 -1
- package/test/unit/dataContract/DataContract.spec.js +100 -159
- package/test/unit/dataContract/DataContractFactory.spec.js +55 -111
- package/test/unit/dataContract/createDataContract.spec.js +20 -10
- package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +2 -2
- package/test/unit/dataContract/generateDataContractId.spec.js +23 -6
- package/test/unit/dataContract/getBinaryPropertiesFromSchema.spec.js +1 -1
- package/test/unit/dataContract/getPropertyDefinitionByPath.spec.js +1 -1
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +20 -67
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +29 -23
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +48 -45
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +8 -8
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +6 -6
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +6 -6
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +9 -9
- package/test/unit/dataContract/validation/validateDataContractMaxDepthFactory.spec.js +6 -6
- package/test/unit/dataContract/validation/validateDataContractPatternsFactory.spec.js +3 -3
- package/test/unit/dataTrigger/DataTrigger.spec.js +8 -8
- package/test/unit/dataTrigger/DataTriggerExecutionContext.spec.js +4 -4
- package/test/unit/dataTrigger/dashpayDataTriggers/createContactRequestDataTrigger.spec.js +13 -15
- package/test/unit/dataTrigger/dpnsTriggers/createDomainDataTrigger.spec.js +12 -12
- package/test/unit/dataTrigger/featureFlagDataTriggers/createFeatureFlagDataTrigger.spec.js +11 -13
- package/test/unit/dataTrigger/getDataTriggersFactory.spec.js +7 -7
- package/test/unit/dataTrigger/rejectDataTrigger.spec.js +8 -8
- package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +9 -9
- package/test/unit/decodeProtocolEntityFactory.spec.js +4 -4
- package/test/unit/document/Document.spec.js +9 -9
- package/test/unit/document/DocumentFactory.spec.js +19 -19
- package/test/unit/document/errors/InvalidDocumentError.spec.js +2 -2
- package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +8 -8
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +8 -8
- package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +16 -17
- package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +1 -1
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +2 -2
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +6 -6
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +7 -7
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +6 -6
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +27 -34
- package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +9 -9
- package/test/unit/errors/consensus/codes.spec.js +7 -7
- package/test/unit/identity/Identity.spec.js +98 -69
- package/test/unit/identity/IdentityFactory.spec.js +15 -15
- package/test/unit/identity/IdentityPublicKey.spec.js +53 -66
- package/test/unit/identity/creditsConverter.spec.js +1 -1
- package/test/unit/identity/errors/InvalidIdentityError.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +7 -7
- package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +8 -8
- package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +6 -6
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +4 -4
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +7 -7
- package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +2 -2
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +6 -6
- package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +6 -6
- package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +5 -5
- package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +3 -3
- package/test/unit/identity/validation/validateRequiredPurposeAndSecurityLevelFactory.spec.js +5 -5
- package/test/unit/stateTransition/StateTransitionFactory.spec.js +8 -8
- package/test/unit/stateTransition/createStateTransitionFactory.spec.js +8 -8
- package/test/unit/stateTransition/errors/InvalidStateTransitionError.spec.js +3 -3
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +12 -12
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +15 -15
- package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +22 -22
- package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +6 -6
- package/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +9 -9
- package/test/unit/version/validateProtocolVersionFactory.spec.js +7 -7
- package/tsconfig.json +18 -0
- package/wasm/wasm_dpp.d.ts +2850 -0
- package/wasm/wasm_dpp.js +7978 -0
- package/wasm/wasm_dpp_bg.js +1 -0
- package/wasm/wasm_dpp_bg.wasm +0 -0
- package/wasm/wasm_dpp_bg.wasm.d.ts +536 -0
- package/webpack.config.js +22 -19
- package/CHANGELOG.md +0 -397
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
const validatePublicKeys = require(
|
|
2
|
-
'
|
|
2
|
+
'@dashevo/dpp/lib/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState',
|
|
3
3
|
);
|
|
4
|
-
const { expectValidationError } = require('
|
|
5
|
-
const DuplicatedIdentityPublicKeyIdError = require('
|
|
6
|
-
const DuplicatedIdentityPublicKeyError = require('
|
|
7
|
-
const identitySchema = require('
|
|
8
|
-
const MaxIdentityPublicKeyLimitReachedError = require('
|
|
9
|
-
const getIdentityFixture = require('
|
|
4
|
+
const { expectValidationError } = require('@dashevo/dpp/lib/test/expect/expectError');
|
|
5
|
+
const DuplicatedIdentityPublicKeyIdError = require('@dashevo/dpp/lib/errors/consensus/state/identity/DuplicatedIdentityPublicKeyIdError');
|
|
6
|
+
const DuplicatedIdentityPublicKeyError = require('@dashevo/dpp/lib/errors/consensus/state/identity/DuplicatedIdentityPublicKeyError');
|
|
7
|
+
const identitySchema = require('@dashevo/dpp/schema/identity/identity.json');
|
|
8
|
+
const MaxIdentityPublicKeyLimitReachedError = require('@dashevo/dpp/lib/errors/consensus/state/identity/MaxIdentityPublicKeyLimitReachedError');
|
|
9
|
+
const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
|
|
10
10
|
|
|
11
11
|
describe('validatePublicKeysState', () => {
|
|
12
12
|
let rawPublicKeys;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
const { getRE2Class } = require('@dashevo/wasm-re2');
|
|
2
2
|
|
|
3
|
-
const createAjv = require('
|
|
3
|
+
const createAjv = require('@dashevo/dpp/lib/ajv/createAjv');
|
|
4
4
|
|
|
5
|
-
const getChainAssetLockFixture = require('
|
|
6
|
-
const JsonSchemaValidator = require('
|
|
7
|
-
const createStateRepositoryMock = require('
|
|
5
|
+
const getChainAssetLockFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
|
|
6
|
+
const JsonSchemaValidator = require('@dashevo/dpp/lib/validation/JsonSchemaValidator');
|
|
7
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
8
8
|
|
|
9
9
|
const { expectValidationError, expectJsonSchemaError } = require(
|
|
10
|
-
'
|
|
10
|
+
'@dashevo/dpp/lib/test/expect/expectError',
|
|
11
11
|
);
|
|
12
12
|
|
|
13
|
-
const validateChainAssetLockProofStructureFactory = require('
|
|
14
|
-
const ValidationResult = require('
|
|
15
|
-
const IdentityAssetLockTransactionIsNotFoundError = require('
|
|
16
|
-
const InvalidAssetLockProofCoreChainHeightError = require('
|
|
17
|
-
const InvalidAssetLockProofTransactionHeightError = require('
|
|
18
|
-
const SomeConsensusError = require('
|
|
19
|
-
const StateTransitionExecutionContext = require('
|
|
13
|
+
const validateChainAssetLockProofStructureFactory = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory');
|
|
14
|
+
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
15
|
+
const IdentityAssetLockTransactionIsNotFoundError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionIsNotFoundError');
|
|
16
|
+
const InvalidAssetLockProofCoreChainHeightError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidAssetLockProofCoreChainHeightError');
|
|
17
|
+
const InvalidAssetLockProofTransactionHeightError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidAssetLockProofTransactionHeightError');
|
|
18
|
+
const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
|
|
19
|
+
const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
|
|
20
20
|
|
|
21
21
|
describe('validateChainAssetLockProofStructureFactory', () => {
|
|
22
22
|
let rawProof;
|
|
@@ -45,9 +45,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
45
45
|
|
|
46
46
|
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
47
47
|
|
|
48
|
-
stateRepositoryMock.
|
|
49
|
-
coreChainLockedHeight: 42,
|
|
50
|
-
});
|
|
48
|
+
stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight.resolves(42);
|
|
51
49
|
|
|
52
50
|
stateRepositoryMock.fetchTransaction.resolves({
|
|
53
51
|
data: Buffer.from(rawTransaction, 'hex'),
|
|
@@ -92,7 +90,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
92
90
|
|
|
93
91
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
94
92
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
95
|
-
expect(stateRepositoryMock.
|
|
93
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
96
94
|
});
|
|
97
95
|
|
|
98
96
|
it('should be equal to 1', async () => {
|
|
@@ -111,7 +109,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
111
109
|
expect(error.getKeyword()).to.equal('const');
|
|
112
110
|
|
|
113
111
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
114
|
-
expect(stateRepositoryMock.
|
|
112
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
115
113
|
});
|
|
116
114
|
});
|
|
117
115
|
|
|
@@ -134,7 +132,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
134
132
|
|
|
135
133
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
136
134
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
137
|
-
expect(stateRepositoryMock.
|
|
135
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
138
136
|
});
|
|
139
137
|
|
|
140
138
|
it('should be an integer', async () => {
|
|
@@ -154,7 +152,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
154
152
|
|
|
155
153
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
156
154
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
157
|
-
expect(stateRepositoryMock.
|
|
155
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
158
156
|
});
|
|
159
157
|
|
|
160
158
|
it('should be a number', async () => {
|
|
@@ -174,7 +172,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
174
172
|
|
|
175
173
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
176
174
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
177
|
-
expect(stateRepositoryMock.
|
|
175
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
178
176
|
});
|
|
179
177
|
|
|
180
178
|
it('should be greater than 0', async () => {
|
|
@@ -194,7 +192,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
194
192
|
|
|
195
193
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
196
194
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
197
|
-
expect(stateRepositoryMock.
|
|
195
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
198
196
|
});
|
|
199
197
|
|
|
200
198
|
it('should be less than 4294967296', async () => {
|
|
@@ -214,13 +212,11 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
214
212
|
|
|
215
213
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
216
214
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
217
|
-
expect(stateRepositoryMock.
|
|
215
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
218
216
|
});
|
|
219
217
|
|
|
220
218
|
it('should be less or equal to consensus core height', async () => {
|
|
221
|
-
stateRepositoryMock.
|
|
222
|
-
coreChainLockedHeight: 41,
|
|
223
|
-
});
|
|
219
|
+
stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight.resolves(41);
|
|
224
220
|
|
|
225
221
|
const result = await validateChainAssetLockProofStructure(
|
|
226
222
|
rawProof,
|
|
@@ -256,7 +252,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
256
252
|
|
|
257
253
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
258
254
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
259
|
-
expect(stateRepositoryMock.
|
|
255
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
260
256
|
});
|
|
261
257
|
|
|
262
258
|
it('should be a byte array', async () => {
|
|
@@ -278,7 +274,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
278
274
|
|
|
279
275
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
280
276
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
281
|
-
expect(stateRepositoryMock.
|
|
277
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
282
278
|
});
|
|
283
279
|
|
|
284
280
|
it('should not be shorter than 36 bytes', async () => {
|
|
@@ -298,7 +294,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
298
294
|
|
|
299
295
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
300
296
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
301
|
-
expect(stateRepositoryMock.
|
|
297
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
302
298
|
});
|
|
303
299
|
|
|
304
300
|
it('should not be longer than 36 bytes', async () => {
|
|
@@ -318,7 +314,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
318
314
|
|
|
319
315
|
expect(stateRepositoryMock.fetchTransaction).to.not.be.called();
|
|
320
316
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
321
|
-
expect(stateRepositoryMock.
|
|
317
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.not.be.called();
|
|
322
318
|
});
|
|
323
319
|
|
|
324
320
|
it('should point to existing transaction', async () => {
|
|
@@ -343,7 +339,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
343
339
|
executionContext,
|
|
344
340
|
);
|
|
345
341
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
346
|
-
expect(stateRepositoryMock.
|
|
342
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.be.calledOnce();
|
|
347
343
|
});
|
|
348
344
|
|
|
349
345
|
it('should point to valid transaction', async () => {
|
|
@@ -365,9 +361,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
365
361
|
|
|
366
362
|
it('should point to transaction from block lower than core chain locked height', async () => {
|
|
367
363
|
rawProof.coreChainLockedHeight = 41;
|
|
368
|
-
stateRepositoryMock.
|
|
369
|
-
coreChainLockedHeight: 41,
|
|
370
|
-
});
|
|
364
|
+
stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight.resolves(41);
|
|
371
365
|
|
|
372
366
|
const result = await validateChainAssetLockProofStructure(
|
|
373
367
|
rawProof,
|
|
@@ -387,7 +381,7 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
387
381
|
executionContext,
|
|
388
382
|
);
|
|
389
383
|
expect(validateAssetLockTransactionMock).to.not.be.called();
|
|
390
|
-
expect(stateRepositoryMock.
|
|
384
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.be.calledOnce();
|
|
391
385
|
});
|
|
392
386
|
});
|
|
393
387
|
|
|
@@ -410,6 +404,6 @@ describe('validateChainAssetLockProofStructureFactory', () => {
|
|
|
410
404
|
0,
|
|
411
405
|
executionContext,
|
|
412
406
|
);
|
|
413
|
-
expect(stateRepositoryMock.
|
|
407
|
+
expect(stateRepositoryMock.fetchLatestPlatformCoreChainLockedHeight).to.be.calledOnce();
|
|
414
408
|
});
|
|
415
409
|
});
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
const { Transaction, Script } = require('@dashevo/dashcore-lib');
|
|
2
2
|
const Output = require('@dashevo/dashcore-lib/lib/transaction/output');
|
|
3
3
|
|
|
4
|
-
const fetchAssetLockTransactionOutputFactory = require('
|
|
5
|
-
const getChainAssetLockFixture = require('
|
|
6
|
-
const getInstantAssetLockProofFixture = require('
|
|
7
|
-
const createStateRepositoryMock = require('
|
|
8
|
-
|
|
9
|
-
const UnknownAssetLockProofError = require('
|
|
10
|
-
const AssetLockTransactionIsNotFoundError = require('
|
|
11
|
-
const StateTransitionExecutionContext = require('
|
|
4
|
+
const fetchAssetLockTransactionOutputFactory = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory');
|
|
5
|
+
const getChainAssetLockFixture = require('@dashevo/dpp/lib/test/fixtures/getChainAssetLockProofFixture');
|
|
6
|
+
const getInstantAssetLockProofFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture');
|
|
7
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
8
|
+
|
|
9
|
+
const UnknownAssetLockProofError = require('@dashevo/dpp/lib/identity/errors/UnknownAssetLockProofTypeError');
|
|
10
|
+
const AssetLockTransactionIsNotFoundError = require('@dashevo/dpp/lib/identity/errors/AssetLockTransactionIsNotFoundError');
|
|
11
|
+
const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
|
|
12
12
|
|
|
13
13
|
describe('fetchAssetLockTransactionOutputFactory', () => {
|
|
14
14
|
let fetchAssetLockTransactionOutput;
|
|
@@ -2,22 +2,22 @@ const { getRE2Class } = require('@dashevo/wasm-re2');
|
|
|
2
2
|
|
|
3
3
|
const DashCoreLib = require('@dashevo/dashcore-lib');
|
|
4
4
|
|
|
5
|
-
const createAjv = require('
|
|
5
|
+
const createAjv = require('@dashevo/dpp/lib/ajv/createAjv');
|
|
6
6
|
|
|
7
|
-
const getInstantAssetLockFixture = require('
|
|
8
|
-
const JsonSchemaValidator = require('
|
|
9
|
-
const createStateRepositoryMock = require('
|
|
10
|
-
const InvalidIdentityAssetLockProofError = require('
|
|
11
|
-
const IdentityAssetLockProofLockedTransactionMismatchError = require('
|
|
12
|
-
const InvalidIdentityAssetLockProofSignatureError = require('
|
|
7
|
+
const getInstantAssetLockFixture = require('@dashevo/dpp/lib/test/fixtures/getInstantAssetLockProofFixture');
|
|
8
|
+
const JsonSchemaValidator = require('@dashevo/dpp/lib/validation/JsonSchemaValidator');
|
|
9
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
10
|
+
const InvalidIdentityAssetLockProofError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidInstantAssetLockProofError');
|
|
11
|
+
const IdentityAssetLockProofLockedTransactionMismatchError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/IdentityAssetLockProofLockedTransactionMismatchError');
|
|
12
|
+
const InvalidIdentityAssetLockProofSignatureError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidInstantAssetLockProofSignatureError');
|
|
13
13
|
|
|
14
14
|
const { expectValidationError, expectJsonSchemaError } = require(
|
|
15
|
-
'
|
|
15
|
+
'@dashevo/dpp/lib/test/expect/expectError',
|
|
16
16
|
);
|
|
17
17
|
|
|
18
|
-
const ValidationResult = require('
|
|
19
|
-
const InvalidIdentityAssetLockTransactionError = require('
|
|
20
|
-
const validateInstantAssetLockProofStructureFactory = require('
|
|
18
|
+
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
19
|
+
const InvalidIdentityAssetLockTransactionError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionError');
|
|
20
|
+
const validateInstantAssetLockProofStructureFactory = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory');
|
|
21
21
|
|
|
22
22
|
describe('validateInstantAssetLockProofStructureFactory', () => {
|
|
23
23
|
let rawProof;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
const { Transaction } = require('@dashevo/dashcore-lib');
|
|
2
2
|
|
|
3
3
|
const DashCoreLib = require('@dashevo/dashcore-lib');
|
|
4
|
-
const validateAssetLockTransactionFactory = require('
|
|
5
|
-
const createStateRepositoryMock = require('
|
|
4
|
+
const validateAssetLockTransactionFactory = require('@dashevo/dpp/lib/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory');
|
|
5
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
6
6
|
|
|
7
|
-
const ValidationResult = require('
|
|
7
|
+
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
8
8
|
|
|
9
|
-
const { expectValidationError } = require('
|
|
9
|
+
const { expectValidationError } = require('@dashevo/dpp/lib/test/expect/expectError');
|
|
10
10
|
|
|
11
|
-
const InvalidIdentityAssetLockTransactionError = require('
|
|
12
|
-
const IdentityAssetLockTransactionOutputNotFoundError = require('
|
|
13
|
-
const IdentityAssetLockTransactionOutPointAlreadyExistsError = require('
|
|
14
|
-
const InvalidIdentityAssetLockTransactionOutputError = require('
|
|
15
|
-
const InvalidAssetLockTransactionOutputReturnSizeError = require('
|
|
16
|
-
const StateTransitionExecutionContext = require('
|
|
11
|
+
const InvalidIdentityAssetLockTransactionError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionError');
|
|
12
|
+
const IdentityAssetLockTransactionOutputNotFoundError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutputNotFoundError');
|
|
13
|
+
const IdentityAssetLockTransactionOutPointAlreadyExistsError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/IdentityAssetLockTransactionOutPointAlreadyExistsError');
|
|
14
|
+
const InvalidIdentityAssetLockTransactionOutputError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidIdentityAssetLockTransactionOutputError');
|
|
15
|
+
const InvalidAssetLockTransactionOutputReturnSizeError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidAssetLockTransactionOutputReturnSizeError');
|
|
16
|
+
const StateTransitionExecutionContext = require('@dashevo/dpp/lib/stateTransition/StateTransitionExecutionContext');
|
|
17
17
|
|
|
18
18
|
describe('validateAssetLockTransactionFactory', () => {
|
|
19
19
|
let stateRepositoryMock;
|
package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js
CHANGED
|
@@ -2,13 +2,13 @@ const { PrivateKey, crypto: { Hash } } = require('@dashevo/dashcore-lib');
|
|
|
2
2
|
|
|
3
3
|
const crypto = require('crypto');
|
|
4
4
|
|
|
5
|
-
const getIdentityCreateTransitionFixture = require('
|
|
6
|
-
const IdentityPublicKey = require('
|
|
7
|
-
const BlsSignatures = require('
|
|
8
|
-
const validatePublicKeySignaturesFactory = require('
|
|
9
|
-
const ValidationResult = require('
|
|
10
|
-
const { expectValidationError } = require('
|
|
11
|
-
const InvalidIdentityKeySignatureError = require('
|
|
5
|
+
const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
6
|
+
const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
7
|
+
const BlsSignatures = require('@dashevo/dpp/lib/bls/bls');
|
|
8
|
+
const validatePublicKeySignaturesFactory = require('@dashevo/dpp/lib/identity/stateTransition/validatePublicKeySignaturesFactory');
|
|
9
|
+
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
10
|
+
const { expectValidationError } = require('@dashevo/dpp/lib/test/expect/expectError');
|
|
11
|
+
const InvalidIdentityKeySignatureError = require('@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidIdentityKeySignatureError');
|
|
12
12
|
|
|
13
13
|
describe('validatePublicKeySignaturesFactory', () => {
|
|
14
14
|
let identityCreateTransition;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
const { getRE2Class } = require('@dashevo/wasm-re2');
|
|
2
2
|
|
|
3
|
-
const createAjv = require('
|
|
3
|
+
const createAjv = require('@dashevo/dpp/lib/ajv/createAjv');
|
|
4
4
|
|
|
5
|
-
const getIdentityFixture = require('
|
|
5
|
+
const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
|
|
6
6
|
|
|
7
7
|
const JsonSchemaValidator = require(
|
|
8
|
-
'
|
|
8
|
+
'@dashevo/dpp/lib/validation/JsonSchemaValidator',
|
|
9
9
|
);
|
|
10
10
|
|
|
11
11
|
const { expectValidationError, expectJsonSchemaError } = require(
|
|
12
|
-
'
|
|
12
|
+
'@dashevo/dpp/lib/test/expect/expectError',
|
|
13
13
|
);
|
|
14
14
|
|
|
15
15
|
const validateIdentityFactory = require(
|
|
16
|
-
'
|
|
16
|
+
'@dashevo/dpp/lib/identity/validation/validateIdentityFactory',
|
|
17
17
|
);
|
|
18
18
|
|
|
19
19
|
const JsonSchemaError = require(
|
|
20
|
-
'
|
|
20
|
+
'@dashevo/dpp/lib/errors/consensus/basic/JsonSchemaError',
|
|
21
21
|
);
|
|
22
22
|
|
|
23
|
-
const ValidationResult = require('
|
|
24
|
-
const SomeConsensusError = require('
|
|
23
|
+
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
24
|
+
const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
|
|
25
25
|
|
|
26
26
|
describe('validateIdentityFactory', () => {
|
|
27
27
|
let rawIdentity;
|
|
@@ -2,59 +2,84 @@ const { getRE2Class } = require('@dashevo/wasm-re2');
|
|
|
2
2
|
|
|
3
3
|
const crypto = require('crypto');
|
|
4
4
|
|
|
5
|
-
const createAjv = require('
|
|
5
|
+
const createAjv = require('@dashevo/dpp/lib/ajv/createAjv');
|
|
6
6
|
|
|
7
7
|
const JsonSchemaValidator = require(
|
|
8
|
-
'
|
|
8
|
+
'@dashevo/dpp/lib/validation/JsonSchemaValidator',
|
|
9
9
|
);
|
|
10
10
|
|
|
11
11
|
const validatePublicKeysFactory = require(
|
|
12
|
-
'
|
|
12
|
+
'@dashevo/dpp/lib/identity/validation/validatePublicKeysFactory',
|
|
13
13
|
);
|
|
14
14
|
|
|
15
|
-
const getIdentityFixture = require('
|
|
16
|
-
|
|
17
|
-
const {
|
|
18
|
-
expectValidationError,
|
|
19
|
-
expectJsonSchemaError,
|
|
20
|
-
} = require('../../../../lib/test/expect/expectError');
|
|
15
|
+
const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
|
|
21
16
|
|
|
22
17
|
const DuplicatedIdentityPublicKeyError = require(
|
|
23
|
-
'
|
|
18
|
+
'@dashevo/dpp/lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyError',
|
|
24
19
|
);
|
|
25
20
|
const DuplicatedIdentityPublicKeyIdError = require(
|
|
26
|
-
'
|
|
21
|
+
'@dashevo/dpp/lib/errors/consensus/basic/identity/DuplicatedIdentityPublicKeyIdError',
|
|
27
22
|
);
|
|
28
23
|
|
|
29
24
|
const InvalidIdentityPublicKeyDataError = require(
|
|
30
|
-
'
|
|
25
|
+
'@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidIdentityPublicKeyDataError',
|
|
31
26
|
);
|
|
32
27
|
|
|
33
28
|
const InvalidIdentityPublicKeySecurityLevelError = require(
|
|
34
|
-
'
|
|
29
|
+
'@dashevo/dpp/lib/errors/consensus/basic/identity/InvalidIdentityPublicKeySecurityLevelError',
|
|
35
30
|
);
|
|
36
31
|
|
|
37
32
|
const IdentityPublicKey = require(
|
|
38
|
-
'
|
|
33
|
+
'@dashevo/dpp/lib/identity/IdentityPublicKey',
|
|
39
34
|
);
|
|
40
|
-
const BlsSignatures = require('
|
|
35
|
+
const BlsSignatures = require('@dashevo/dpp/lib/bls/bls');
|
|
41
36
|
|
|
42
|
-
const identityPublicKeySchema = require('
|
|
43
|
-
const stateTransitionPublicKeySchema = require('
|
|
37
|
+
const identityPublicKeySchema = require('@dashevo/dpp/schema/identity/publicKey.json');
|
|
38
|
+
const stateTransitionPublicKeySchema = require('@dashevo/dpp/schema/identity/stateTransition/publicKey.json');
|
|
39
|
+
const {
|
|
40
|
+
expectValidationError,
|
|
41
|
+
expectJsonSchemaError,
|
|
42
|
+
} = require('../../../../lib/test/expect/expectError');
|
|
43
|
+
|
|
44
|
+
const { default: loadWasmDpp } = require('../../../../dist');
|
|
44
45
|
|
|
45
46
|
describe('validatePublicKeysFactory', () => {
|
|
46
47
|
let rawPublicKeys;
|
|
47
48
|
let validatePublicKeys;
|
|
48
49
|
let validator;
|
|
49
50
|
let bls;
|
|
51
|
+
let PublicKeysValidator;
|
|
52
|
+
let publicKeysValidator;
|
|
53
|
+
let InvalidIdentityPublicKeyDataErrorWasm;
|
|
54
|
+
let PublicKeyValidationError;
|
|
50
55
|
|
|
51
56
|
beforeEach(async () => {
|
|
52
57
|
({ publicKeys: rawPublicKeys } = getIdentityFixture().toObject());
|
|
53
58
|
|
|
59
|
+
({
|
|
60
|
+
PublicKeysValidator,
|
|
61
|
+
InvalidIdentityPublicKeyDataError: InvalidIdentityPublicKeyDataErrorWasm,
|
|
62
|
+
PublicKeyValidationError,
|
|
63
|
+
} = await loadWasmDpp());
|
|
64
|
+
|
|
54
65
|
const RE2 = await getRE2Class();
|
|
55
66
|
const ajv = createAjv(RE2);
|
|
56
67
|
bls = await BlsSignatures.getInstance();
|
|
57
68
|
|
|
69
|
+
const blsAdapter = {
|
|
70
|
+
validatePublicKey(publicKeyBuffer) {
|
|
71
|
+
let pk;
|
|
72
|
+
|
|
73
|
+
try {
|
|
74
|
+
pk = bls.PublicKey.fromBytes(publicKeyBuffer);
|
|
75
|
+
} catch (e) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return Boolean(pk);
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
|
|
58
83
|
validator = new JsonSchemaValidator(ajv);
|
|
59
84
|
|
|
60
85
|
validatePublicKeys = validatePublicKeysFactory(
|
|
@@ -62,14 +87,15 @@ describe('validatePublicKeysFactory', () => {
|
|
|
62
87
|
identityPublicKeySchema,
|
|
63
88
|
bls,
|
|
64
89
|
);
|
|
90
|
+
|
|
91
|
+
publicKeysValidator = new PublicKeysValidator(blsAdapter);
|
|
65
92
|
});
|
|
66
93
|
|
|
67
94
|
describe('id', () => {
|
|
68
95
|
it('should be present', () => {
|
|
69
96
|
delete rawPublicKeys[1].id;
|
|
70
97
|
|
|
71
|
-
const result =
|
|
72
|
-
|
|
98
|
+
const result = publicKeysValidator.validateKeys(rawPublicKeys);
|
|
73
99
|
expectJsonSchemaError(result);
|
|
74
100
|
|
|
75
101
|
const [error] = result.getErrors();
|
|
@@ -369,7 +395,7 @@ describe('validatePublicKeysFactory', () => {
|
|
|
369
395
|
data: Buffer.from('01fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'),
|
|
370
396
|
}];
|
|
371
397
|
|
|
372
|
-
const result =
|
|
398
|
+
const result = publicKeysValidator.validateKeys(rawPublicKeys);
|
|
373
399
|
|
|
374
400
|
expect(result.isValid()).to.be.true();
|
|
375
401
|
});
|
|
@@ -389,7 +415,7 @@ describe('validatePublicKeysFactory', () => {
|
|
|
389
415
|
expect(result.isValid()).to.be.true();
|
|
390
416
|
});
|
|
391
417
|
|
|
392
|
-
it('should return invalid result if BLS12_381 public key is invalid', () => {
|
|
418
|
+
it('should return invalid result if BLS12_381 public key is invalid', async () => {
|
|
393
419
|
rawPublicKeys = [{
|
|
394
420
|
id: 0,
|
|
395
421
|
type: IdentityPublicKey.TYPES.BLS12_381,
|
|
@@ -399,15 +425,15 @@ describe('validatePublicKeysFactory', () => {
|
|
|
399
425
|
data: Buffer.from('11fac99ca2c8f39c286717c213e190aba4b7af76db320ec43f479b7d9a2012313a0ae59ca576edf801444bc694686694', 'hex'),
|
|
400
426
|
}];
|
|
401
427
|
|
|
402
|
-
const result =
|
|
428
|
+
const result = publicKeysValidator.validateKeys(rawPublicKeys);
|
|
403
429
|
|
|
404
|
-
expectValidationError(result,
|
|
430
|
+
await expectValidationError(result, InvalidIdentityPublicKeyDataErrorWasm);
|
|
405
431
|
|
|
406
432
|
const [error] = result.getErrors();
|
|
407
433
|
|
|
408
434
|
expect(error.getCode()).to.equal(1040);
|
|
409
435
|
expect(error.getPublicKeyId()).to.deep.equal(rawPublicKeys[0].id);
|
|
410
|
-
expect(error.getValidationError()).to.be.instanceOf(
|
|
436
|
+
expect(error.getValidationError()).to.be.instanceOf(PublicKeyValidationError);
|
|
411
437
|
expect(error.getValidationError().message).to.equal('Invalid public key');
|
|
412
438
|
});
|
|
413
439
|
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
const { PrivateKey, crypto: { Hash } } = require('@dashevo/dashcore-lib');
|
|
2
2
|
|
|
3
3
|
const crypto = require('crypto');
|
|
4
|
-
const calculateStateTransitionFee = require('
|
|
5
|
-
|
|
6
|
-
const StateTransitionMock = require('
|
|
7
|
-
const IdentityPublicKey = require('
|
|
8
|
-
const InvalidSignatureTypeError = require('
|
|
9
|
-
const InvalidSignaturePublicKeyError = require('
|
|
10
|
-
const PublicKeySecurityLevelNotMetError = require('
|
|
11
|
-
const WrongPublicKeyPurposeError = require('
|
|
12
|
-
const StateTransitionIsNotSignedError = require('
|
|
13
|
-
const PublicKeyMismatchError = require('
|
|
14
|
-
const BlsSignatures = require('
|
|
15
|
-
const PublicKeyIsDisabledError = require('
|
|
16
|
-
const InvalidSignaturePublicKeySecurityLevelError = require('
|
|
17
|
-
const stateTransitionTypes = require('
|
|
4
|
+
const calculateStateTransitionFee = require('@dashevo/dpp/lib/stateTransition/fee/calculateStateTransitionFee');
|
|
5
|
+
|
|
6
|
+
const StateTransitionMock = require('@dashevo/dpp/lib/test/mocks/StateTransitionMock');
|
|
7
|
+
const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
8
|
+
const InvalidSignatureTypeError = require('@dashevo/dpp/lib/stateTransition/errors/InvalidIdentityPublicKeyTypeError');
|
|
9
|
+
const InvalidSignaturePublicKeyError = require('@dashevo/dpp/lib/stateTransition/errors/InvalidSignaturePublicKeyError');
|
|
10
|
+
const PublicKeySecurityLevelNotMetError = require('@dashevo/dpp/lib/stateTransition/errors/PublicKeySecurityLevelNotMetError');
|
|
11
|
+
const WrongPublicKeyPurposeError = require('@dashevo/dpp/lib/stateTransition/errors/WrongPublicKeyPurposeError');
|
|
12
|
+
const StateTransitionIsNotSignedError = require('@dashevo/dpp/lib/stateTransition/errors/StateTransitionIsNotSignedError');
|
|
13
|
+
const PublicKeyMismatchError = require('@dashevo/dpp/lib/stateTransition/errors/PublicKeyMismatchError');
|
|
14
|
+
const BlsSignatures = require('@dashevo/dpp/lib/bls/bls');
|
|
15
|
+
const PublicKeyIsDisabledError = require('@dashevo/dpp/lib/stateTransition/errors/PublicKeyIsDisabledError');
|
|
16
|
+
const InvalidSignaturePublicKeySecurityLevelError = require('@dashevo/dpp/lib/stateTransition/errors/InvalidSignaturePublicKeySecurityLevelError');
|
|
17
|
+
const stateTransitionTypes = require('@dashevo/dpp/lib/stateTransition/stateTransitionTypes');
|
|
18
18
|
|
|
19
19
|
describe('AbstractStateTransitionIdentitySigned', () => {
|
|
20
20
|
let stateTransition;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
const { PrivateKey } = require('@dashevo/dashcore-lib');
|
|
2
2
|
|
|
3
|
-
const DashPlatformProtocol = require('
|
|
3
|
+
const DashPlatformProtocol = require('@dashevo/dpp/lib/DashPlatformProtocol');
|
|
4
4
|
|
|
5
|
-
const DataContractCreateTransition = require('
|
|
5
|
+
const DataContractCreateTransition = require('@dashevo/dpp/lib/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition');
|
|
6
6
|
|
|
7
|
-
const ValidationResult = require('
|
|
7
|
+
const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
|
|
8
8
|
|
|
9
|
-
const getDataContractFixture = require('
|
|
10
|
-
const getDocumentsFixture = require('
|
|
11
|
-
const getIdentityCreateTransitionFixture = require('
|
|
9
|
+
const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
|
|
10
|
+
const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
|
|
11
|
+
const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
|
|
12
12
|
|
|
13
|
-
const createStateRepositoryMock = require('
|
|
13
|
+
const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
|
|
14
14
|
|
|
15
|
-
const DataContractFactory = require('
|
|
16
|
-
const DocumentFactory = require('
|
|
15
|
+
const DataContractFactory = require('@dashevo/dpp/lib/dataContract/DataContractFactory');
|
|
16
|
+
const DocumentFactory = require('@dashevo/dpp/lib/document/DocumentFactory');
|
|
17
17
|
|
|
18
|
-
const IdentityPublicKey = require('
|
|
18
|
+
const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
|
|
19
19
|
|
|
20
|
-
const MissingOptionError = require('
|
|
21
|
-
const createDPPMock = require('
|
|
22
|
-
const SomeConsensusError = require('
|
|
20
|
+
const MissingOptionError = require('@dashevo/dpp/lib/errors/MissingOptionError');
|
|
21
|
+
const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock');
|
|
22
|
+
const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
|
|
23
23
|
|
|
24
24
|
describe('StateTransitionFacade', () => {
|
|
25
25
|
let dpp;
|
|
@@ -67,15 +67,11 @@ describe('StateTransitionFacade', () => {
|
|
|
67
67
|
getBalance,
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
const
|
|
70
|
+
const blockTime = Date.now();
|
|
71
71
|
|
|
72
72
|
stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
|
|
73
73
|
stateRepositoryMock.fetchIdentity.resolves(identity);
|
|
74
|
-
stateRepositoryMock.
|
|
75
|
-
time: {
|
|
76
|
-
seconds: timeInSeconds,
|
|
77
|
-
},
|
|
78
|
-
});
|
|
74
|
+
stateRepositoryMock.fetchLatestPlatformBlockTime.returns(blockTime);
|
|
79
75
|
|
|
80
76
|
dpp = new DashPlatformProtocol({
|
|
81
77
|
stateRepository: stateRepositoryMock,
|